Kapitel 5: Web-Services 1 Kapitel 5 Web-Services 5.1 Web-Services Verwendung/Aufruf (Service Invocation) SOAP Beschreibung (Service Description) WSDL Repository/Verzeichnis (Service Discovery) UDDI 5.2 Workshop: Microsoft.NET Kurzer Überblick zu Microsoft.NET Web-Services mit.net
Grundsätzliche Überlegungen: 5.1 Web-Services Services (Server-Methoden) sollten sich über ein weit verbreitetes Protokoll ansprechen lassen, unabhängig davon, wie (in bzw. mit welcher Infrastruktur) die Server implementiert wurden, auf welcher Plattform sie ausgeführt werden, etc. Nachrichtenbasierte Aufrufe sollten auch synchron möglich sein Web-Services Schnittstellen von bestehenden Services werden via Web aufrufbar Voraussetzung Internet-Protokolle (HTTP, seltener SMTP) zum Transport von Nachrichten Spezifikation der Nachrichtenformate Festgelegte Übermittlung von Aufrufparametern bzw. des Aufrufergebnisses Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 5: Web-Services 2
Kapitel 5: Web-Services 3 Web-Services Übersicht ShowAvailability HTTP MakeReservation GetListOfStocks GetLastTradePrice Order www.fly-away.ch www.stockquoteserver.com Börsen- Info www.pizza23.ch Flugbuchungssystem Pizza- Express
Simple Object Access Protocol (SOAP) SOAP: Simple Object Access Protocol www.w3.org/tr/soap/ XML-basiertes Protokoll Gültige Version: SOAP 1.1 (Mai 2000), beim W3C (www.w3c.org) als Grundlage für eine SOAP/XML-Arbeitsgruppe eingereicht. Version 1.2 ist derzeit im Status Proposed Recommendation Hauptbeteiligte: IBM und Microsoft Aufgabe von SOAP Ermöglichen von unidirektionalem Informationsaustausch in dezentralisierter, verteilter Umgebung ohne gemeinsame Infrastruktur für verteilte Objektverwaltung Ziel Kapseln von RPC-Aufrufen (Einheitliche Repräsentation von RPC-Aufrufen und Aufrufparametern bzw. der Rückgabewerte) Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 5: Web-Services 4
Kapitel 5: Web-Services 5 SOAP Architektur SOAP Client Request Dokument GetLastTradePrice HTTP Auspacken des Request-Dokuments HTTP,... SOAP Server (XML-Dokument mit Methodenaufruf) Response- Dokument (XML-Dokument mit Ergebnis) Methodenaufruf www.stockquoteserver.com Börsen- Info
Kapitel 5: Web-Services 6 SOAP: Bestandteile Inhalt der SOAP-Spezifikation SOAP Envelope (Umschlag): Beschreibung des Nachrichteninhalts und wie dieser zu verarbeiten ist SOAP Encoding Rules: legt Typsystem fest, das die Spezifikation und Serialisierung von komplexen Datentypen erlaubt SOAP RPC: legt fest, wie der Methodenname und die Parameter aus den Nutzdaten des SOAP-Envelopes zu einem RPC-Aufruf zusammengebaut werden. Benötigt werden: URI des Zielobjektes Methodenname Signatur der Methode (optional) Methodenparameter
SOAP: Dokumentenstruktur Transport-spezifischer Umschlag (HTTP, SMTP) SOAP-Dokument <SOAP-ENV:Envelope> <SOAP-ENV:Header> (optional) Delivery Information <SOAP-ENV:Body> Nutzdaten (payload) <SOAP-ENV:Fault> (optional) -Fehlercodes- Vorgesehen für Zusatzinformationen, die für den eigentlichen Methodenaufruf nicht benötigt werden (z.b. Aufruf-ID, Bezahlung, Authentifizierung, etc.) Im Request-Dokument: Methodenaufruf und Aufrufparameter, im Response-Dokument: Rückgabewert(e) des Methodenaufrufs Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 5: Web-Services 7
SOAP mit HTTP Beispiel (Aufruf) POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getlasttradeprice xmlns:m="http://www.stockquoteserver.com/stockquote"> <symbol>nesn</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Objektverwaltung höherer Ordnung (OHO) SS 2003 Methodenname Aufrufparameter Kapitel 5: Web-Services 8
Kapitel 5: Web-Services 9 SOAP mit HTTP Beispiel (Rückgabe) HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:getlasttradepriceresponse xmlns:m="http://www.stockquoteserver.com/stockquote"> <Price>34.5</Price> </m:getlasttradepriceresponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Rückgabewert
Grenzen von SOAP SOAP legt nur die Syntax der Verpackung, d.h. der Übertragung eines Aufrufs fest Aber: die Schnittstellen eines Web Services müssen dazu bekannt sein Benötigt werden also Informationen über Den Ort eines Web Service Die angebotenen Methoden Die Schnittstelle des Methodenaufrufs Aufrufparameter: Typ, Anzahl, Reihenfolge Rückgabeparameter Art des Methodenaufrufs (Request/Response, etc.) Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 5: Web-Services 10
Kapitel 5: Web-Services 11 Web Service Description Language (WSDL) WSDL: Web Service Description Language www.w3.org.tr/wsdl/ XML-basierte Service-Beschreibung Gültige Version: WSDL 1.1 (Mai 2001), beim W3C eingereicht als Teil der Web Services Activity Group aktuelle Version: WSDL 1.2 (noch nicht freigegeben) Beteiligte: Ariba, IBM, Microsoft Ziel von WSDL Implementierungsunabhängige Beschreibung der Methoden von Web-Services (operations) bzw. deren Schnittstellen Beschreibung der möglichen Einbindungen (bindings) in Transportprotokolle (im wesentlichen SOAP) Unterstützung der Verwendung von Web Service-Aufrufen aus Anwendungen (Kommunikation von Anwendung zu Anwendung)
Kapitel 5: Web-Services 12 WSDL Architektur Client Anfrage nach Services des StockQuoteServers (XML-Dokument mit Methodenspezifikation) SOAP- Request Dokument HTTP,... GetLastTradePrice HTTP WSDL- Dokument www.stockquoteserver.com Börsen- Info WSDL Server SOAP Server
Inhalt eines WSDL-Dokuments WSDL: Bestandteile Abstrakter Teil Types: Datentyp-Definitionen (unter Verwendung eines Typsystems) Message: abstrakte, typisierte Definition der zu übertragenden Nachrichteninhalte Operation: abstrakte Definition von Operationen (Methoden) des Service Port Type: abstrakte Menge von Operationen Konkreter Teil Binding: konkrete Protokoll- und Datenformat-Spezifikation für einen Port Type (d.h. eine Menge von Operationen) Port: Kombination von binding und Netzwerk-Adresse Service: Menge zusammengehörender Ports Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 5: Web-Services 13
Kapitel 5: Web-Services 14 WSDL-Beispiel (1) <?xml version="1.0"?> <definitions name="stockquote" targetnamespace="http://www.stockquoteserver.com/stockquote.wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/... > <types> <schema targetnamespace="http://www.stockquoteserver.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/xmlschema"> <element name="tradepricerequest"> <complextype> WSDL-interne Bezeichnung für String symbol <all> <element name="symbol" type="string"/> </all> </complextype> </element> <element name="tradeprice"> <complextype> <all> <element name="price" type="float"/> </all> </complextype> </element> </schema> </types>
Kapitel 5: Web-Services 15 WSDL-Beispiel (2) <message name="getlasttradepriceinput"> <part name="body" element="xsd1:tradepricerequest"/> </message> <message name="getlasttradepriceoutput"> <part name="body" element="xsd1:tradeprice"/> </message> Zuordnung von Parametern zu Messages (Dokumenten) <porttype name="stockquoteporttype"> Methodenspezifikation (Request- und Response- <operation name="getlasttradeprice"> Dokumente) <input message="tns:getlasttradepriceinput"/> <output message="tns:getlasttradepriceoutput"/> </operation> </porttype>
Kapitel 5: Web-Services 16 WSDL-Beispiel (3) <binding name="stockquotesoapbinding" type="tns:stockquoteporttype"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getlasttradeprice"> <soap:operation SOAP-Anbindung für Methodenaufruf soapaction="http://www.stockquoteserver.com/getlasttradeprice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="stockquoteservice"> <documentation>the best stock quote server on the web</documentation> <port name="stockquoteport" binding="tns:stockquotebinding"> <soap:address location="http://www.stockquoteserver.com/stockquote"/> </port> </service> </definitions> Adresse des Service
Grenzen von WSDL WSDL gibt die komplette Syntax der Methoden eines Web Services preis Aber: die Semantik des Aufrufs ist nicht bekannt Benötigt werden also Informationen über Den Dienstanbieter (Ort, Reputation, etc.) Die Eigenschaften des aufzurufenden Service Preis, Funktionalität,... Transaktionsgarantien (!): ist der Service atomar, kann er wieder rückgängig gemacht werden, etc. Wo ist der Service bzw. dessen Beschreibung zu finden? Ist der Service gerade verfügbar? Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 5: Web-Services 17
Kapitel 5: Web-Services 18 UDDI UDDI: Universal Description, Discovery, and Integration www.uddi.org XML-basiertes Service-Repository Gültige Version: UDDI 3.0 (Juli 2002) Industriekonsortium mit über 15 Beteiligten (u.a. IBM, Microsoft, SAP) Ziel von UDDI: Spezifikation des Formats für die Beschreibung von Unternehmen und deren (Web) Services der API um auf diese Beschreibung zuzugreifen eines Netzes von Verzeichnissen (Repositories): wie muss das Repository implementiert werden, wie werden Daten innerhalb des Netzes von Repositories ausgetauscht, etc.
Kapitel 5: Web-Services 19 UDDI Architektur & Verwendung Client Anfrage nach Server für: Online-Aktienkurse www.stockquoteserver.com www.nyse.com www.nyse.com HTTP UDDI-Repository Austausch UDDI-Repository Service registrieren WSDL Server SOAP Server www.stockquoteserver.com
Kapitel 5: Web-Services 20 UDDI Registrierung Bestandteile der UDDI Service Registry White Pages Allgemeine Kontakt-Informationen (Adresse, Ansprechpartner, Telefonnummer des Dienstanbieters, etc.) Yellow Pages Beschreibung des Geschäftsfeldes (anhand vorgegebener Taxonomien) Green Pages Detaillierte technische Beschreibung der Web Services
Kapitel 5: Web-Services 21 UDDI: Dokumentenstruktur businessentity (Service Provider) BusinessServices (Service) bindingtemplate (Technische Beschreibung des Zugriffs) tmodel (Implementierungsunabhängig) http://www.stockquoteserver.com/stockquote.wsdl White Pages - Information zum Dienstanbieter Beschreibung der Semantik des Services (Kategorie, etc.) z.b. Art des Protokolls (Mail, Fax, HTTP, etc.) Kategorie & Referenz zu detaillierter Service- Beschreibung (WSDL) WSDL
Kapitel 5: Web-Services 22 Grenzen der Web-Services Web-Services sind einzelne und vor allem unabhängige Funktionsaufrufe Komplexe Anwendungen mit mehrerer Web-Service-Aufrufen müssen vom Client selbst definiert (und implementiert) werden Unterstützung der Modellierung von Web-Workflows : WSFL (Web Services Flow Language), legt aber keine Ausführungsumgebung fest Transaktionssemantik Web Services sind unabhängig. Ein Transaktionskontext, der mehrere Web Service-Aufrufe umspannt, ist daher nicht möglich Bei Web Service-übergreifenden Anwendungen bleibt die Atomarität dem Benutzer/Programmierer überlassen (falls Web Services eine Kompensation anbieten) Voraussetzung ist die Atomarität eines einziges Services (dies würde dann auch zu den Service-Eigenschaften gehören)