Finding the Right SDK

The graphic shows available SDKs for OPC UA product development. Depending on the targeted platform and the requirements of your application different SDKs are available.

When Should I Use the High Performance SDK?

The High Performance SDK is a complete new development which was created with maximum optimization for speed and smalles memory consumption. If you plan to run on embedded devices or just want to use the most portable code, you should use the High Performance SDK. The HP SDK comes with inter process communication framework and has it own memory pools. The new internal architecture make is highly flexible when porting to new platforms. Pure C99 code makes it adoptable for almost all operating systems and CPU architectures. The HP SDK is proven to work on x86, ARM, MIPS using Linux, vxWorks, QNX, Segger mbedOS and Windows. Actively supported by Unified Automation are Linux and Windows on x86 and x64. Other ports are available on request.

Keep in mind: Specializend for embedded devices and maximum flexibility, the High Performance SDK has the fewest requirements in code size, RAM size and CPU power. It is written in pure AnsiC (C99) code, hence extremely flexible when porting to other operating systems (even bare metal). It comes with "no allocations at runtime" strategy, which makes it very fast even on PC-based platforms.

When Should I Use the ANSI C SDK?

If you plan to support embedded devices or just want to use portable code, you can use the ANSI C SDK or the HP SDK. The ANSI C SDK works asynchronously and single-threaded. Therefore no multi-threading is needed. ANSI C compilers are available for almost all operating systems and CPU architectures. The ANSI C version is proven to work on x86, ARM, MIPS using Linux, vxWorks, QNX, Euros, WinCE, Windows XP. Actively supported by Unified Automation are Linux and Windows on x86. The ANSI C SDK is used since many years in multiple UA server applications, especially in the PLC and controler market.

Keep in mind: The ANSI C SDK has the low requirements in code size, RAM size and CPU power. It uses the C-Stack for OPC UA protocol implementation. It cannot directly benefit from multi-core CPUs like new ARM CPUs, because it only uses one task/thread. This is often no disadvantage, but a desired feature. Especially on embedded systems, where OPC UA communication is just a small part of a bigger application. Example: a device could use one CPU core explicitly for the main task (e.g. a PLC program), and the second core can be use by another task like the OPC UA server.

When Should I Use the C++ SDK?

If you plan to support multiple operating systems, or if you need maximum performance, the C++ SDK is the correct choice. If your existing application is already written in C++, then our C++ SDK will seamelessly integrate. The C++ SDK works multi-threaded to benefit from modern multi-core CPUs and can be compiled for 32bit and 64bit CPUs. The code is known to work on x86 and ARM and can easily ported to other architectures.

Keep in mind: Even if you plan to support only one operating system like Windows at the moment, it’s no problem to support other operating systems later on. The only limitation is the requirement of a C++ compiler. Some embedded systems may not allow multi-threading or even may not have a C++ compiler. In this case the only solution is to use the ANSI C SDK or the High Performance SDK respectively.

When Should I Use the .NET SDK?

If the application you want to integrate 'OPC UA is written in .NET/C# and is targeted to MS Windows operating system, our .NET SDK is the right choice. GUI applications running on PC-based Windows platforms, especially OPC UA Client applications, are the perfect match for our .NET SDK. Visualization, HMI and SCADA type of applications on desktop and panel PC typically have both, Client for obtaining data and Server for providing information, integrated into one application.

Note: The .NET SDK requires at least .Net 3.5 SP1. It comes with assemblies for Framework 4.0 and 4.5 and 4.6.1. These will also run in applications made for .NET Framework 4.7 and 4.8. It does not work with older versions < 3.5. It does not run with .NET Compact Framework shipped with WinCE, and it is not tested on .NET Mono. The new universal .NET Standard 2.0 cross platform framework is supported by our .NET SDK since May 2019 (since version v3.0.0).

When Should I Use the Java SDK?

If you plan to support multiple platforms, including "native" Android development,  JAVA is a good choice. You can certainly develop faster, or more comfortable with JAVA and .NET, which known as more higher level environmants compared to C and C++. However, you need to keep the resource requirements for memory and CPU power in mind. The main advantage is that you don’t need to recompile your application for each platform. The JAVA program will run on each platform that brings the required JRE (JAVA Runtime Environment) the application was build for. We offer the Java SDK from our development partner ProsysOPC.