Verteilte Anwendungen Teil 10: UDDI und WSDL Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 06.10.16 1 Einzelaspekte der Web Services • • • • Schnittstelle des Service beschreiben Service zentral zugreifbar machen Service suchen bzw. finden Service zur Laufzeit aufrufen Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 2 UDDI - Universal Description Discovery Integration • UDDI = Universal Description, Discovery and Integration of web services • UDDI Version 1, September 2000 (nicht relevant) UDDI Version 2, Juni 2001 UDDI Version 3, Juli 2002 • Weiterentwicklung von OASIS (www.oasis-open.org) OASIS = Organization for the Advancement of Structured Information Standards • http://www.uddi.org http://uddi.org/about.html • Spezifikation: http://www.oasis-open.org/comittees/uddi-spec/ Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 3 Zweck • • • • • Globaler Verzeichnisdienst für Web Services Verzeichnisdienst für Meta-Daten Beantwortet dynamische Anfragen vor Serviceaufruf Logisch zentralisierter, physisch verteilter Dienst Öffentliche UDDI-Server bei HP, IBM, Microsoft, SAP etc. Öffentliche Verzeichnisse (Beispiele): http://uddi.microsoft.com http://www-3.ibm.com/software/solutions/webservices/uddi http://uddi.sap.com http://www.ntt.com/uddi Siehe auch: http://www.uddi.org/faqs.html Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 4 Begriffe und Organisation I • Operator Nodes = UDDI-Operatoren = Anbieter öffentlicher Verzeichnisse • GUID = Globally Unique Identifier = Bezeichnung der Informationen aus den Verzeichnisse der UDDI-Operatoren • UBR = Universal Business Registry = Gruppe der UDDIOperatoren • Registrare = Organisationen zum koordinierten Eintragen von Informationen, z. B. über Web-Oberflächen, im Sinne eines Mittlers • Die dritte Gruppe bilden die privaten UDDI-Verzeichnisse • Publish = Eintragen in eine Verzeichnis • Inquiry = Durchsuchen eines Verzeichnisses Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 5 Begriffe und Organisation II • Business Entity = den Dienst realisierende Geschäftseinheit • Publisher Assertions = Verbindungen zwischen Geschäftseinheiten • Taxonomie = System zur Kategorisierung - hier ist nicht das System des Semantic Web gemeint • tModel = taxonomy model = Zusammenfassung von Taxonomien sowie weiteren Informationen zur Suche Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 6 Struktur des Inhalts • White Pages (<BusinessEntity>) – Firmenname, Adressen – Kontaktinformationen, Web-Sites etc. • Yellow Pages (<BusinessService>) – Diensttyp, Adresse, Produkte – Wirtschaftszweig • Green Pages (<BindingTemplate>) – Technische Informationen – Verweis zur WSDL-Beschreibung – Beschreibung als Text Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 7 Aufbau • <businessEntity> – Firma/Person, die Dienste anbietet • <businessService> – Klassifizierung des Dienstes • <bindingTemplate> – Art, einen Dienst zu benutzen – Hinweise auf Implementierung eines Dienstes • <tModel> – Beschreibung eines Dienstes – Dient zum Auffinden von Diensten (Taxonomien) – Verweis auf WSDL-Dokument Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 8 Probleme • Vertrauen – – – – Betrug ist nicht ausgeschlossen (siehe eBay) Qualität der Leistung Termingerechte Erbringung Große Transaktionen benötigen einen Vertrag • Authentifizierung Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 9 UDDI-API • Es werden zwei APIs definiert: – Publishing API Anbieter können über dieses API ihren Web Service veröffentlichen. – Inquiry API: Anwender können über dieses API nach einem Web Services suchen. • Publishing API definiert 15 Operationen, u. a. – save_binding – save_business – save_service – ... • Inquiry API definiert 25 Operationen, u. a. – find_binding – find_business – find_relatedBusinesses – ... Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 10 WSDL - Web Service Description Language • Beschreibungssprache für Web Services in XML genauer: für die Schnittstelle zu den Web Services • Version 1.1 vom März 2001 Version 1.2 vom März 2003 • Entspricht der IDL (Interface Description Language) von CORBA • http://www.w3.org/TR/wsdl Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 11 Zusammenhänge I Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 12 Zusammenhänge II 1. Anfrage an UDDI-Server Dieser liefert die URL von der UDDI-Registratur 2. Abfrage der WSDL-Beschreibung bei der UDDI-Registratur 3. WSDL-Compiler generiert beim Client einen Stub 4. Der Client sendet über den Stub einen SOAP-Request. 5. Der Dienst wird erbracht. 6. Der Client erhält den entsprechenden SOAP-Response. Dieser Ablauf ist vereinfacht, da ein Aushandeln oder Prüfen nicht stattfindet. Auch wurden sämtliche Authentifizierungen etc. weggelassen. Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 13 Aufbau der WSDL-Beschreibung I • • • • XML Schema Definition der Typen - XML Schema Typen empfohlen Definition der Nachrichten auf der Grundlage der Typen Schnittstellen des Dienstes Protokollbindungen, u.a. SOAP, HTTP GET/POST (ohne SOAP), SMTP/MIME Typische Namensräume in WSDL-Dateien: targetNamespace="User-URI" xmlns:tns="User-URI" xmlns:xsd="http://www.w3.org/2001/XMLSchema xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 14 Aufbau der WSDL-Beschreibung II <definitions name=Name targetNamespace=URL> <import namespace=URL/> <documentation ..... /> <types> ... </types> <message name=Name> ... </message> Was? <portType name=NameP> ... </portType> Was? <binding name=NameP type=Typ> ... </binding> Wie? <service name=Name> ... </service> Wo? </definitions> Schnittstellenspezifikation Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 15 Aufbau der WSDL-Beschreibung III Element Erläuterung definitions Wurzelelement types Datentypen der Informationen in den SOAP-Nachrichten message Beschreibung einer Nachricht part Parameter einer Nachricht portType Angabe der Operation an einem Port input Empfangener Nachrichtenteil output Sendender Nachrichtenteil binding Protokoll für Zugriff auf Port service Ort der Service-Erbringung Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 16 Aufbau der WSDL-Beschreibung IV <definitions name=Name targetNamespace=URL> <import namespace=URL/> <documentation ..... /> <types> ... </types> Definition eigener Typen <message name=Name> <part name=Name type=Typ/> <part name=Name type=Typ/> </message> <portType name=NameP> <operation name=OP> <input name=... message=.../> <output name=... message=.../> </operation> </portType> Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 17 Aufbau der WSDL-Beschreibung V <binding name=NameP type=Typ> <SOAP:binding transport="HTTP-URL" style=STIL> .... </binding> <service name=NameP> <port name=NameP binding=BIND> <SOAP:address location=URL /> </port> </service> </definitions> Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 18 Beispiel I - Typteil <?xml version="1.0" ?> <definitions name="TB:TelefonBuch" targetNamespace="TB:TelefonBuch" ...> <types> <xsd:schema targetNamespace="TB:TelefonBuch" ...> <xsd:complexType name="Eintrag"> <xsd:all> <xsd:element name="Nummer" type="xsd:int"/> <xsd:element name="Adresse" type="xsd:string"/> </xsd:all> </xsd:complexType> </xsd:schema> </types> • Definitions definiert Namen und Namensraum des Services sowie alle anderen Namensräume • Types: Typ der Austausch-Struktur Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 19 Beispiel II - Message und Port <message name="empty"/> <message name="AddEintragRequest"> <part name="Name" type="xsd:string"/> <part name="Eintrag" type="TB:Eintrag"/> </message> <portType name="TelefonBuch"> <operation name="addEintrag"> <input message="TB:AddEintragRequest"/> <output message="TB:empty"/> </operation> </portType> Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 20 Bemerkungen I - Message • Message definiert den Aufbau der Nachrichten. • Sind mehrere Nachrichten erforderlich, z.B. Eingabeparameter und Rückgabewerte, so werden mehrere Nachrichten definiert. • Eine Nachricht kann aus Teilelementen bestehen: den Parts. Parts definieren Name-Wert Paar zu den Parametern einer Nachricht. Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 21 Bemerkungen II - PortType • PortType beschreibt die Methoden des Web Service. • Dazu werden die oben definierten Nachrichten verwendet. • WSDL unterstützt vier Interaktionstypen: – – – – Oneway (input) Request/Response (input, output/fault) - aus der Sicht des Clients Solicit/Response (output, input/fault) - aus der Sicht des Servers Notification (output) Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 22 Beispiel III - Binding <binding name="TelefonBuchSOAPBinding" type="TB:TelefonBuch"> <soap:binding style="rpc" transport=URI/> <operation name="addEintrag"> <soap:operation soapAction=""/> <input> <soap:body use="encoded" namespace="TB:TelefonBuch" encodingStyle=URI"/> </input> .... </operation> .... </binding> • <binding> definiert Nachrichtenformate und das Transportprotokoll. Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 23 Beispiel IV - Service <service name="TelefonBuchService"> <port name="TelefonBuch" binding="tns:TelefonBuchSOAPBinding"> <soap:address location=URI/> </port> </service> </definitions> • Service: Angebot samt Namen sowie Angabe des Ortes (URI) • Port: Dienstendpunkt selbst Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 24 Weitere Elemente • <documentation> – Lesbare Beschreibung des Web Services • <import> – Importiert ein anderes WSDL-Dokument oder XML-Schema Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 25 Grenzen und Probleme • WSDL beschreibt nur die Syntax, nicht die Semantik (außer in <documentation>) • WSDL kann nicht mehrere Web Services zusammenfassen • WSDL kann keine komplexeren Interaktionen als RequestResponse (und Kombinationen davon) beschreiben, also keine "echten" Protokolle. Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 26 Nach dieser Anstrengung etwas Entspannung... Verteilte Anwendungen – WS 2016/17 - Teil 10/Web-Services II 27