WSDL. Heutige Vorlesung. Wozu WSDL? Wie wird WSDL verwendet? Language. Services. Description. Web. Abstrakte vs. konkrete Syntax

Please download to get full document.

View again

of 11
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Published
Heutige Vorlesung WSDL Prinzipieller Aufbau von WSDL-Beschreibungen Beschreibung von Protokoll-Bindungen in WSDL Vor- und Nachteile von WSDL Lernziel Google-WSDL lesen und erweitern können Klaus Schild,
Heutige Vorlesung WSDL Prinzipieller Aufbau von WSDL-Beschreibungen Beschreibung von Protokoll-Bindungen in WSDL Vor- und Nachteile von WSDL Lernziel Google-WSDL lesen und erweitern können Klaus Schild, Klaus Schild, Wozu WSDL? Wie wird WSDL verwendet? Nachfrager Dienst abrufen Schnittstelle Anbieter Dienst publizieren Nachfrager Dienst abrufen Schnittstelle Anbieter Dienst publizieren Client möchte bestimmten Web-Dienst abrufen Client benötigt hierfür Beschreibung der Schnittstelle: Struktur des Aufrufes: Name, Eingangsparameter, Ergebnis Protokoll und Adresse ähnlich wie Java-IDL, jedoch unabhängig von Plattformen, Programmiersprachen und Protokollen aus WSDL-Beschreibung können automatisch Stubs generiert werden Stubs abstrahieren von WSDL, SOAP und Protokoll erleichtert Einbindung des Dienstes zur Entwicklungszeit erheblich theoretisch damit auch dynamische Einbindung zur Laufzeit möglich Klaus Schild, Klaus Schild, Web Services Description Language Abstrakte vs. konkrete Syntax Web-Dienst en dogooglesearch SOAP-Anfrage SOAP-Antwort Web-Adresse /beta2 XML-Standard beschreibt Netzwerkdienste als Kommunikationsendpunkte (Ports), die bestimmte Nachrichten austauschen nicht auf SOAP-Nachrichten beschränkt aktuelle Version 1.1 (2001) kein offizieller W3C-Standard, sondern W3C-Note von IBM/Microsoft) Klaus Schild, abstrakte Syntax Anfrage Antwort konkrete Syntax SOAP-Anfrage SOAP-Antwort abstrakte Syntax unabhängig von Nachrichtenformaten und Protokollen konkrete Syntax (Binding) Abbildung einer abstrakten Syntax auf konkrete Nachrichtenformate (wie SOAP) und Protokolle (wie http) verschiedene Realisierungen einer abstrakten Syntax möglich Klaus Schild, Abstrakte und konkrete Schnittstelle Port Web-Dienst abstrakte Schnittstelle Anfrage Antwort konkrete Schnittstelle SOAP-Anfrage SOAP-Antwort Web-Adresse abstrakte Schnittstelle (Port Type): Menge von abstrakten en konkrete Schnittstelle (Binding): Abbildung auf konkrete Protokolle und Nachrichtenformate Dienst kann verschiedene Realisierungen haben: z.b. SOAP/HTTP- und SOAP-SMTP-Bindung Web-Dienst abstrakte Schnittstelle Anfrage Antwort konkrete Schnittstelle SOAP-Anfrage SOAP-Antwort Web-Adresse Web-Dienst (Service): besteht aus mindestens einem Kommunikationsendpunkt (Port) Port = konkrete Schnittstelle + Web-Adresse Klaus Schild, Klaus Schild, Die WSDL-Beschreibung von Grundstruktur s PortTypes Bindings Ports dogooglesearch GoogleSearch Port SOAP/HTTP Web-Adresse konkrete Manifestation in SOAP konkrete Manifestation in SOAP dogetcachedpage dospellingsuggestion SOAP/SMTP mailto: abstrakte Syntax abstrakte Syntax Klaus Schild, Service Klaus Schild, XML-Syntax ?xml version= 1.0 ? types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service Klaus Schild, XML-Syntax ?xml version= 1.0 ? definitions: Wurzel-Element types: Definition von Datentyp (normalerweise mit XML-Schema) types /types porttype: abstrakte Schnittstelle, d.h. Menge message name= dogooglesearch /message von en, die abstrakte Nachrichten message name= dogooglesearchresponse /message austauschen porttype name= googlesearchport /porttype message: abstrakte Nachricht binding: Abbildung eines porttypes auf konkrete Protokolle und Nachrichtenformate service name= googlesearchservice /service service: Menge von ports (jeweils binding + Web-Adresse) Klaus Schild, Dokumentwurzel ?xml version= 1.0 ? .. Wurzel-Element immer definitions aus dem Namensraum für WSD (kein W3C-Namensraum) WSDL-Beschreibung kann Namen haben. WSDL-Beschreibung kann eigenen Ziel-Namensraum definieren. Datentypen types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service Klaus Schild, Klaus Schild, Datentypen Datentyp für -Suchresultat types schema xmlns= http://www.w3.org/2001/xmlschema /schema /types Datentypen, die beim Austausch von Nachrichten relevant sind Verwendung von XML-Schema empfohlen, jedes andere Typsystem aber auch erlaubt Beachte: XML-Schema kann auch verwendet werden, wenn die Nachrichten nicht in XML übertragen werden. Klaus Schild, types xsd:schema xmlns:xsd= http://www.w3.org/2001/xmlschema xmlns:typens= urn:googlesearch xsd:complextype name= googlesearchresult xsd:all xsd:element name= estimatedtotalresultscount type= xsd:int / xsd:element name= resultelements type= typens:resultelementarray / xsd:element name= searchquery type= xsd:string / xsd:element name= startindex type= xsd:int / xsd:element name= endindex type= xsd:int / /xsd:all komplettes XML-Schema /xsd:complextype /schema Ziel-Namensraum (normalerweise identisch /types mit Ziel-Namensraum von WSDL) Klaus Schild, Abstrakte Nachrichten types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service abstrakte Nachrichten, vom Web- Dienst empfangen oder gesendet Abstrakte Nachrichten message name= dogooglesearchresponse part name= return type= typens:googlesearchresult / /message definiert abstrakte Nachricht mit Namen (Referenz) Definitionen werden in porttype oder binding verwendet können verschiedene logische Bestandteile (part) haben, z.b.: Parameter eines entfernten Prozeduraufrufs jedes dieser Bestandteile hat ebenfalls einen Namen Reihenfolge der logischen Bestandteile unerheblich Klaus Schild, Klaus Schild, Nachrichten mit strukturiertem Inhalt zwei unterschiedliche Modellierungen 1. nur ein Bestandteil (part), diesem wird komplexer Datentyp zugeordnet: message name= dogooglesearchresponse part name= return type= typens:complextype / /message typens:complextype könnte z.b. 2 Parameter enthalten 2. mehre Bestandteile (parts), denen jeweils ein Element aus types zugeordnet wird: message name= dogooglesearchresponse part name= param1 element= typens:param1 / part name= param2 element= typens:param2 / /message Klaus Schild, Wie abstrakt ist eine abstrakte Nachricht? message beschreibt abstrakte Syntax Konkrete Schnittstelle (binding) bildet abstrakte Syntax auf bestimmte Protokolle und Nachrichtenformate ab. Dennoch kann abstrakte Nachricht einer konkreten Realisierung (binding) sehr ähnlich sein. Wie abstrakt eine abstrakte Syntax ist, zeigt also erst die konkrete Schnittstelle (binding). Klaus Schild, Abstrakte Schnittstelle types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service Abstrakte Schnittstelle message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport input message= typens:dogooglesearch / output message= typens:dogooglesearchresponse / /porttype definiert abstrakte Schnittstelle als Menge von abstrakten en (operations) Definition wird in binding verwendet Klaus Schild, Klaus Schild, Abstrakte Schnittstelle Beispiel message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport input message= typens:dogooglesearch / output message= typens:dogooglesearchresponse / /porttype operation: definiert einfaches Interaktionsmuster mit Eingangs- und Ausgangs-Nachrichten. Definition wird in binding verwendet verwendet keine Datentypen, sondern Nachrichten Klaus Schild, GoogleSearchPort = 3 en GoogleSearchPort = 3 en typens:dogooglesearch = message typens:dogooglesearch = message typens:googlesearchresponse = message typens:googlesearchresponse = message Klaus Schild, Mögliche Interaktionsmuster Abstrakte Interaktionsmuster operation name= input message= / operation name= input message= / output message= / operation name= output message= / operation name= output message= / input message= / Einweg (one way, fire and forget) Anfrage-Antwort (request-response) Benachrichtigung (notification) Benachrichtigung-Antwort (notification-response) Anfrage-Antwort-Muster müssen nicht mit einer Netzwerkkommunikation (z.b. HTTP request/response) realisiert werden. auch Realisierung z.b. mit zwei unabhängigen Kommunikationen (z.b. s) möglich entfernter Prozeduraufruf daher auch mit SMTP realisierbar Realisierung wird erst in der konkreten Schnittstelle (binding) festgelegt Klaus Schild, Klaus Schild, Komplexe Interaktionsmuster Registrierung zum Börsenticker Bestätigung der Registrierung aktueller Börsenkurs (Benachrichtigung) Entfernte Prozeduraufrufe operation name= dogooglesearch parameterorder= key q start start input message= typens:dogooglesearch / output message= typens:dogooglesearchresponse / operation name= input message= / output message= / output message= / Client Server In In WSDL nicht erlaubt! Reihenfolge der Bestandteile (parts) unerheblich bei entfernten Prozeduraufrufen Reihenfolge der Input- Parameter (parts) aber häufig wichtig Reihenfolge kann mit parameterorder festgelegt werden. zusätzliche Konvention: In/Out-Parameter erscheinen sowohl in input- als auch in output-nachricht. Klaus Schild, Klaus Schild, Fehlermeldungen Anfrage-Antwort operation name= input message= / output message= / fault message= / Client Server Benachrichtigung-Antwort operation name= output message= / input message= / fault message= / Client Server Statt Antwort kann auch Fehler auf Anwendungsebene gemeldet werden. nur eine Fehlermeldung: kann aber komplexen Datentyp mit unterschiedlichen Fehlertypen (xsd:choice) haben. Konkrete Schnittstelle types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service Klaus Schild, Klaus Schild, Konkrete Schnittstelle Konkrete Schnittstelle abstrakte Syntax Anfrage Antwort konkrete Syntax SOAP-Anfrage SOAP-Antwort konkrete Schnittstelle (Binding): Abbildung einer abstrakten Schnittstelle (porttype) auf konkrete Nachrichtenformate und Protokolle jede abstrakte des PortType wird abgebildet für ein PortType verschiedene Abbildungen (Bindings) möglich definiert konkrete Schnittstelle Definition wird in in service benutzt type: die abgebildete abstrakte Schnittstelle (porttype) für mehrere binding-elemente für eine abstrakte Schnittstelle erlaubt Klaus Schild, Klaus Schild, e Abbildung mit sog. en kodiert Informationen über die Abbildung auf allen Ebenen: Binding selbst und Input- und Output-Nachricht Fehlermeldung e engl. extensibility elements Platzhalter für spezielle Bindings also Platzhalter in der WSDL-Grammatik für entsprechende Erweiterungen WSDL 1.1 definiert drei Bindings: SOAP-Binding werden gleich vorgestellt, vorher noch noch letzten Teil Teil HTTP-Binding einer WSDL-Beschreibung MIME-Binding Klaus Schild, Klaus Schild, Web-Dienst (Service) types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service Web-Dienst (Service) service name= googlesearchservice port name= googlesearchport binding= typens:googlesearchbinding (Web-Adresse) /port /service Web-Dienst = Menge von Kommunikationsendpunkten (Ports) mehrere service-elemente erlaubt, falls unterschiedliche Web-Dienste angeboten werden, z.b.: GoogleSearchService und GoogleClassificationService Klaus Schild, Klaus Schild, Kommunikationsendpunkt port name= googlesearchport binding= typens:googlesearchbinding (Web-Adresse) /port definiert einen benannten Kommunikationsendpunkt: Binding + genau eine Web-Adresse Web-Adresse mit einem spezifiziert, z.b.: port name= googlesearchport binding= typens:googlesearchbinding soap:address location= http://api.google.com/search/beta2 / /port Welche Ports bilden einen Service? service name= googlesearchservice port /port port... /port /service service name= googleclassificationservice port /port /service Ports eines Web-Dienstes (service) kommunizieren nicht untereinander Ports mit derselben abstrakten Schnittstelle, aber versch. Bindings oder Web-Adressen: semantisch äquivalente Alternativen Klaus Schild, Klaus Schild, Grundstruktur s PortTypes Bindings Ports dogooglesearch dogetcachedpage GoogleSearch Port SOAP/HTTP SOAP-Binding SOAP/SMTP dospellingsuggestion mailto: Service Klaus Schild, Klaus Schild, SOAP-Bindung von WSDL types /types message name= dogooglesearch /message message name= dogooglesearchresponse /message porttype name= googlesearchport /porttype service name= googlesearchservice /service Klaus Schild, SOAP-Bindung Bindung: : e soap:binding soap:operation e soap:body und undsoap:header soap:body und undsoap:header fault soap:fault /fault e beschreiben Abbildung auf SOAP-Nachricht Beachte: WSDL 1.0 benutzt SOAP 1.1 Klaus Schild, soap:binding soap:binding soap:operation e soap:body und undsoap:header soap:body und undsoap:header fault soap:fault /fault Klaus Schild, soap:binding soap:binding xmlns:soap= http://schemas.xmlsoap.org/wsdl/soap/ style= rpc transport= http://schemas.xmlsoap.org/soap/http / soap:binding: besagt, dass porttype mit SOAP realisiert wird transport: wie SOAP-Nachrichten übertragen werden Beachte: HTTP meint hier HTTP-POST auch möglich: transport= http://schemas.xmlsoap.org/soap/smtp style: entfernte Prozeduraufrufe (rpc) oder Messaging (document) Klaus Schild, SOAP-Stile Stile style= rpc body procedure-name part-1 part-1 part-n part-n /procedure-name /body style= document body part-1 part-1 part-n part-n /body legt Struktur des SOAP-Nachrichteninhalts (body) fest, darüber hinaus keine Bedeutung SOAP-Stil in soap:binding gilt für alle en, kann aber in jeder einzelnen überschrieben werden. soap:body und soap:header soap:binding soap:operation e soap:body und undsoap:header soap:body und undsoap:header fault soap:fault /fault Klaus Schild, Klaus Schild, soap:body soap:body soap:operation soapaction= urn:googlesearchaction / soap:body use= literal / Komplette input-nachricht wird unverändert in in SOAP-Body übernommen. soap:body: Abbildung einer abstrakten input- oder output- Nachricht auf den SOAP-Nachrichteninhalt (body) use= literal : Abstrakte Nachricht wird unverändert übernommen Klaus Schild, soap:body use= encoded encodingstyle= http://schemas.xmlsoap.org/soap/encoding/ / Komplette input-nachricht wird kodiert in in den SOAP-Body übernommen. use= encoded : Abstrakte Nachricht wird mit Hilfe eines bestimmten Verfahrens (encodingstyle) kodiert (wie in SOAP). Google verwendet Kodierungsverfahren von SOAP, z.b. SOAP-Arrays für Suchresultate. Klaus Schild, soap:header soap:operation soapaction= urn:googlesearchaction / soap:body parts= q start start use= encoded / / soap:header parts= key maxresults filter filterrestrict use= literal / input-nachricht wird auf SOAP- Header und -Body verteilt. Teile der abstrakten Nachricht werden im SOAP- Briefkopf repräsentiert. Struktur von soap:header analog zu soap:body. soap:address soap:binding xmlns:soap= http://schemas.xmlsoap.org/wsdl/soap/ style= rpc transport= http://schemas.xmlsoap.org/soap/http / port name= googlesearchport binding= typens:googlesearchbinding soap:address location= http://api.google.com/search/beta2 / /port Jeder Kommunikationsendpunkt muss genau eine Web- Adresse (soap:address) haben. Beachte: Die Web-Adresse muss zum Transportprotokoll des SOAP-Bindings passen. Klaus Schild, Klaus Schild, SOAP über HTTP HTTP-Binding Bindung für SOAP über HTTP haben wir bereits gesehen: soap:binding xmlns:soap= http://schemas.xmlsoap.org/wsdl/soap/ style= rpc transport= http://schemas.xmlsoap.org/soap/http / hiermit wird SOAP über HTTP-POST-Schnittstelle realisiert es gibt aber auch Möglichkeit, eine HTTP-Schnittstelle zu definieren, die nicht SOAP verwendet Klaus Schild, Klaus Schild, HTTP-GET GET-Anfrage HTTP-GET-Anfrage kodiert alle Parameter des RPCs in der URL: GET GET /search/beta2/dogooglesearch?key= &q=anfrage& HTTP/1.1 Host: api.google.com Content-Type: text/xml; charset= utf-8 Content-Length: nnnn Antwort als HTML-Dokument Klaus Schild, HTTP-GET GET-Binding ohne SOAP service name= googlesearchservice port name= googlesearchport2 binding= typens:googlesearchbinding2 http:address xmlns:http= http://schemas.xmlsoap.org/wsdl/http/ location= http://api.google.com/search/beta2 / /service binding name= googlesearchbinding2 http:binding verb= get / http:operation location= dogooglesearch / relative Adresse http:urlencoded/ mime:content part= docs type= text/html / Browser-basiertes Google mit WSDL beschrieben Klaus Schild, Vorteile Bewertung + plattformunabhängiger XML-Standard + etabliert + Syntax der Schnittstelle kann genau festgelegt werden. + Unterschiedliche Realisierungen einer abstrakter Schnittstelle möglich z.b. SOAP über HTTP und SMTP Klaus Schild, Klaus Schild, Nachteile - verschiedene Protokoll-Bindungen (wie HTTP vs. SMTP) können unterschiedliche Semantik haben - keine explizite Unterscheidung zwischen synchron/asynchron - keine komplexen Interaktionsmuster - keine qualitativen Aspekten (quality of service) - keine Sicherheitsaspekte Wie geht es weiter? Prinzipieller Aufbau von WSDL-Beschreibungen Protokoll-Bindungen in WSDL Vor- und Nachteile von WSDL Google-WSDL lesen und erweitern können Heute 16:15 Tutorium Nächste Woche Wie wird WSDL verwendet? Anforderungen aus der Praxis Klaus Schild, Klaus Schild, soap:operation Anhang soap:binding soap:operation e soap:body und undsoap:header soap:body und undsoap:header fault soap:fault /fault Klaus Schild, Klaus Schild, Klaus Schild, soap:operation soap:operation soapaction= urn:googlesearchaction / soapaction: legt für den SOAPAction-Briefkopf in der HTTP-Anfrage fest style: SOAP-Standard-Stil kann für die überschrieben werden.
Similar documents
View more...
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks