next up previous contents
Next: Parsing OPC XML-DA Compliant Up: Implementation of an OPC Previous: Implementation of an OPC   Contents

Choosing an Appropriate SOAP Framework

As denoted above, various SOAP frameworks for various programming languages are available. Moreover, a framework/library should be used that eases the development of a server that can handle concurrent requests. It is obvious that the SOAP framework and the server library have to be available for the same programming language, hence the decision is more focused on programming languages than on SOAP frameworks.

The programming language should provide the following key features:

Easy and rapid development:
The programming language and their libraries/frameworks should enable a rapid development.
SOAP framework:
[OPCXMLDA] is heavily based on SOAP, therefore an appropriate SOAP framework should be available.
Server framework:
The OPC XML-DA server should be able to handle concurrent requests, therefore the programming language should provide libraries that enable and ease the implementation of this issue.
TCP/IP and HTTP libraries:
The language should also provide libraries that implement these common Internet protocols to establish communication with the ESD server and to transport SOAP messages via HTTP.
Compatibility:
The XML-DA server should be implemented on the Linux operating system, hence the language/framework has to be available for Linux. Moreover, the memory footprint and CPU load should be low due to limitations of the IGUANA gateway hardware.
Free availability:
The language/framework should be available at no cost. Open source solution should be favored.

Common programming languages would be C/C++, Java, .Net, Python and Perl. Each of them has several advantages/disadvantages as regards to the requirements above:

C/C++:
C/C++ is most often used for implementing OPC compliant servers, as the compiled code has low memory requirements and is very efficient. A very mature SOAP framework called ``gSOAP'' is freely available, moreover, there are various libraries for multi-threading, therefore development of a server that handles concurrent requests will be possible. C/C++ and all libraries are all available for Linux.

The disadvantage of C/C++ is the complicated and error-prone code, which leads to long development times, hence much effort would have to be put into programming aspects instead of analyzing the efficiency and suitability of SOAP.

Java:
Although Java provides mature SOAP frameworks and has a relatively short development time, Java-based applications tend to have high hardware requirements, especially a huge memory footprint which may exceed the capabilities of the IGUANA gateway hardware.

.Net:
This framework is basically available for Microsoft-based systems. As OPC-based software is most often targeted to the Microsoft Windows platform, many newer OPC frameworks are based on .Net. The IGUANA gateway is Linux-based, therefore Microsoft .Net cannot be used128.

Python:
Python is a scripting language, is freely available and has a huge collection of libraries. A SOAP framework for Python called ``Zolera Soap Infrastructure'' (ZSI) is also available. For server development, a library called ``Twisted'' is available which supports the easy and rapid development of servers. Twisted offers various protocols, such as HTTP and raw TCP/IP and solves concurrency issues with an event-driven design.

Python code is interpreted and hence has a higher memory footprint than C/C++. Therefore it is uncertain whether a Python-based OPC server would fit on the IGUANA gateway hardware. Another disadvantage is that Python's SOAP framework is quite new and does not seem to be very mature.

Java and .Net do not seem to fit the requirements very well, therefore a decision between C/C++ and Python has to be made. In case of a commercial development, C/C++ would be the optimal choice due to its efficient and small code. However, for this thesis, which favours research and proof of concept over efficiency, Python may be the better option. It will also be interesting to examine whether and how Python will fit on embedded hardware, such as the IGUANA gateway.

At first, the specification [OPCXMLDA] was examined once again, and one simple request was tested with the Python SOAP framework (ZSI). After some considerations, it was obvious that a modular design, as depicted in figure 59 would be most appropriate.

Figure 59: Modular design of ESD OPC Server
\begin{figure}\centering
\includegraphics[scale=0.7]{graphics/devel-modular.eps}\end{figure}


next up previous contents
Next: Parsing OPC XML-DA Compliant Up: Implementation of an OPC Previous: Implementation of an OPC   Contents
Hermann Himmelbauer 2006-09-27