Systemkopplung via Web-Services

23.08.2007
Von Nikolai Bauer und Peter Mandl

3. Web-Services als zentraler Zugang zu Server-Funktionen

In einem dritten Projekt wurde ein Controlling-System auf Basis einer Client/Server-Architektur realisiert. Web-Services fungierten hier als Ersatz für einen klassischen RPC-Mechanismus (siehe Abbildung " Web-Service öffnet Server-Funktionen für beliebige Clients"). Die Clients der Anwendung greifen ausschließlich über Services auf die Server-Dienste zu. Die geplante Lösung sollte offen sein für beliebige Client-Techniken. Zunächst schrieb das Projektteam einen .NET-Client in der Programmiersprache C#. Die Server-Seite stützte sich auf J2EE/EJB 2.1 auf Basis des "Jboss Application Server". Die Web-Services wurden durch Apache Axis (JAX-RPC) ergänzt. Derzeit stellt das Anwenderunternehmen den Server auf EJB 3.0 und JAX-WS um.

RPC-Mechanismen wurden durch Web-Services ersetzt. Auf diese Weise sollten die Server-Funktionen der ursprünglichen Client/Server-Lösung von der Client-Technik unabhängig werden.
RPC-Mechanismen wurden durch Web-Services ersetzt. Auf diese Weise sollten die Server-Funktionen der ursprünglichen Client/Server-Lösung von der Client-Technik unabhängig werden.

Für die Server-Schnittstelle realisierten die Programmierer mehr als 100 Operationen in mehreren Web-Services. Probleme ergaben sich zunächst aufgrund von Inkompatibilitäten vor allem im Kodierungsstil bei der Serialisierung. Apache Axis nutzte standardmäßig einen RPC-Stil, Microsoft .NET dagegen einen Dokumentenstil (siehe auch Kasten "Nachrichtenformate …"). Vor allem traten bei komplexeren Datentypen, die als Parameter in Web-Service-Operationen dienten, anfänglich Schwierigkeiten auf. Erst durch Inkaufnahme gewisser Einschränkungen ließen sich die Probleme lösen: Man verzichtete beispielsweise auf Arrays aus komplexen Typen.

Wie die Praxis zeigt, erkauft man sich die Unabhängigkeit der Client-Technik von der Server-seitigen Implementierung mit einer etwas schlechteren Performance. Allerdings ist die Leistung für den Dialog-betrieb vertretbar. Auch hier kann es in Batch-orientierten Systemen zu Engpässen kommen.