XML-RPC

Über XML-RPC (Extensible Markup Language Remote Procedure Call) kann Software auf verschiedenen Betriebssystemen Prozeduraufrufe über das Internet machen. XML-RPC verwendet HTTP für Transport und XML für die Verschlüsselung. Es sendet ein Prozeduraufruf an einen abgesetzten Server über HTTP. Der Aufruf ist ein XML-Dokument und es erhält die Antwort als XML.

XML-RPC ist ein Protokoll für Web-Services, ähnlich wie SOAP aber viel einfacher. Es ist leicht zu verwenden und schnell. Es können Datenstrukturen leicht übertragen und zurückgegeben werden. Siehe http://www.xmlrpc.org.

Die WinCC OA CtrlXmlRpc ist eine CONTROL-Erweiterung, die XmlRpc-Funktionen enthält. Daher muss die CONTROL-Erweiterung im Code oder in der config.level-Datei geladen werden (siehe Kapitel Laden einer Control-Library).

Um einen XmlRpc-Server zu betreiben, muss der HTTP-Server gestartet werden und ein Handler installiert werden. Die Default URL für XmlRpc ist "/RPC2". Siehe Kapitel xmlrpcHandler() und httpConnect().

Zudem muss der Client gestartet werden und eine Verbindung zum Server aufgebaut werden (siehe Funktionen am Ende dieses Kapitels). XML-RPC Clients unterstützen eine Authentifizierung über Basic oder Negotiate, falls dies der Server erfordert. Der Benutzername und das Passwort für die Basic Authentifizierung sind entweder im Hostparameter vorgegeben (z.B. "root:@localhost" oder "http://root:@localhost") oder werden von den Config-Einträgen "userName" und "password" herangezogen.

Es kann auch eine sichere HTTPS-Verbindung zum Server aufgebaut werden. Unter Windows ist die OpenSSL-Installation für die HTTPS-Verbindung erforderlich. OpenSSL ist eine Open Source-Implementierung der SSL- und TLS-Protokolle und implementiert kryptographische Funktionen. Siehe http://www.openssl.org/source/

Eine komprimierte Übertragung ist über die WinCC OA GZip-Funktionen möglich. Um die GZip-Funktionen zu verwenden, muss CtrlZlib geladen werden. Die ist eine Shared-Library mit Funktionen für Datenkomprimierung. Die basiert auf libz (gzip, gunzip).

Mehrere Standard XML-RPC-Methoden stehen zusätzlich in der xmlrpcHandlerCommon.ctl unter wincc_oa_path /scripts/libs zur Verfügung. Mit diesen Methoden können z.B. Datenpunkte im XML-RPC Handler abgefragt werden (siehe Abbildungen unterhalb).

Abbildung 1. XML-RPC Übersicht

Abbildung 2. XML-RPC Übertragung (detailliert)

Für mehr Information über die einzelnen XML-RPC Funktionen, siehe die einzelnen Kapitel:

xmlrpcHandler()

xmlrpcConnectToServer()

xmlrpcClient()

xmlrpcCall()

xmlrpcDecodeRequest()

xmlrpcEncodeResponse()

xmlrpcCloseServer()

xmlrpcEncodeValue()

xmlrpcDecodeValue()

xmlrpcSetGzipLimit()

Für mehr Information über die einzelnen Zip-Funktionen für Komprimierung, siehe die einzelnen Kapitel:

gzip()

gunzip()

gzread()

gzwrite()