The OPC Foundation provides the communication stack for its members. Developers of OPC UA products can choose between three implementations: C, .NET, or Java. All stacks provide the same functionality and, within the limits of the programming languages, the APIs can be applied similarily. The OPC Foundation maintains these implementations and integrates innovations if necessary. For members, the source code is available as well. All three implementations are tested against each other to ensure compatibility of protocol implementations.
ANSI C Implementation
The ANSI C implementation has been developed for being suitable for the broadest range of applications. The code complies with the C99 standard, is platform independent and supported by almost all compilers. During designing, every care was taken to insure that the C stack works with fixed memory configurations. The stack can be compiled in singlethreaded mode and is therefore suitable for embedded devices being short on resources and especially where the consumption of resources is predictable. But the thread can also be compiled in multithreaded mode and is then suitable for PC-based applications using multiple cores. The C stack needs a crypto library to map OPC UA security features. For this purpose, currently OpenSSL is used.
The .Net implementation is no longer based on the ANSI C stack. The first implementation (.NET wrapper) has now been complete replaced. I.e. instead of using the socket handling and message chunking of the ANSI C stack the AsyncIO interface of the Microsoft .NET framework is used. The de-serialization is done directly in .NET and therefore is converted directly to .NET structures and objects. The SOAP implementation uses the Microsoft SOAP toolkit and WS Secure Conversation (at least .NET Framework 3.5 SP1 is necessary). Thus the .NET stack is continously built on technology from Microsoft and completely written in managed code.
The Java stack implements the binary protocol and is completely written in Java. At least Java Runtime Environment 1.6 is required and Sun/Oracle is recommended. To implement the security features of OPC UA additional libraries are necessary (Bouncy Castle).
Additional implementations in other languages can be imagined but fail due to the lack of sufficient SOAP toolkits to generate the complex security mechanisms of WS Secure Conversation. A manual implementation is possible but incomparably more complex.