Web-Services beschreiben

Objectives

After completing this lesson, you will be able to:
  • Das Web-Service-Paradigma erläutern
  • Führen Sie die Schritte zum Anlegen eines Web-Service mithilfe des Inside-Out-Ansatzes und der synchronen Kommunikation auf.

Web-Services

Ein Web-Service ist eine unabhängige, modulare und selbstbeschreibende Anwendungsfunktion oder ein eigenständiger Anwendungsservice. Diese Anwendungsfunktion kann – basierend auf XML-Standards – beschrieben, bereitgestellt, gesucht, transformiert oder über Standard-Internetprotokolle aufgerufen werden.

Jeder Web-Service kapselt daher eine Funktion, die z.B. verwendet wird, um eine Preisanfrage an einen Anbieter weiterzuleiten, die Verfügbarkeit einer Position in einem Retail-System zu prüfen, eine Telefonnummer zu lokalisieren oder Kreditkartenprüfungen durchzuführen, Währungen umzurechnen oder Abrechnungsfunktionen auszuführen.

Web-Service-Paradigma

Der Anbieter eines Service wird als Service Provider bezeichnet. Wenn es sich bei einem Service um einen Web-Service handelt, hat der Service-Provider eine entsprechende XML-basierte Beschreibung, bei der es sich um ein WSDL-Dokument (Web Services Description Language) handelt. Für die Implementierung des Web-Service kann im Prinzip jede Programmiersprache verwendet werden. Der Service Provider kann im Sinne einer Client/Server-Beziehung als Server gelten.

Beim Publizieren eines Service überträgt der Service-Provider Informationen über sich selbst und eine Beschreibung des Services, den er anbietet, an die Service-Registrierung. Eine Service Registry ist eine Art von gelben Seiten für Web-Services. Sie stellt unter anderem Informationen über den Aufruf des Web-Service zur Verfügung. Die Service Registry liefert daher nur eine Beschreibung des Web-Services. Diese Beschreibung bildet eine Abstraktionsschicht und ist unabhängig von der jeweiligen Implementierung. Der Web-Service als Dienst wird stets vom Service Provider gehostet.

Der Nutzer eines Web-Service wird als Serviceanforderer bezeichnet. Ein Serviceanforderer kann z.B. jemand sein, der einen Web-Service über einen Web-Browser findet und dann den Service verwendet. Meist jedoch stellt der Serviceanforderer eine Anwendung dar, die auf den Web-Service zugreift. Die Anwendung kann den Dienst bei Bedarf auch dynamisch binden, d.h. die Anwendung kann dynamisch zur Laufzeit einen sogenannten Web-Service-Client-Proxy generieren, über den der Zugriff auf den Web-Service erfolgt. Die hierzu benötigten Informationen erhält die Anwendung aus der Servicebeschreibung.

Diese Informationen werden dann in der Service Registry gespeichert. Wenn die Anwendung jedoch den Provider und die Aufrufdetails kennt, kann sie den Web-Service verwenden, ohne auf die Service-Registry zugreifen zu müssen. In einer Client/Server-Beziehung stellt der Serviceanforderer den Client der Anwendung dar.

Standards für Web-Services

Web-Services können in beliebigen Implementierungen vorliegen. Sollen Web-Services von beliebigen Anwendungen aufgerufen werden, dann benötigt man für diese eine standardisierte Beschreibung. Diese Anforderung wird von der WSDL am besten erfüllt. Eine Beschreibung von Web-Services in WSDL allein reicht allerdings nicht aus. Um den passenden Geschäftspartner und dessen Serviceangebot zu finden, bedarf es eines Firmenverzeichnisses, mit dessen Hilfe die benötigten Services gefunden werden können.

Aber auch der Anbieter von Web-Services muss in der Lage sein, sein Angebot möglichst einfach öffentlich zur Verfügung zu stellen. Hierfür bietet die Universal Description, Discovery and Integration (UDDI) eine Lösung. Weitere Informationen finden Sie unter http://uddi.xml.org.

Die folgende Liste erläutert einige Standards, die mit Web-Services verwendet werden:

  • UDDI (Universal Description, Discovery and Integration) Registry: Mit der UDDI-Registry und der UDDI-Spezifikation stellt UDDI die notwendigen Werkzeuge zur Verfügung, um Dienste öffentlich zu machen. Die Spezifikation beschreibt dabei detailliert, wie die Suche und Registrierung von Services erfolgen soll. Die UDDI-Registry enthält eine Liste der registrierten Web-Services im WSDL-Format. Die UDDI-Registry speichert keine Dokumente oder Spezifikationen, sondern verweist nur auf diese.

  • SOAP (ursprünglich Simple Object Access Protocol): Für den Aufruf von Web-Services, die auf Internet-Technologien basieren, ist eine geeignete Protokolldefinition erforderlich. SOAP hat einen einfachen Standard geschaffen, der den Zugriff auf Web-Services in dezentralen, verteilten Landschaften ermöglicht. SOAP spezifiziert ein Paket von XML-Dokumenten für den Transport über Internet-Protokolle wie HTTP(S), SMTP oder FTP. SOAP definiert einen sogenannten Envelope. In diesem Umschlag finden Sie die tatsächliche XML-basierte Nachricht mit Header und Body sowie weitere Informationen über die weitere Verarbeitung der Nachricht.

  • WSDL (Web Service Description Language): WSDL ist eine XML-basierte Beschreibungssprache für Web-Services. Die WSDL-Service-Definition beinhaltet die Beschreibung verteilter Systeme und bietet Anleitungen zur Automatisierung des Datenaustauschs zwischen Anwendungen. Die Web Service Description Language wird verwendet, um Web-Services oder elektronische Services im XML-Format zu beschreiben. Ein Service ist definiert als eine Sammlung von Endpunkten (Ports) und den Nachrichten, mit denen sie arbeiten. Mithilfe von WSDL kann ein Service-Provider die Anforderungen und Funktionen seines Web-Service beschreiben, sodass ein potenzieller Kunde sie versteht und ordnungsgemäß mit dem Service interagiert.

Anlegen eines Web-Service mithilfe des Inside-Out-Ansatzes und synchroner Kommunikation

Es gibt zwei verschiedene Entwicklungsansätze für die Entwicklung von ABAP-Web-Services: Inside-Out und Outside-In.

  • Mit dem Inside-Out-Ansatz werden unabhängige Funktionsbausteine, die als RFC-fähige Funktionsbausteine, als Funktionsgruppen oder als BAPIs implementiert wurden, als Web-Service bereitgestellt. Der Web-Service kann über Standardprotokolle im gesamten Internet verwendet und ganz einfach zu jeder Entwicklungsumgebung hinzugefügt werden.

  • Beim Outside-In-Ansatz beginnt die Entwicklung der Service-Schnittstellen im plattformunabhängigen Format, meistens in XML. Mit dem Enterprise Services Builder (Teil des Object Navigator, Transaktion SE80) bietet SAP ein Werkzeug an, das die plattformunabhängige Entwicklung von Service-Interfaces unterstützt. Verbundene Anwendungssysteme können diese Schnittstellen lesen. Mithilfe der ABAP-Proxy-Technologie kann ein Entwickler ein ABAP-Objekt anlegen, das aus einer oder mehreren ABAP-Methoden besteht. Da die Entwicklung außerhalb des Anwendungssystems beginnt, wird dieser Ansatz als Outside-In bezeichnet.

Der Schwerpunkt dieser Lektion liegt auf dem Inside-Out-Ansatz.

Anlegen eines Web-Service

Werkzeuge

Für die Entwicklung von Web-Services bei SAP werden einige Werkzeuge benötigt:

  • Für die Implementierung der Funktionen auf der Provider-Seite und den Aufruf dieser Funktionen auf Consumer-Seite benötigen Sie die ABAP Workbench für die Entwicklung.

  • Für die Konfiguration des Web-Service auf Provider- und Consumer-Seite bietet SAP die Transaktion SOAMANAGER an.

  • Zum Testen von Web-Services bietet SAP den Web Service Navigator (WSNavigator) an, bei dem es sich um einen Web-Service-Client handelt, der in Java implementiert ist.

Für die Entwicklung von Web-Services bietet SAP die Transaktion SOAMANAGER im AS-ABAP-basierten Backend-System an, mit der Sie Web-Services basierend auf der Proxy-Technologie konfigurieren können. SOAMANAGER eignet sich für die komplette Konfiguration von Serviceanbieter- und Consumer-Proxys für ein lokales System.

Die Registerkarte Service-Administration (siehe Abbildung „„SOAMANAGER – Einstieg"") bietet Funktionen zum Einrichten der Konfiguration zur Unterstützung von Geschäftsprozessen mit Web-Services. Diese Funktion ist nur für Business-Administratoren gedacht, die Geschäftsprozesse systemübergreifend in einer Systemlandschaft verwalten.

Weitere Informationen

Weitere Informationen zu ABAP-Web-Services finden Sie in der Online-Dokumentation für SAP S/4HANA (Product Assistance), z.B.: Bereich Enterprise TechnologyABAP PlatformDeveloping on the ABAP PlatformDevelopment Concepts and ToolsApplication Development on AS ABAPABAP Development Tools – EclipseSAP (On Premise) – ABAP Web Services.