OPC UA Book

The first OPC Unified Architecture Book, written by Wolfgang Mahnke, Stefan-Helmut Leitner and Matthias Damm one of the co-founders of ascolab.

OPC UA APIs

For UA developers it will be possible to code against a C API, a comfortable C++ API or a .NET API, directly. All APIs support the same functionality.

The communication stack and APIs are provided by the OPC Foundation.

.Net Implementation

The .Net implementation uses only the lower part of the ANSI C stack and implements the rest of the stack natively in .Net. That means only the handling of the socket and the Message-Chunking is integrated in the ANSI C stack. The de-serialization is done directly in .Net and therefore gets converted directly into .Net structures and objects. This leads to better performance than de-serializing into a C structure first and then copying the data to a .Net structure afterwards.

JAVA Implementation

Various stacks for JAVA are already in development. But similar to .Net there are principally 3 versions. Currently it is hard to determine which one will be the fastest.

1. The currently fastest variant (in terms of engineering time) is to make use of the complete ANSI C stack and encapsulate it via JNI.

  • Disadvantage: loss of simple JAVA portability. Although the stack can be ported to different operating systems, it needs to get compiled for those individually
  • Disadvantage: the data must be copied at the JNI boundary.
  • Advantage: uses of the performance of C during de-serialization.
2. The code gets based on the network layer directly (similar to the current .Net implementation) and de-serialization is done in JAVA.
  • Advantage: saving one data copy execution
  • Disadvantage: still depending on the C stack.
3. Complete implementation in JAVA
  • Advantage: best portability option
  • Disadvantage: it takes the most engineering effort to implement
Alternatively, there is the simple variant to only support the Web service protocol. For that a SOAP Toolkit, which supports WS Security, is needed.