Unified Automation OPC UA SDK API Reference.

Introduction

The UA SDK is a C++ library that supports you in writing portable C++ OPC UA Servers and Clients. The UA SDK actually consists of two SDKs, a Server SDK and a Client SDK. Both use the same UA Base Library which does all the C++ encapsulation of the raw ANSI C types that are defined in the OPC UA Communication Stack by the OPC Foundation (http://www.opcfoundation.org).

UA SDK Architecture Overview
sdk_architecture_640x508.png

Binary SDK

The SDKs are available as binary versions for Windows and Linux. On Windows Visual Studio 2005 SP1 and Visual Studio 2008 are supported. On Linux GCC >= 4.1 is supported.

Source SDK.

The SDKs are available also as source versions. This means all sources of the components are included.
The Source SDK is the right solution for you if you plan to port your application to new operating systems (e.g. embedded systems), if you want to compile the libraries optimized for you CPU for maximum performance or if you just want to have full control over your complete application.
If you compile the libraries yourself you can choose to build static libraries or dynamic libraries. Using static libraries you can create a single binary that includes all dependencies, whereas with dynamic libraries you have more flexibility in updating single parts of your software (e.g. update the uastack to a newer version without recompiling your whole software).

Portability

Portability is guaranted by a concept of portability layers. The rest of the code is generic code that is independent of the operating system and can be reused without any changes. The UA Communication Stack has a portability layer that encapsulates already the most important operating system calls like Sockets, Semaphores, Mutexes, Threads, etc. The Ua Base Library is built on top of this UA Stack and does not need any further portability layer. The same applies for the software layers built on top of the UA Base Library.
The additional base modules UA PKI Library and UA XML Library are further abstraction layers that encapsulate special software components. We use the Open Source projects OpenSSL and LibXML2 to implement that functionality, because it's good software, it's ported already to several operating systems and they don't have restrictive licenses like the GPL. But if your company polices don't allow to use any Open Source for whatever reason it's possible to change this without a need to change anything else in the upper layers of the SDK or your application. Aside from simplifying the usage of this libraries this was main reason why we encapsulated this functionality with our own interface and don't use the Open Source code directly in our SDKs.

This manual provides a class reference and general introductions in the following sections: