View
218
Download
0
Category
Preview:
Citation preview
SOAP & WSDLSOAP & WSDL
M k L k Rö hMarkus Luczak-RöschFreie Universität BerlinInstitut für InformatikNetzbasierte Informationssystememarkus.luczak-roesch@fu-berlin.de
Heutige VorlesungHeutige Vorlesung
letzte Wocheletzte WocheWas sind Web Services?Was sind Web Services?Was sind Web Services?Was sind Web Services?Was ist SOAP? / Was ist WSDL?Was ist SOAP? / Was ist WSDL?AnwendungenAnwendungenAnwendungenAnwendungenRPC vs. MessagingRPC vs. Messaging
heutige Vorlesung heutige Vorlesung SOAPSOAPprinzipieller Aufbau, Kodierung von RPCs, prinzipieller Aufbau, Kodierung von RPCs, Verarbeitung & Übertragung, Vor- und Nachteile
heutige Vorlesung heutige Vorlesung WSDLWSDLi i i ll A fb prinzipieller Aufbau (Datenschemata, Funktionalität,
Protokollbindung, Service-Aufbau)standardisierte Bindungen (SOAP & HTTP)
2AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Vor- und Nachteile
Web ServicesWeb Services
WSDLUDDI
Verweist aufdie Service-Beschreibung
WSDLVerzeichnis
BeschreibtService
Sucht nachService
Web ServiceSOAPService Nutzer (Service Consumer)
3AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP ist…SOAP ist…
…eine Kommunikationskomponente von Web ServicesServices…ein Protokoll für Nachrichtenaustausch zwischen Web Service-Konsument und Web zwischen Web Service Konsument und Web Service-Anbieter…XML-basiert (nutzt XML für die Darstellung von ( gNachrichten)…Plattform- & Programmierspracheunabhängig
Die SOAP-Spezifikation legt fest, wie eine Nachricht übertragen wird. Die Umsetzung der Nachricht ist
nicht Gegenstand der SOAP-Spezifikation
4AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Wozu SOAP?Wozu SOAP?
öffentliches
WSDL-Beschreibung UDDI
Verzeichnis
WSDL-Beschreibung
SOAP-NachrichtenA bi t
g
Anbieter Nachfrager
SOAP: Format zum Austausch von DatenWarum spezielles Format und nicht einfach Warum spezielles Format und nicht einfach beliebige XML-Syntax zulassen?
5AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Wozu SOAP?Wozu SOAP?
Es muss auf jeden Fall festgelegt werden wie:j g gAufruf proc(param-1, …, param-n) kodiert wirdFehlermeldungen kodiert werdenArrays type[] und Matrizen type[][] kodiert werden
Und gen die lei tet SOAP!Und genau dies leistet SOAP!
ät li h bi t t SOAP h i K t zusätzlich bietet SOAP noch ein Konzept, um Datenformate einfach zu erweitern
6AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Aufbau einer SOAPAufbau einer SOAP--NachrichtNachricht
SOAP EnvelopeSOAP Envelope
dSOAP Header
dSOAP Body
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope/"><!- SOAP Header -->
SO d<!- SOAP Body --></env:Envelope>
SOAP Namensraum
8AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAPSOAP BlockBlock
SOAP Nachricht ein XML DokumentXML Dokument das beinhaltet:
obligatorisches Envelope ElementEnvelope Element – identifiziert ein XML Dokument als SOAP NachrichtXML Dokument als SOAP Nachricht
optionales Header ElementHeader Element – Header Informationenoptionales Header ElementHeader Element Header Informationen
obligatorisches Body ElementBody Element – Call & Response obligatorisches Body ElementBody Element – Call & Response Informationen
optionales Fault ElementFault Element – Informationen über Fehler
9AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP Syntax RegelSOAP Syntax Regel
SOAP Nachricht MUSS in XML kodiertMUSS in XML kodiert werdenSOAP Nachricht MUSS in XML kodiertMUSS in XML kodiert werdenSOAP Nachricht MUSS MUSS einen der beiden SOAP SOAP Envelope NamespaceEnvelope Namespace benutzenEnvelope NamespaceEnvelope Namespace benutzen
SOAP Nachricht MUSS NICHT Verweis auf DTD SOAP Nachricht MUSS NICHT Verweis auf DTD beinhaltenSOAP Nachricht MUSS NICHT XML Processing SOAP Nachricht MUSS NICHT XML Processing Anweisungen beinhalten
10AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP Envelope ElementSOAP Envelope Element
<?xml version="1.0"?> E l <env:Envelope
xlmns:env="http://www.w3.org/2003/05/soap-envelope">
…</env:Envelope>
Im Beispiel: W3C-Namensraum SOAP 1.2
Name des Elements: EnvelopeEnvelopeEnvelopeEnvelope: Wurzel Element einer SOAP NachrichtEnvelopeEnvelope: Wurzel-Element einer SOAP Nachrichtbeinhaltet SOAP Namespaceidentifiziert SOAP Nachrichtidentifiziert SOAP Nachricht
11AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Nachrichteninhalt (Body)Nachrichteninhalt (Body)
<env:Envelope …><env:Body xmlns:ns="URI">
<ns:Nachrichtinhalt-Teil-1>…</ns:Nachrichteninhalt-Teil-1>…
<ns:Nachrichteninhalt-Teil-n>…</ns:Nachrichteninhalt-Teil-n></env:Body>
</env:Envelope>
BodyBody: beliebige XML-Inhalte erlaubtStruktur von Anwendung festgelegt, z.B. durch:
- speziellen Namensraum und/oder
- WSDL-Beschreibung
12AG Netzbasierte Informationssysteme http://www.ag-nbi.de
g
Briefkopf (Header)Briefkopf (Header)
<env:Envelope …>H d l "URI" <env:Header xmlns:ns="URI" >
<ns:Zusatzinformation-1>…</ns:Zusatzinformation-1>…
<ns:Zusatzinformation-n>…</ns:Zusatzinformation-n></env:Header>< B d > </ B d > Header <env:Body>…</env:Body>
</env:Envelope>
Header Blöcke
HeaderHeader: beliebige XML-Inhalte erlaubtStruktur von Anwendung festgelegtHeader BlockHeader Block- Kind-Element von Header
13AG Netzbasierte Informationssysteme http://www.ag-nbi.de
- Zusatzinformation zur eigentlichen Nachricht
Erweiterung von SOAPErweiterung von SOAP--NachrichtenNachrichten
Nachrichtenformat kann durch Header Blocks erweitert werden, ohne ursprüngliches Format (Body) zu modifizieren.
einzelne Erweiterungen unabhängig voneinander
mächtiges Konzept für VersionierungVersionierung
14AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Hypothetisches BeispielHypothetisches Beispiel
<env:Body><DoGoogleSearch> eigentliche Nachricht <DoGoogleSearch>
…</DoGoogleSearch></env:Body>
eigentliche Nachricht (Body) bleibt unverändert
</env:Body>
< H d > <en Heade > <env:Header><Public-Key>
rg8658hgkkg557j</P bli K >
<env:Header> …
<NotifyNewPage>mymail@inf fu berlin de…
</Public-Key>…
</env:Header>
mymail@inf.fu-berlin.de</NotifyNewPage>
</env:Header>
15AG Netzbasierte Informationssysteme http://www.ag-nbi.de
unabhängige Erweiterungen
Kodierung für RPCsKodierung für RPCs
SOAP auch Nachrichtenformat für entfernte Prozeduraufrufe (RPCs)eigentlichen RPCs werden aber von Middleware realisiertSOAP selbst unterstützt nur Einweg-K ik tiKommunikationAnfrage-Antwort-Muster:
1.SOAP mit HTTP übertragenauf Ebene des Transportprotokolls
2 d f SO fk f2.eindeutige Referenz im SOAP-Briefkopfauf Ebene von SOAP, dadurch unabhängig vom
Transportprotokoll
17AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Transportprotokoll
MechanismenMechanismen
Anfrage (Request)MethodenaufrufParameterübergabeg
Antwort (Answer)( )fehlerfreie BearbeitungErgebnisübergabeg g
Fehlerfall (Fault)Fehlerfall (Fault)Fehlerübergabe
18AG Netzbasierte Informationssysteme http://www.ag-nbi.de
RPCRPC--AufrufAufruf
<env:Envelope >
Procedure(Parameter-1="val-1",…,Parameter-n ="val-n")
<env:Envelope …><env:Body>
<m:Procedure xmlns:m="URI"> l /<m:Parameter-1>val-1</m:Parameter-
1>…<m:Parameter-n>val-n</m:Parameter-
n></m:Procedure>
Name der Prozedur: Kind-Element von BodyEingangsparameter: Kind-Elemente der Prozedur
</m:Procedure> </env:Body>
</env:Envelope>
Beachte: Reihenfolge der Parameter relevantReihenfolge der Parameter relevant! Beachte: grundsätzlich CallCall--byby--ValueValue!
19AG Netzbasierte Informationssysteme http://www.ag-nbi.de
AufrufAufruf--AdresseAdresse
Wo soll die Prozedur aufgerufen werden (URI)?entweder außerhalb von SOAP im Transportprotokoll (z.B. HTTP) spezifiziert
b i SOAP B i fk f bbesser im SOAP-Briefkopf angeben:
<env:Header><wsa:EndpointReference
xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing><wsa:Address>http://api.google.com/search/beta2http://api.google.com/search/beta2</wsa:Address><wsa:PortType>ns1:GoogleSearchPort</wsa:PortType>
</wsa:EndpointReference> </env:Header>
20AG Netzbasierte Informationssysteme http://www.ag-nbi.de
RPCRPC--ErgebnisErgebnis
<env:Envelope >
public Parameter-i Procedure(…,Parameter-j,…)<env:Envelope …>
<env:Body> <m:ProcedureResponse xmlns:m="URI"
xmlns:rpc="http://www w3 org/2003/05/soap-rpc">xmlns:rpc= http://www.w3.org/2003/05/soap rpc ><rpc:result>m:Parameter-i</rpc:result> <m:Parameter-i>…</m:Parameter-i>…
<m:Parameter-j>…</m:Parameter-j></m:ProcedureResponse>
</env:Body> </env:Envelope>
Wahl von ProcedureResponse beliebigWahl von ProcedureResponse beliebigKind-Elemente von ProcedureResponse: Rückgabewerte In-Out-Parameter = erscheinen im Aufruf & Antwort
21AG Netzbasierte Informationssysteme http://www.ag-nbi.de
In Out Parameter erscheinen im Aufruf & Antwort
RPCRPC--Ergebnis (2)Ergebnis (2)
<env:Envelope >
public Parameter-i Procedure(…,Parameter-j,…)<env:Envelope …>
<env:Body> <m:ProcedureResponse xmlns:m="URI"
xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">xmlns:rpc http://www.w3.org/2003/05/soap rpc ><rpc:result>m:Parameter-i</rpc:result><m:Parameter-i>…</m:Parameter-i>…
<m:Parameter-j>…</m:Parameter-j></m:ProcedureResponse>
</env:Body> / E l </env:Envelope>
rpc:resultrpc:result: ausgezeichnetes Ergebnis (optional)rpc:resultrpc:result: ausgezeichnetes Ergebnis (optional)Namensraum …/soap-rpc Teil der SOAP-Spezifikation
22AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Kodierung von FehlermeldungenKodierung von Fehlermeldungen
Im Fall eines Fehlers in der Kommunikation wird ein SOAP Fault
<env:Envelope …> <env:Body>
<env:Fault> <env:Code>
Block als einziges Element des SOAP Body übertragen.
<env:Code> <env:Value>env:Sender</env:Value>
</env:Code> <env:Reason> <env:Reason>
<env:Text xml:lang="en-US">Processing error</env:Text><env:Text xml:lang="de">Verarbeitungsfehler</env:Text>
</env:Reason> /env:Reason </env:Fault>
</env:Body> </env:Envelope>
Code und Reason obligatorischCodeCode: für maschinelle VerarbeitungReasonReason: zusätzliche Information, nicht für maschinelle Verarbeitung
23AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Beispiel: TimeoutBeispiel: Timeout--FehlermeldungFehlermeldung<env:Envelopeenv:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:m="http://www.example.org/timeouts" xmlns:xml="http://www.w3.org/XML/1998/namespace"> xmlns:xml http://www.w3.org/XML/1998/namespace
<env:Bodyenv:Body> <env:Fault>
<env:Code> <env:Value>env:Sender</env:Value> <env:Subcode>
<env:Value>m:MessageTimeout</env:Value> </env:Subcode>
</env:Code> <env:Reason>
T t l l " " S d Ti t / T t <env:Text xml:lang="en">Sender Timeout</env:Text> </env:Reason> <env:Detail>
<m:MaxTime>P5M</m:MaxTime> <m:MaxTime>P5M</m:MaxTime> </env:Detail>
</env:Fault> </env:Bodyenv:Body>
24AG Netzbasierte Informationssysteme http://www.ag-nbi.de
</env:Bodyenv:Body></env:Envelopeenv:Envelope>
Elemente des SOAP Fault BlocksElemente des SOAP Fault Blocks
Element-name
Status Beschreibung
Code obligatorisch von der SOAP Spezifikation festgelegte Codierung der FehlerquelleCodierung der Fehlerquelle
Reason obligatorisch textuelle Beschreibungtextuelle Beschreibung des aufgetretenen Fehlers
Node optional gibt an an welcher Stellean welcher Stelle der SOAP Node optional gibt an, an welcher Stellean welcher Stelle der SOAP Kommunikation der FehlerFehler aufgetreten ist
Role optional beschreibt die Rolle des KnotensRolle des Knotens, bei dem der Fehler aufgetreten ist
Details optional enthält weitere Infosweitere Infos zum aufgetretenen p gFehler (der Inhalt kann von den Anwendungen frei festgelegt werden)
25AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Kodierung von ArraysKodierung von Arrays
Beispiel: Als Parameter soll int[3] übergeben werden.Wie soll dieses Array dargestellt werden?
<array>
so?
<number xsi:type="xsd:int">108</number><number <number xsi:type="xsd:int">99</number><number
i " d i " 205 / b<array
oder so?
xsi:type="xsd:int">205</number></array>
<array elementType="xsd:int">108 99 205
27AG Netzbasierte Informationssysteme http://www.ag-nbi.de
</array>
Mehrdimensionale SOAPMehrdimensionale SOAP--ArraysArrays
<numbers enc:itemType="xsd:int" enc:arraySize="3 2"> b1 b1<number>1</number>
<number>2</number><number>3</number>
b 4 / ba
a1 b1a2 b1
a3 b1 b<number>4</number>
<number>5</number><number>6</number>/ b
a1 b2a2 b2
a3 b2</numbers>
3x2-Matrix mit Elementen vom Typ xsd:int.enc:arraySize="* 2": n x 2-Matrix Beachte: * nur an erster Stelle erlaubteindeutig auflösbar
28AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAPSOAP--ArraysArrays
<numbers xmlns:enc="http://www.w3.org/2003/05/soap-encoding"enc:itemType="xsd:int" enc:arraySize="3">
<number>1</number><number>2</number><number>2</number>
</numbers>
entspricht int[3] bei SOAP 1.1Element-Namen (hier numbers und number) beliebig, entscheidend sind Attribute enc:itemType und enc:arraySizeNamensraum …/soap-encoding Teil der SOAP-Spezifikationenc:arraySize="*": entspricht int[]enc:arraySize= * : entspricht int[]
29AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Beispiel enc:arraySize="* 2"Beispiel enc:arraySize="* 2"
<numbers enc:itemType "xsd:int" enc:arraySize "* 2">
b
<numbers enc:itemType="xsd:int" enc:arraySize="* 2"><number>1</number><number>2</number>
b 3 / ba
a1 b1a2 b1
<number>3</number><number>4</number><number>5</number>
b / b
a3 b1a1 b2
a2 b2<number>6</number>
</numbers> a3 b2
#Elemente = 6 = n x 2eindeutige Lösung: n = 3für #Elemente 6 n x m gäbe es keine eindeutige für #Elemente = 6 = n x m gäbe es keine eindeutige Lösungenc:arraySize="* **" nicht erlaubt
30AG Netzbasierte Informationssysteme http://www.ag-nbi.de
y
env:encodingStyleenv:encodingStyle
die vorgestellte Kodierung für RPCs und Arrays muss nicht verwendet werdenmuss nicht verwendet werdenwird sie verwendet, dann in SOAP-Nachricht folg. Kodierungsschema angeben:Kodierungsschema angeben:
env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
Beachte: für SOAP 1.1 hier andere URL!
Kodierungsschema auch anwendungsspezifisch:
Empfänger muss entspr Kodierungsschema kennen
env:encodingStyle="http://www.ibm.com/soap-encoding" (fiktiv)
31AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Empfänger muss entspr. Kodierungsschema kennen
Allgemeine AnforderungenAllgemeine Anforderungen
EmpfängerEmpfänger muss verarbeitenmuss verarbeiten::BodyHeader Blocks mit mustUnderstand="true"
Empfänger Empfänger darf ignorierendarf ignorieren::p gp g ggHeader Blocks mit mustUnderstand="false"Header Blocks ohne mustUnderstand-AttributGrund: "false" Standardwert von mustUnderstand
33AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Schrittweise VerarbeitungSchrittweise Verarbeitung
Sender
SOAP
SOAP unterstützt schrittweise Verarbeitung von Nachrichten, z.B.:
Empfänger
SOAP
1.Authentifizierung: Verifizierung einer
Authentifizierung
SOAP
1.Verifizierung einer digitalen Signatur in einem Header Block
Entschlüsselung
SOAP
2.
e e eade o2.Entschlüsselung des
Body
Web-Dienst
SOAP
3.
y3.Aufruf des eigentlichen
Web Services
34AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAPSOAP--KnotenKnoten
Sender SOAPSOAP--KnotenKnoten: Rechner, die Teil einer SOAP-Nachricht verarbeiten
Sender
E fä
SOAP
verarbeiten
Authentifizierung
Empfänger
1.
ZwischenknotenZwischenknoten (intermediary)Entschlüsselung
SOAP
2. g
Web Dienst
SOAP
3EndknotenEndknoten (ultimate receiver)
Web-Dienst3.
35AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Typen von SOAPTypen von SOAP NodesNodes
• Initial SOAP sender• erzeugt die SOAP Nachricht• erzeugt die SOAP Nachricht• ist der Startpunkt des sog. SOAP Nachrichtenpfades
(Message Path)
• SOAP Intermediaryempfängt eine SOAP Nach icht e a beitet Teile de • empfängt eine SOAP Nachricht, verarbeitet Teile der Nachricht, modifiziert evtl. Teile der Nachricht und sendet die Nachricht weiter
• Ultimate SOAP Receiverd ülti B ti t d SOAP N h i ht• endgültiger Bestimmungsort der SOAP Nachricht
• Endpunkt des SOAP Nachrichtenpfades• Nachricht muß diesen nicht in jedem Fall erreichen
36AG Netzbasierte Informationssysteme http://www.ag-nbi.de
• Nachricht muß diesen nicht in jedem Fall erreichen
Identifizierung von SOAPIdentifizierung von SOAP--KnotenKnoten
SOAP-Knoten werden mit URIs identifiziert
1.1. anwendungspezifische URIanwendungspezifische URIz.B. www.example.org/Logp g gmuss vom Empfänger interpretiert werden können
2.2. standardisierte URIstandardisierte URIhttp://www.w3.org/2003/05/envelope/role/nexthttp://www.w3.org/2003/05/envelope/role/next
= aktueller Empfänger (Zwischen- oder Endknoten)
htt // 3 /2003/05/ l / l / lti thtt // 3 /2003/05/ l / l / lti thttp://www.w3.org/2003/05/envelope/role/ultimathttp://www.w3.org/2003/05/envelope/role/ultimateReceivereReceiver
= Endknoten
37AG Netzbasierte Informationssysteme http://www.ag-nbi.de
= Endknoten
Festlegung der ZuständigkeitenFestlegung der Zuständigkeiten
<env:Header><FirstBlock env:role="www example org/Log"><FirstBlock env:role= www.example.org/Log >
...</FirstBlock><SecondBlock
"Log"-Knoten zuständig
<SecondBlockenv:role="http://www.w3.org/2003/05/envelope/role/next">
...</SecondBlock>
aktueller Empfänger zuständig</SecondBlock><ThirdBlock>
...</ThirdBlock>
Endknoten zuständig
p g g
</ThirdBlock></env:Header>
rolerole: zuständiger SOAP-Knoten (URI)Beachte: fehlt role-Attribut, dann ist Endknoten
ä di38AG Netzbasierte Informationssysteme http://www.ag-nbi.de
zuständig
rolerole AttributAttribut
Spezifiziert den Empfänger oder Zwischenstation, die die das Header verarbeiten darfHeader verarbeiten darf
http://www.w3.org/2003/05/soaphttp://www.w3.org/2003/05/soap--envelope/role/nextenvelope/role/nextdieser Teil des Headers ist für die nächste Anwendung bestimmt, die die Nachricht verarbeiten wird.
http://www.w3.org/2003/05/soaphttp://www.w3.org/2003/05/soap--envelope/role/ultimateReceiverenvelope/role/ultimateReceiver
dieser Teil des Headers ist nur für den letzten „Stop“ bestimmt
http://www.w3.org/2003/05/soaphttp://www.w3.org/2003/05/soap--envelope/role/noneenvelope/role/noneschaltet den Header Teil ausschaltet den Header-Teil aus
39AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Aufgabe eines ZwischenknotensAufgabe eines Zwischenknotens
• verarbeitet Header Blocks mit • role="http://www w3 org/2003/05/envelope/role/nextnext"• role= http://www.w3.org/2003/05/envelope/role/nextnext• role="URI", wobei "URI" den betreffenden
Zwischenknoten bezeichnet
• Alle anderen Header Blocks und Body werden nicht verarbeitet verarbeitet.
• löscht alle verarbeiteten Header Blocks !• fügt evtl neue Header Blocks hinzu• fügt evtl. neue Header Blocks hinzu• entscheidet, welcher SOAP-Knoten nächster Knoten in
Verarbeitungsskette sein sollg• leitet modifizierte SOAP-Nachricht an diesen SOAP-
Knoten weiter
40AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Tiefe der VerarbeitungTiefe der Verarbeitung
Tiefe der Verarbeitung durch mustUnderstand-Attribut bestimmt:
mustUnderstand="true"mustUnderstand="true"Empfänger muss Header Block verstehen, ansonsten FehlermeldungLöschen von unbekannten Header Blocks nicht
l bterlaubt
tU d t d "f l "tU d t d "f l "mustUnderstand="false"mustUnderstand="false"Empfänger kann Header Block ignorieren
h b k d l k l b41AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Löschen von unbekannten Header Blocks erlaubt
Aufgabe des EndknotenAufgabe des Endknoten
1. verarbeitet Header Blocksmit role="http://www.w3.org/2003/05/envelope/role/ultimateReceiver"
mit role=" http://www.w3.org/2003/05/envelope/role/next"
ohne role-Attribut
2. versteht und verarbeitet Body
42AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Festlegung der Zuständigkeiten?Festlegung der Zuständigkeiten?
Vorteile der schrittweisen Verarbeitung Aufgabenverteilung auf spezialisierte Server
Sender Empfänger
1. SOAP-Knoten
Sender Empfänger
SOAP-Nachricht erweiterte SOAP-Nachricht ohne
Zuständigkeiten
erweiterte SOAP-Nachricht
mit Zuständigkeiten
43AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Zuständigkeiten
ProtokollProtokoll--Bindung (Binding)Bindung (Binding)
XMLTransport-
SOAP- konkrete
XMLp
protokoll
SOAPNachricht
konkrete Nachricht
Wie werden SOAP-Nachrichten mit bestimmten Transportprotokoll übertragen? p p gWie SOAP-Nachrichten serialisieren?SOAP-Spezifikation schreibt nicht vor, wieSO Spe at o sc e bt c t o , eProtokoll-Bindung spezifiziert wird
45AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Anforderungen an ProtokollAnforderungen an Protokoll--BindungBindung
konkrete Nachricht meist XML, kann aber auch b li bi d F t i beliebig anderes Format sein: z.B. komprimiertes Binärformati i B di einzige Bedingung:
Serialisierung ohne InformationsverlustSerialisierung ohne Informationsverlust
Serialisierung s muss also symmetrisch sein:1s-1(s(N)) = N, für alle SOAP-Nachrichten N
46AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Standardisierte ProtokollStandardisierte Protokoll--BindungenBindungen
HTTP-Binding bisher als einzige Protokoll-Bindung für SOAP standardisiert
zwei unterschiedliche HTTP-Bindungen:- HTTP-POST
- HTTP-GET
47AG Netzbasierte Informationssysteme http://www.ag-nbi.de
HTTPHTTP--GET vs. HTTPGET vs. HTTP--POSTPOST
HTTP GETHTTP GETURL AntwortParameter können in URL kodiert werden, z.B.:,
http://google.com/doGoogleSearch?q=Beginning+XMLp g g g q g g= Aufruf doGoogleSearch(q="Beginning XML")
HTTP POSTHTTP POSTHTTP POSTHTTP POSTURL + Datenanhang Antwort
48AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP SOAP 1.11.1 über HTTP POST: Anfrageüber HTTP POST: Anfrage
POST /search/beta2/doGoogleSearch HTTP/1.1 Host: api.google.com URLHost: api.google.comContent-Type: text/xml; charset="utf-8" SOAPAction: ""Content Length: nnnn
HTTP HeaderContent-Length: nnnn
49AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP SOAP 1.21.2 über HTTP POST: Anfrageüber HTTP POST: Anfrage
POST /search/beta2/doGoogleSearch HTTP/1.1 Host: api.google.com URLHost: api.google.comContent-Type: application/soap+xml; charset="utf-8" Content-Length: nnnn HTTP Header
<?xml version='1.0' encoding='UTF-8'?><env:Envelope …>p<env:Body>
<doGoogleSearch xmlns="urn:GoogleSearch">k " d " 3289 8 0 809 /k<key xsi:type="xsd:string">3289754870548097</key>
<q xsi:type="xsd:string">Eine Anfrage</q> …
Daten
</doGoogleSearch></env:Body>
</env:Envelope>SOAP-
N h i h
50AG Netzbasierte Informationssysteme http://www.ag-nbi.de
</env:Envelope> Nachricht
SOAP über HTTP POST: AntwortSOAP über HTTP POST: Antwort
HTTP/1.1 200 OK Content-Type: application/soap+xml; charset="utf-8"
HTTP HeaderCo te t ype app cat o /soap ; c a set ut 8Content-Length: nnnn
<?xml version="1 0" encoding="UTF 8"?><?xml version= 1.0 encoding= UTF-8 ?><env:Envelope …>
<env:Body><ns1:doGoogleSearchResponse xmlns:ns1="urn:GoogleSearch"
env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="ns1:GoogleSearchResult"> </return><return xsi:type ns1:GoogleSearchResult >…</return></ns1:doGoogleSearchResponse>
</env:Body>/ E l</env:Envelope>
SOAP-Response
51AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Response
SOAP über HTTP GETSOAP über HTTP GET
GET /search/beta2/doGoogleSearch?q=Beginning+XML HTTP/1 1 HTTP/1.1
Host: api.google.com Accept: application/soap+xml p pp / p
ruft doGoogleSearch(q="Beginning XML") aufgesamte SOAP Nachricht als URL kodiertgesamte SOAP-Nachricht als URL kodiertAntwort wie bei HTTP POSTAmazon bietet HTTP GET Schnittstelle an Google Amazon bietet HTTP-GET-Schnittstelle an, Google jedoch nichtsehr beliebt weil leichtgewichtigsehr beliebt weil leichtgewichtig
52AG Netzbasierte Informationssysteme http://www.ag-nbi.de
REST oder nicht?REST oder nicht?
HTTP GETHTTP GET entspricht REST-Grundsatz
würde z.B. travel.com/Reservations/itinerary?reservationCode=FT35ZBQ
fanfragenURL identifiziert eindeutig gebuchte Reise
HTTP POSTHTTP POSTwürde z B
widerspricht REST-Grundsatz
würde z.B.travel.com/Reservations/anfragen mit SOAP-RPC als Datenhang:anfragen mit SOAP-RPC als Datenhang:itinerary(reservationCode="FT35ZBQ") URL identifiziert nicht gebuchte Reise
53AG Netzbasierte Informationssysteme http://www.ag-nbi.de
URL identifiziert nicht gebuchte Reise
HTTP POST vs. HTTP GETHTTP POST vs. HTTP GET
SOAP-Spezifikation empfiehlt HTTP GET, wenn Parameter Web-Ressourcen identifizierenParameter Web Ressourcen identifizieren
Übereinstimmung mit REST-Grundsatz
Problem: Problem: Wie komplexe Parameter als URI kodieren?
Beispiel: Beispiel: reservationCode könnte aus Bezeichner + Datum bestehenso kodieren?
travel.com/Reservations/itinerary?reservationCodereservationCode=FT35ZBQ+22/6/2005=FT35ZBQ+22/6/2005
oder so?travel.com/Reservations/itinerary?reservationId=FT35ZBQ&reservationDate=22/6/2005reservationId=FT35ZBQ&reservationDate=22/6/2005
54AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP SOAP -- VorteileVorteile
+ etablierter Standard (u a in Net verwendet)+ etablierter Standard (u.a. in .Net verwendet)+ unabhängig von Übertragungsprotokollen+ sowohl für RPCs als auch für Messaging geeignet+ sowohl für RPCs als auch für Messaging geeignet+ einfach erweiterbar+ Erweiterungen unabhängig voneinander+ Erweiterungen unabhängig voneinander+ Plattformunabhängig+ Programmiersprachenunabhängig+ Programmiersprachenunabhängig
56AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAP SOAP -- NachteileNachteile
- zusätzlicher Verarbeitungsaufwandg- nicht so einfach zu erlernen- für viele notwendige Erweiterungen noch kein für viele notwendige Erweiterungen noch kein
etablierter StandardBeispiel: wsu:identifier vs. wsa:MessageIDp g
- heutzutage noch nicht vollständig interoperabel
57AG Netzbasierte Informationssysteme http://www.ag-nbi.de
WSDLWSDL
M k L k Rö hMarkus Luczak-RöschFreie Universität BerlinInstitut für InformatikNetzbasierte Informationssystememarkus.luczak-roesch@fu-berlin.de
Web ServicesWeb Services
WSDLUDDI
Verweist aufdie Service-Beschreibung
WSDLVerzeichnis
BeschreibtService
Sucht nachService
Web ServiceSOAPService Nutzer (Service Consumer)
59AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Web Services (2)Web Services (2)
60AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Quelle: http://www.jeckle.de/files/WSDL2002.pdf
Web Services (3)Web Services (3)
61AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Quelle: http://www.jeckle.de/files/WSDL2002.pdf
Wozu dient WSDL?Wozu dient WSDL?
Formale Beschreibung der Schnittstelle von ServicesFormale Beschreibung der Schnittstelle von Services
Nachfrager Anbieter
Schnittstelle Dienst publizieren
Nachfrager AnbieterDienst abrufen
Client möchte bestimmten Web Service nutzenClient benötigt hierfür:- Struktur des Aufrufes: Name, Parameter, Ergebnis,
FehlermeldungenÜ- Übertragungsprotokoll und Web-Adresse
genau dies wird mit WSDL beschrieben
62AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Wozu WSDLWozu WSDL--Syntax verstehen?Syntax verstehen?
WSDL = zu veröffentlichende Schnittstellenbeschreibung
Java C#
Schnittstellenbeschreibung (Vertrag)Nutzer des Web Service kennt nur
Java, C# WSDL, nicht Programm-CodeWeb-Service-Anbieter/Nutzer sollten WSDL (Vertrag) verstehen!sollten WSDL (Vertrag) verstehen!mögliche Probleme bei generierten WSDLs:
WSDL - Fehlermeldungen nicht korrekt beschrieben
- optionale RPC-Parameter ungünstig beschrieben
63AG Netzbasierte Informationssysteme http://www.ag-nbi.de
WSDL bei W3CWSDL bei W3C
Web Services Description Working Group http://www.w3.org/2002/ws/desc/
WSDL 1.1. W3C Note, März 2001
WSDL Version 1.2 W3C Working Draft,März 2003
Part 1: Core Language g gPart 2: Message PatternsPart 3: Bindings
WSDL Version 2.0 WSDL Version 2.0 W3C Recommendation, Juni 2007W3C Recommendation, Juni 2007Part 0: PrimerPart 1: Core LanguagePart 1: Core LanguagePart 2: Adjuncts Keine Kompatibilität Keine Kompatibilität
zwischen WSDL 1.1. und WSDL 2.0zwischen WSDL 1.1. und WSDL 2.0
64AG Netzbasierte Informationssysteme http://www.ag-nbi.de
A. Dhesiaseelan „What's New in WSDL 2.0“, 2004, http://www.hotcoding.com/xmls/webservice/33297.html
WSDL AufbauWSDL Aufbau
beschreibt Netzwerkdienste als O i
Web Service
beschreibt Netzwerkdienste als Kommunikationsendpunkte (Ports), die bestimmte
Operationen
doGoogleSearchNachrichten über bestimmte Protokolle austauschen
SOAP-AnfrageSOAP-Antwort
Web-Adresse
http://api.google.com/p // p g g /...
66AG Netzbasierte Informationssysteme http://www.ag-nbi.de
GrundideeGrundidee
abstrakte Schnittstelleabstrakte SchnittstelleB h ib d
abstrakte Schnittstelle Beschreibung der
Schnittstelle unabhängig von - Nachrichtenformaten wie
Schnittstelle
OperationA f Nachrichtenformaten wie
SOAP- Übertragungsprotokollen wie
HTTP
Anfrage
Antwort
HTTP
BindungBindungBindungBindungRealisierung einer abstrakten Schnittstelle mit
versch. Bindungen
Operationbestimmtem Nachrichtenformat und Übertragungsprotokoll
OperationSOAP-Anfrage
SOAP-Antwort
67AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Übertragungsprotokoll
Beispiel Beispiel (fiktiv)(fiktiv)
ein Dienst (abstrakte Schnittstelle):Name der Operation: doGoogleSearchName der Operation: doGoogleSearchEingangsparameter: key:string, q:string, …Rückgabewert: doGoogleSearchResponseRückgabewert: doGoogleSearchResponse
Kind-Elemente von doGoogleSearchResponse: Rückgabewerte (komplexer Datentyp)
eine Beschreibungeine Beschreibung (WSDL), aber 4 Zugriffsaber 4 Zugriffs--möglichkeitenmöglichkeiten (Bindungen):möglichkeitenmöglichkeiten (Bindungen):1.SOAP/HTTP-POST
2 SOAP/HTTP-GET (Rest)2.SOAP/HTTP GET (Rest)
3.SOAP/SMTP (asynchron)
4 HTML/HTTP-GET (Browser)
68AG Netzbasierte Informationssysteme http://www.ag-nbi.de
4.HTML/HTTP GET (Browser)
Web Service von Web Service von
Dienst: SucheSuche
Name der Operation:doGoogleSearchdoGoogleSearch
Rückgabe:doGoogleSearchResponsedoGoogleSearchResponsedoGoogleSearchResponsedoGoogleSearchResponse
69AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Web Service von Web Service von
Dienst: Dienst: Zugriff auf WebZugriff auf Web--CacheCache
N d O tiName der Operation:doGetCachedPagedoGetCachedPage
Rückgabe:doGetCachedPageResponsedoGetCachedPageResponse
70AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Web Service von Web Service von
Di t Dienst: RechtschreibkorrekturRechtschreibkorrektur
Name der Operation:doSpellingSuggestiondoSpellingSuggestion
Rückgabe:d S lli S ti Rd S lli S ti R
71AG Netzbasierte Informationssysteme http://www.ag-nbi.de
doSpellingSuggestionResponsedoSpellingSuggestionResponse
WSDLWSDL--InhaltInhalt
• Was? Typen, Messages, PortTypes (Interfaces)• Deklaration des verfügbaren Operationen• Deklaration des verfügbaren Operationen• Struktur der ausgetauschten Nachrichten (Aufruf und
Rückruf, Fehlermeldungen)
• Wie Bindingst tüt t T t t k ll• unterstützte Transportprotokolle
• verwendete Nachrichtenformate
• Wo Service• Wie heißt der Service?• Unter welchen URLs kann er gefunden werden?
72AG Netzbasierte Informationssysteme http://www.ag-nbi.de
GrundstrukturGrundstruktur
PortsPortsBindingsBindingsPortTypesPortTypesOperationsOperations ggypyppp
SOAP/HTTP doGoogleSearch http://SOAP/HTTP POST
GoogleSearchPort
doGoogleSearch
http://
http://…
SOAP/SMTP
doGetCachedPage
http://…
mailto:doGetCachedPage
doSpellingSuggestionHTML/
HTTP GET
http://…
73AG Netzbasierte Informationssysteme http://www.ag-nbi.de
ServiceServiceHTTP GET
Abstrakte SchnittstellenAbstrakte Schnittstellen
portTypeportType (WSDL 1.1) ==interfaceinterface (WSDL 2 0)interfaceinterface (WSDL 2.0)
portType = Menge von
PortTypesPortTypesOperationsOperations
portType Menge von abstrakten Operationen
GoogleSearchPort
doGoogleSearch
jede abstrakte Operation beschreibt Eingangs- und Ausgangsnachricht
GoogleSearchPort
doGetCachedPage Ausgangsnachricht
meist nur ein portType doSpellingSuggestion
g
meist nur ein portType, aber in WSDL 1.1 auch mehrere möglich
doSpellingSuggestion
74AG Netzbasierte Informationssysteme http://www.ag-nbi.de
BindungenBindungen
in WSDL bindingbinding genanntBindingsBindingsPortTypesPortTypes
in WSDL bindingbinding genannt
für jede abstrakte für jede abstrakte SOAP/HTTP für jede abstrakte für jede abstrakte Schnittstelle (Schnittstelle (portTypeportType) ) mindestens eine Bindungmindestens eine Bindung
POST
GoogleSearchPort
ein portTypeportType kann also it t hi dli h t hi dli h mit unterschiedlichen unterschiedlichen
BindungenBindungen realisiert seinSOAP/SMTP
HTML/HTTP GET
75AG Netzbasierte Informationssysteme http://www.ag-nbi.de
KommunikationsendpunkteKommunikationsendpunkte
portport (WSDL 1.1) = = PortsPortsBindingsBindings pp ( )endpointendpoint (WSDL 2.0)
PortsPortsBindingsBindings
SOAP/HTTP http://portport = Bindung + Web-Adresse
SOAP/HTTP POST
http://…
http://…
für jede Bindung (für jede Bindung (bindingbinding) ) mindestens ein mindestens ein portport
mailto:mindestens ein mindestens ein portport
ein bindingbinding kann also über
SOAP/SMTP
http://… ggunterschiedliche Web-Adressen zugänglich sein
HTML/HTTP GET
p
76AG Netzbasierte Informationssysteme http://www.ag-nbi.de
ServiceService
Menge von portports bilden PortsPortsBindingsBindingszusammen einen ServiceService
PortsPortsBindingsBindings
SOAP/HTTP http://portports können in verschiedene Services
SOAP/HTTP POST
http://…
http://…
gruppiert werdenp
mailto:
portports eines Service = semantisch äquivalente Alt ti
SOAP/SMTP
http://…Alternativen
HTML/HTTP GET
http://…
77AG Netzbasierte Informationssysteme http://www.ag-nbi.de
ServiceService
WSDL 1.1. WSDL 1.1. –– Elemente (1)Elemente (1)
Element BeschreibungAb t kt B h ibAbstrakte Beschreibung
<types>…
- Maschinen- und sprachunabhängige Typdefinitionen definiert die verwendeten
</types>Typdefinitionen definiert die verwendeten DatentypenDatentypen
<message> - NachrichtenNachrichten, die übertragen werden sollen…
</message>- Funktionsparameter (Trennung zwischen Ein-und Ausgabeparameter) oder Dokumentbeschreibungeno u e tbesc e bu ge
<portType>…
/
- Nachrichtendefinitionen im Messages-Abschnitt
</portType> - definiert OperationenOperationen, die beim Web Service ausgeführt werden
78AG Netzbasierte Informationssysteme http://www.ag-nbi.de
WSDL 1.1. WSDL 1.1. –– Elemente (2)Elemente (2)
El t B h ibElement BeschreibungKonkrete Beschreibung
<bi di > </bi di > K ik i k llK ik i k ll d b i <binding>…</binding> - KommunikationsprotokollKommunikationsprotokoll, das beim Web Service benutzt wird- Gibt die Bindung(en) der einzelnen g( )Operationen im portType-Abschnitt an
<service>…</service> - gibt die Anschlussadresse(n) der einzelnen Bindungen an (Sammlung von einem oder mehreren Ports)
79AG Netzbasierte Informationssysteme http://www.ag-nbi.de
XMLXML--Syntax von WSDLSyntax von WSDL
<?xml version="1.0"?>
<definitionsdefinitions name="GoogleSearch"
XML-Deklaration
l l<definitionsdefinitions name= GoogleSearchtargetNamespace="urn:GoogleSearch"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas xmlsoap org/wsdl/soap"
Wurzel-Element
xmlns:soap= http://schemas.xmlsoap.org/wsdl/soapxmlns="http://schemas.xmlsoap.org/wsdl/">…
</definitionsdefinitions></definitionsdefinitions>
WurzelWurzel--Element Element definitions aus entsprechendem Namensraumentsprechendem NamensraumNamensraumNamensraum von definitions = Version
WSDL-Beschreibung kann Ziel-Namensraum gdefinierenSOAP-Nachricht kann auf diesen Ziel-Namensraum verweisen
80AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Namensraum verweisen
<types><types>
<?xml version="1.0"?><definitions name="GoogleSearch"
targetNamespace "urn:GoogleSearch" portTypetargetNamespace="urn:GoogleSearch"…xmlns="http://schemas.xmlsoap.org/wsdl/">
<typestypes>…</typestypes>
p yp
types
message
<typestypes>…</typestypes> …
</definitions>
types
types types Definition von Datentypenwerden für Spezifikation von abstrakten Nachrichtenabstrakten Nachrichten verwendet
82AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Definition von DatentypenDefinition von Datentypen
<typestypes><schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:GoogleSearch">… portType
</schema></typestypes>
portType
message
Datentypen für Spezifikation von abstrakten N h i ht
types
NachrichtenXML-Schema als Typsystem empfohlen, theoretisch jedes andere Typsystem aber auch erlaubtjedes andere Typsystem aber auch erlaubtBeachte: XML-Schema kann auch verwendet werden, wenn Nachrichten nicht in XML übertragen werden.
83AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Beispiel: Beispiel: --Suchresultat Suchresultat
<typestypes><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="urn:GoogleSearch"targetNamespace="urn:GoogleSearch">
<xsd:complexType name="GoogleSearchResult"><xsd:all><xsd:element name="estimatedTotalResultsCount" type="xsd:int"/><xsd:element name="resultElements" type="tns:ResultElementArray"/><xsd:element name="searchQuery" type="xsd:string"/><xsd:element name="startIndex" type="xsd:int"/><xsd:element name="endIndex" type="xsd:int"/>
…</xsd:all>
</xsd:complexType></ h ></schema>
</typestypes> vollständiges XML-SchemaZiel-Namensraum normalerweise identisch
l S
84AG Netzbasierte Informationssysteme http://www.ag-nbi.de
mit Ziel-Namensraum von WSDL
<message><message>
d fi iti "G l S h"
portType
message<definitions name="GoogleSearch"targetNamespace="urn:GoogleSearch"…
l "h // h l / dl/"
types
message
xmlns="http://schemas.xmlsoap.org/wsdl/"><types>…</types> <messagemessage name="doGoogleSearch">…</messagemessage>gg g / gg<messagemessage name="doGoogleSearchResponse">…</messagemessage>…
</definitions>/
messagemessageDefinition einer abstrakten Nachrichtwerden für Spezifikation der abstrakten Schnittstelleabstrakten Schnittstelle verwendet
86AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Definition einer abstrakten NachrichtDefinition einer abstrakten Nachricht
<messagemessage name="doGoogleSearchResponse"><partpart name="return" type="tns:GoogleSearchResult"/>
</messagemessage>
name muss innerhalb der WSDL eindeutig seinname muss innerhalb der WSDL eindeutig seinsetzten sich aus logischen Bestandteilen (partparts) zusammen: #parts ≥ 1 ppart kann z.B. ein Parameter eines RPCs seinjedes part hat eindeutigen Namen
Reihenfolge der logischen Bestandteile unerheblich
87AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Definition strukturierter NachrichtenDefinition strukturierter Nachrichten
zwei unterschiedliche Modellierungen1 mehrere parts:1. mehrere parts:
<message name="doGoogleSearchResponse">g g p<part name="param1" element="tns:param1"/><part name="param2" element="tns:param2"/>
</message>
2. ein part mit komplexen Datentyp:
/message
<message name="doGoogleSearchResponse"><part name="return" type="tns:complexType"/>
</message>
tns:complexType könnte z.B. 2 Parameter enthalten
88AG Netzbasierte Informationssysteme http://www.ag-nbi.de
tns:complexType könnte z.B. 2 Parameter enthalten
Definition strukturierter NachrichtenDefinition strukturierter Nachrichten
zwei unterschiedliche Modellierungen1 mehrere parts:1. mehrere parts:
<message name="doGoogleSearchResponse">UnterschiedeUnterschiede
parts immer g g p<part name="param1" element="tns:param1"/><part name="param2" element="tns:param2"/>
</message>
parts immer reihenfolgeunabhängigparts können in Bindung
2. ein part mit komplexen Datentyp:
/message p gunterschiedlich behandelt werden, z.B.:i t i B d d
<message name="doGoogleSearchResponse"><part name="return" type="tns:complexType"/>
ein part in Body der SOAP-Nachricht, ein anderes part in den
</message>
tns:complexType könnte z.B. 2 Parameter enthalten
pHeader
89AG Netzbasierte Informationssysteme http://www.ag-nbi.de
tns:complexType könnte z.B. 2 Parameter enthalten
<portType><portType>
<definitions name="GoogleSearch"targetNamespace="urn:GoogleSearch"targetNamespace= urn:GoogleSearch…xmlns="http://schemas.xmlsoap.org/wsdl/">
<types> </types> <types>…</types> <message name="doGoogleSearch">…</message><message name="doGoogleSearchResponse">…</message><portType name="GoogleSearchPort">…</portType>…
</definitions>
portType
message
types
message
90AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Definition der abstrakten SchnittstelleDefinition der abstrakten Schnittstelle
<message name="doGoogleSearch">…</message><message name="doGoogleSearchResponse"> </message><message name= doGoogleSearchResponse >…</message>
<portTypeportType name="GoogleSearchPort"><operation name="doGoogleSearch">ope at o a e doGoog eSea c
<input message="tns:doGoogleSearch"/><output message="tns:doGoogleSearchResponse"/>
</ope ation></operation><operation name="doSpellingSuggestion">
…/ ti</operation>
…</portTypeportType>
abstrakte Schnittstelle = Menge von abstrakten Operationen (operationoperations)
91AG Netzbasierte Informationssysteme http://www.ag-nbi.de
p ( pp )
Abstrakte Schnittstelle: Abstrakte Schnittstelle: operationoperation
<message name="doGoogleSearch">…</message><message name="doGoogleSearchResponse"> </message><message name doGoogleSearchResponse >…</message>
<portType name="GoogleSearchPort"><operation name="doGoogleSearch">
i i " d G l S h"/<input messageinput message="tns:doGoogleSearch"/><output messageoutput message="tns:doGoogleSearchResponse"/>
</operation>…
</portType>
definiert einfaches Interaktionsmuster mit Eingangs-und Ausgangs-Nachrichten.und Ausgangs Nachrichten.wichtig: verwendet keine Datentypen, sondern abstrakte Nachrichten
92AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Abstrakte Nachricht vs. DatentypAbstrakte Nachricht vs. Datentyp
<message name="doGoogleSearchResponse">ag a doGoog spo s<part name="return" type="tns:GoogleSearchResult"/>
</message>…<portType>
<operation name="doGoogleSearch"><input message="tns:doGoogleSearch"/>
Datentyp
<input message= tns:doGoogleSearch /><output message="tns:doGoogleSearchResponse"/>
</operation> …
</portType>portType
types
messageabstrakte Nachricht
93AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Datentyp / Nachricht /PorttypDatentyp / Nachricht /Porttyp
<types><xsd:schema xmlns:xsd="…" xmlns:tns="…" targetNamespace="…">
<xsd:complexType name="GoogleSearchResult"><xsd:complexType name= GoogleSearchResult >…
</xsd:complexType></schema>
Definition des Datentyps
/</types>
<message name="doGoogleSearch">…</message><message name="doGoogleSearchResponse"> Definition
i g g p
<part name="return" type="tns:GoogleSearchResult"/></message>…
einer abstrakten Nachricht
<portType><operation name="doGoogleSearch">
<input message="tns:doGoogleSearch"/><output message="tns:doGoogleSearchResponse"/>
portType<output message= tns:doGoogleSearchResponse />
</operation> …
</portType> types
messageDefinition einer
abstrakten
94AG Netzbasierte Informationssysteme http://www.ag-nbi.de
/portType ypSchnittstelle
Interaktionsmuster (1)Interaktionsmuster (1)
Einweg (oneway)Einweg (oneway)
<operation name="…"><input message=" "/>
Einweg (oneway)Einweg (oneway)
li S<input message … />
</operation>Client Server
AnfrageAnfrage Antwort (requestAntwort (request response)response)AnfrageAnfrage--Antwort (requestAntwort (request--response)response)
<operation name="…">p<input message="…"/><output message="…"/>
</operation>
Client Server
95AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Interaktionsmuster (2)Interaktionsmuster (2)
Benachrichtigung (notification)Benachrichtigung (notification)
<operation name="…"><output message=" "/>
Benachrichtigung (notification)Benachrichtigung (notification)
Client Server <output message … /></operation>
Client Server
BenachrichtigungBenachrichtigung Antwort (solicitAntwort (solicit response)response)BenachrichtigungBenachrichtigung--Antwort (solicitAntwort (solicit--response)response)
<operation name="…">p<output message="…"/><input message="…"/>
</operation>
Client Server
96AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Abstrakte (!) InteraktionsmusterAbstrakte (!) Interaktionsmuster
Anfrage-Antwort-Muster müssen nicht mit einer Netzwerkkommunikation (z.B. mit HTTP) realisiert werden.
auch mit zwei unabhängigen Kommunikationen (z B E Mails) möglich(z.B. E-Mails) möglich
Realisierung wird erst in der Bindung (bi di ) Realisierung wird erst in der Bindung (binding) festgelegt
97AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Komplexe Interaktionsmuster Komplexe Interaktionsmuster
Registrierung zum Börsentickerg gBestätigung der Registrierungaktueller Börsenkurs (Benachrichtigung)( g g)
Client ServerClient Server
<operation name="…"><input message="…"/><output message="…"/> In WSDL 1.1 output message … /<output message="…"/>
</operation>nicht erlaubt!
98AG Netzbasierte Informationssysteme http://www.ag-nbi.de
FehlermeldungenFehlermeldungen
Anfrage-Antwort Benachrichtigung-Antwort
<operation name="…"><input message="…"/><output message=" "/>
<operation name="…"><output message="…"/><input message=" "/>
g g g
<output message= … /><fault message="…"/>
</operation>
<input message= … /><fault message="…"/>
</operation>
ClientClient ServerServer ClientClient ServerServer
abstrakte Beschreibung von Fehlermeldungenabstrakte Beschreibung von Fehlermeldungenstatt Antwort/Bestätigung kann auch Fehler gemeldet werden
99AG Netzbasierte Informationssysteme http://www.ag-nbi.de
g
BindungenBindungen
<definitions name="GoogleSearch"targetNamespace="urn:GoogleSearch"targetNamespace= urn:GoogleSearch…xmlns="http://schemas.xmlsoap.org/wsdl/">
<types> </types> <types>…</types> <message name="doGoogleSearch">…</message><message name="doGoogleSearchResponse">…</message><portType name="GoogleSearchPort">…</portType><bindingbinding name="GoogleSearchBinding" type="tns:GoogleSearchPort">…
</bindingbinding><binding …>…</binding>…
</definitions>
101AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Grundstruktur von Grundstruktur von bindingbinding
<bindingbinding namename="GoogleSearchBinding" typetype="tns:GoogleSearchPort">ErweiterungselementErweiterungselement<operation name="doGoogleSearch">
Erweiterungselement<input>Erweiterungselement</input></input><output>Erweiterungselement
/
definiert eine Bindungnamename: eindeutiger Name der Bindung</output>
</operation>…
Bindungtypetype: die zu realisierende abstrakte Schnittstelle (portType)
</bindingbinding> mehrere binding-Elemente für eine abstrakte Schnittstelle erlaubt
102AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Grundstruktur von Grundstruktur von bindingbinding
<bindingbinding name="GoogleSearchBinding" type="tns:GoogleSearchPort">ErweiterungselementErweiterungselement<operationoperation name="doGoogleSearch">
Erweiterungselement<input><input>Erweiterungselement</input><output>
Bindung mit sog. <output>Erweiterungselement</output>
</operation>
ErweiterungselementenErweiterungselementen ((extensibilityextensibilityelementselements) kodiertInformationen über Bindung auf </operation>
…</bindingbinding>
Informationen über Bindung auf allen Ebenen:
-Bindung allgemein-einzelnen Operationen-Input- und Output-NachrichtenFehlermeldungen
103AG Netzbasierte Informationssysteme http://www.ag-nbi.de
-Fehlermeldungen
ErweiterungselementeErweiterungselemente
Platzhalter in der WSDL-GrammatikWSDL 1 1 standardisiert drei Bindungen:WSDL 1.1 standardisiert drei Bindungen:1.SOAP
2.HTTPGET & POST Methodenabsolute URI für jedes Portrelative URI für jeder Operationoptional encoding fü Anf age Nach icht (URL optional: encoding für Anfrage-Nachricht (URL encoding, URL replacement)
3.MIMEspezifiziert MIME types (text/xml, multipart/related, ...)
104AG Netzbasierte Informationssysteme http://www.ag-nbi.de
<service><service>
<definitions name="GoogleSearch"targetNamespace="urn:GoogleSearch"…xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- abstrakte Definition --> <types>…</types> <message name="doGoogleSearch">…</message><message name="doGoogleSearchResponse"> </message><message name doGoogleSearchResponse >…</message><portType name="GoogleSearchPort">…</portType>
<!-- konkrete Definition --> <binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">…</binding>
<serviceservice name="GoogleSearchService">…</serviceservice></definitions>
106AG Netzbasierte Informationssysteme http://www.ag-nbi.de
ServiceService
<service name="GoogleSearchService">"G l S h " bi di " G l S h d "<port name="GoogleSearchPort" binding="tns:GoogleSearchBinding">
<soap:address location="http://api.google.com/search/beta2"/>
</port><port>…</port>
</service>
ServiceService = Menge von PortsPortPort = Bindung + Web-AdressePorts eines Service sollen semantisch äquivalente Alternativen einer abstrakten Schnittstelle sein
107AG Netzbasierte Informationssysteme http://www.ag-nbi.de
BindungenBindungen
1.SOAP
2.HTTPGET & POST MethodenGET & POST Methodenabsolute URI für jeden Portrelative URI für jede Operationrelative URI für jede Operationoptional: encoding für Anfrage-Nachricht (URL encoding, URL replacement) g, p )
3.MIMEspezifiziert MIME types (text/xml, multipart/related, ...)
109AG Netzbasierte Informationssysteme http://www.ag-nbi.de
SOAPSOAP--BindungBindung
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">Erweiterungselement soap:bindingErweiterungselement soap:binding<operation name="doGoogleSearch">
Erweiterungselement soap:operation<input><input>Erweiterungselemente soap:header und soap:body</input><output><output>Erweiterungselemente soap:header und soap:body</output>
f l<fault>Erweiterungselement soap:fault</fault>
</operation></binding>
Erweiterungselemente beschreiben Abbildung portType SOAP-Nachricht B ht WSDL 1 1 b t t SOAP 1 1
111AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Beachte: WSDL 1.1 benutzt SOAP 1.1
Bindung allgemein: Bindung allgemein: soap:bindingsoap:binding
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">Erweiterungselement soap:bindingErweiterungselement soap:binding<operation name="doGoogleSearch">
Erweiterungselement soap:operation<input><input>Erweiterungselemente soap:header und soap:body</input><output><output>Erweiterungselemente soap:header und soap:body</output>
f l<fault>Erweiterungselement soap:fault</fault>
</operation></binding>
112AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Bindung allgemein: Bindung allgemein: soap:bindingsoap:binding
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort"><soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
l " " style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="doGoogleSearch">…
</operation></binding>
soap:bindingsoap:binding: gibt an, dass portTypeportType mit SOAP realisiert iststylestyle: entfernter Prozeduraufruf (rpcrpc) oder Messaging (documentdocument)
Üb k lltransporttransport: ÜbertragungsprotokollBeachte: HTTP meint hier HTTP-POST
113AG Netzbasierte Informationssysteme http://www.ag-nbi.de
hier auch möglich: transport="http://…/soap/smtp"transport="http://…/soap/smtp"
SOAPSOAP--Style: Etwas irreführend!Style: Etwas irreführend!
style="rpc"style="rpc" style="document"style="document"
<body><procedure-name>
<body>
<part 1> <part 1><part-1>…<part-1>…
<part-n>…<part-n>
<part-1>…<part-1>…
<part-n>…<part-n>
</procedure-name></body>
</body>
legt lediglich Struktur des SOAP-Nachrichteninhalts (Body) fest, darüber hinaus keine Bedeutung
114AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Abbildung der abstrakten NachrichtenAbbildung der abstrakten Nachrichten
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">Erweiterungselement soap:bindingErweiterungselement soap:binding<operation name="doGoogleSearch">
Erweiterungselement soap:operation<input><input>Erweiterungselemente soap:header und soap:body</input><output><output>Erweiterungselemente soap:header und soap:body</output>
f l<fault>Erweiterungselement soap:fault</fault>
</operation></binding>
115AG Netzbasierte Informationssysteme http://www.ag-nbi.de
soap:bodysoap:body
<operation name="doGoogleSearch">…<input>
<soap:body use "literal"/><soap:body use="literal"/></input><output>…</output>p / p
</operation>
soap:bodysoap:body: Wie wird abstrakte input- bzw. output-Nachricht auf SOAP-Body abgebildet?Nachricht auf SOAP Body abgebildet?
116AG Netzbasierte Informationssysteme http://www.ag-nbi.de
use="literal"use="literal"
<operation name="doGoogleSearch">…<input>
<soap:body use="literal"/><soap:body use="literal"/></input><output>…</output>p / p
</operation>
use="literal"use="literal": abstrakte Nachricht wird unverändert übernommen
117AG Netzbasierte Informationssysteme http://www.ag-nbi.de
use="encoded"use="encoded"
<operation name="doGoogleSearch">…<input>
<soap:body use="encoded" encodingStyle="http://schemas xmlsoap org/soap/encoding/"/>encodingStyle= http://schemas.xmlsoap.org/soap/encoding/ />
</input><output>…</output>
</operation></operation>
use="encoded"use="encoded": Abstrakte Nachricht wird mit Hilfe use= encodeduse= encoded : Abstrakte Nachricht wird mit Hilfe eines bestimmten Verfahrens (encodingStyle) kodiert.hier Kodierungsverfahren von SOAP ( RPC-Struktur, einschl. SOAP-Arrays)
118AG Netzbasierte Informationssysteme http://www.ag-nbi.de
soap:headersoap:header
<operation name="doGoogleSearch">…<input>
<soap:header messsage="tns:doGoogleSearch" part="key"use="literal"/>use te a /
<soap:body parts="q start maxResults …" use="encoded" …/></input><output> </output><output>…</output>
</operation> input-Nachricht wird auf SOAP-Header und -Body verteilt.
Teile der abstrakten Nachricht SOAP-Header
y
für jeden Header Block ein soap:header-ElementStruktur von soap:header analog zu soap:body
119AG Netzbasierte Informationssysteme http://www.ag-nbi.de
soap:addresssoap:address
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort"><soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" <soap:binding xmlns:soap http://schemas.xmlsoap.org/wsdl/soap/
style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>…
</binding>
<port name="GoogleSearchPort" binding="tns:GoogleSearchBinding"><soap:address location="http://api.google.com/search/beta2"/>
</port>
Jedem Port muss genau eine Web-Adresse (soap:address) zugeordnet sein.(soap:address) zugeordnet sein.wichtig: Web-Adresse muss zum Transportprotokoll der Bindung passen.
120AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Beispiel für HTTPBeispiel für HTTP--Bindung (fiktiv)Bindung (fiktiv)
HTTP-GET-Anfrage kodiert alle Parameter in URL:
GET /search/beta2/doGoogleSearch?key=45675353&q=Anfrage&… HTTP/1.1 /
Host: api.google.comContent-Type: text/html; charset="utf-8" Content Length: nnnn Content-Length: nnnn
Antwort soll HTML-Dokument sein
122AG Netzbasierte Informationssysteme http://www.ag-nbi.de
HTTPHTTP--BindungBindung
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"> p p p g p
<http:binding verb="GET"/><operation name="doGoogleSearch">
…<input><http:urlEncoded/></input><output><mime:content type="text/html"/></output>
</operation></binding>
<port name="GoogleSearchPort" binding="tns:GoogleSearchBinding"> <http:address
xmlns:http="http://schemas xmlsoap org/wsdl/http/"xmlns:http= http://schemas.xmlsoap.org/wsdl/http/location="http://api.google.com/search/beta2"/>
</port> browser-basiertes Google mit WSDL beschrieben!
123AG Netzbasierte Informationssysteme http://www.ag-nbi.de
browser basiertes Google mit WSDL beschrieben!
Und XML statt HTML als AntwortUnd XML statt HTML als Antwort
<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">
<http:binding verb="GET"/><http:binding verb= GET /><operation name="doGoogleSearch">…
i h lE d d/ /i<input><http:urlEncoded/></input><output><mime:mimeXml/></output>
</operation>p</binding>
124AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Vorteile von WSDLVorteile von WSDL
sollen unterschiedliche Probleme lösen:sollen unterschiedliche Probleme lösen:InteroperabilitätInteroperabilitätInteroperabilitätInteroperabilität
Interoperabilität zwischen unterschiedlichen Implementierungsplattformen
gemeinsame Technologie für verschiedene AnwendungsgebieteKostenKosten geringe Entwicklungskosten durch allgemein verfügbare Basistechnologienverfügbare Basistechnologien
VorteileVorteile+ Plattformunabhängig+ allgemein akzeptiert und etabliert+ Syntax der Schnittstelle kann genau festgelegt werden+ Unterschiedliche Realisierungen einer abstrakter Schnittstelle
möglich (z.B. SOAP über HTTP und SMTP)
126AG Netzbasierte Informationssysteme http://www.ag-nbi.de
möglich (z.B. SOAP über HTTP und SMTP)
Nachteile von WSDLNachteile von WSDL
schaffen neue Problemeschaffen neue Probleme- nicht alle Entwicklungen werden akzeptiert (vgl. UDDI, REST vs. g p ( g ,
SOAP)- nicht alle geforderte Funktionalitäten sind verfügbar (Sicherheit,
Transaktionen, Schnittstellenversionierung, etc.)Transaktionen, Schnittstellenversionierung, etc.)- eine weitere Schnittstellentechnologie, die gewartet werden muss
NachteileNachteile- verschiedene Protokoll-Bindungen (wie HTTP vs. SMTP) können
unterschiedliche Semantik haben- keine komplexen Interaktionsmuster- keine qualitativen Aspekten (quality of service)
keine Sicherheitsaspekte- keine Sicherheitsaspekte- unzureichend, um automatisch die Kompatibilität (Interoperabilität)
zweier Web Services feststellen zu können Semantic Web Services
127AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Wie geht es weiter?Wie geht es weiter?
SOAP & WSDLSOAP & WSDLPrinzipieller AufbauPrinzipieller AufbauKodierung von RPCsVerarbeitung & ÜbertragungVerarbeitung & ÜbertragungSOAP- und HTTP-BindungenVor- und Nachteile
Vorlesung morgenVorlesung morgenÜberblick über die ProjektarbeitEinführung Projektmanagement
128AG Netzbasierte Informationssysteme http://www.ag-nbi.de
Recommended