Title: Folie 1
1Hauptseminar Web Services W3C Standards I SOAP,
WSDL, UDDI
Tania Fichtner Technische Universität München,
Lehrstuhl für Informatik 24. April 2003, München
2- Agenda
- 0. Web Services
- Einführung, Architektur, Vorgehen
- SOAP
- Beispiel, SOAP Nachricht, Datencodierung
- WSDL
- WSDL, Struktur, Beispiel
- UDDI
- UDDI Registry, Kernbestandteile, Datenmodell,
Beispiel
30. Web Services
4Web Services. Service Orientierte Architektur
- Nachrichtenaustausch
- Dienst Beschreibung
- Veröffentlichen / Finden
5Web Services. Web Service Protocol Stack
61. SOAP. Simple Object Access Protocol
7SOAP. Einführung
- XML basiertes Datentransportprotokoll.
- Umfasst Formatierung von Daten.
- Kann in verschiedenen Nachrichten Systemen
benutzt, und über verschiedene Transportprotokolle
versendet werden. - ? Im Vordergrund entfernte Methodenaufrufe
(RPC) via HTTP. - Ermöglicht Dienst- und Datenaustausch.
8SOAP. Request Response. Ein Beispiel.
RealtimeKursService
SOAP response Wert 4.32
9SOAP. Request Nachricht Ein Beispiel.
SOAP request Was ist der Wert der Aktie
923258?
lt?xml version'1.0' ?gt ltenvEnvelope
xmlnsenv http//www.w3.org/2002/12/soap-envelop
e xmlnsxsihttp//www.w3.org/2001/XMLSchema-
instance xmlnsxsdhttp//www.w3.org/2001/XMLS
chema gt ltenvBodygt ltns1getKurs
xmlnsns1urnRealTimeKursServicegt ltwkn
xsitypexsdstringgt923835lt/wkngt
lt/ns1getKursgt lt/envBodygt lt/envEnvelopegt
SOAP client
10SOAP. Request Nachricht Ein Beispiel.
SOAP request Was ist der Wert der Aktie
923258?
lt?xml version'1.0' ?gt ltenvEnvelope
xmlnsenv http//www.w3.org/2002/12/soap-envelop
e xmlnsxsihttp//www.w3.org/2001/XMLSchema-
instance xmlnsxsdhttp//www.w3.org/2001/XMLS
chema gt ltenvBodygt ltns1getKurs
xmlnsns1urnRealTimeKursServicegt ltwkn
xsitypexsdstringgt923835lt/wkngt
lt/ns1getKursgt lt/envBodygt lt/envEnvelopegt
SOAP client
11SOAP. Response Nachricht Ein Beispiel.
lt?xml version'1.0' ?gt ltenvEnvelope
xmlnsenv http//www.w3.org/2002/12/soap-envelop
e xmlnsxsihttp//www.w3.org/2001/XMLSchema-
instance xmlnsxsdhttp//www.w3.org/2001/XMLS
chemagt ltenvBodygt ltns1getKursResponse
xmlnsns1urnRealTimeKursService
envencodingStyle http//schemas.xmlsoap.or
g/soap/encoding/ gt ltwert
xsitypexsdstringgt4.32lt/wertgt
lt/ns1getKursResponsegt lt/envBodygt lt/envEnvelope
gt
SOAP client
SOAP response Wert 4.32
12SOAP. Response Nachricht Ein Beispiel.
lt?xml version'1.0' ?gt ltenvEnvelope
xmlnsenv http//www.w3.org/2002/12/soap-envelop
e xmlnsxsihttp//www.w3.org/2001/XMLSchema-
instance xmlnsxsdhttp//www.w3.org/2001/XMLS
chemagt ltenvBodygt ltns1getKursResponse
xmlnsns1urnRealTimeKursService
envencodingStyle http//schemas.xmlsoap.or
g/soap/encoding/ gt ltwert
xsitypexsdstringgt4.32lt/wertgt
lt/ns1getKursResponsegt lt/envBodygt lt/envEnvelope
gt
SOAP client
SOAP response Wert 4.32
13SOAP. Response Nachricht Ein Beispiel.
lt?xml version'1.0' ?gt ltenvEnvelope
xmlnsenv http//www.w3.org/2002/12/soap-envelop
e xmlnsxsihttp//www.w3.org/2001/XMLSchema-
instance xmlnsxsdhttp//www.w3.org/2001/XMLS
chemagt ltenvBodygt ltns1getKursResponse
xmlnsns1urnRealTimeKursService
envencodingStyle http//schemas.xmlsoap.or
g/soap/encoding/ gt ltwert
xsitypexsdstringgt4.32lt/wertgt
lt/ns1getKursResponsegt lt/envBodygt lt/envEnvelope
gt
SOAP client
SOAP response Wert 4.32
14SOAP. Nachricht
15SOAP. Header
- Optional.
- Erweiterungen für Nachrichtenpfad.
- Drei Attribute role, mustUnderstand und
relay.
16SOAP. Header
Wer wird angesteuert?
ltenvEnvelope xmlnsenv...gt ltenvHeadergt
ltpeinBlock xmlnspsomeURI"
envrole.../role/next" envmustUnderstand
"true"gt ... lt/peinBlockgt ltqBlockzwei
xmlnsqsomeURI" envrelay"true"gt ...
lt/qBlockzweigt ltrBlockdrei xmlnsrsomeURI"gt
... lt/rBlockdreigt lt/envHeadergt ltenvBody
gt ... lt/envBodygt lt/envEnvelopegt
Muss er interpretiert werden?
Wie wird er verarbeitet?
17SOAP. Body
- Informationen für den Empfänger.
- Fehler im Body signalisiert.
code Spezifiziert Fehler
reason Menschen lesbare Meldung
detail Anwendung spezifisch
node Wer hat Fehler verursacht
role Rolle des Knotens
18SOAP. Datencodierung
- Eigene Datentypdefinition.
- Standard http//www.w3.org/2002/12/soap-encoding
- Attribut envencodingStyle.
- Zwei Kategorien Datentypen
- Einfache atomare Datentypen
- Zusammengesetzte Structs und arrays.
- ? Datentypen wie in jeder Programmiersprache.
192. WSDL. Web Services Description Language
20WSDL. Einführung
- XML basierte Sprache.
- Beschreibung von Web Services.
- Enthält URL des Web Service.
Abstrakte Definition Binding PortType Messages Ty
pes
Implementation Service Port
21WSDL. Struktur eines WSDL Dokuments I
- Die WSDL Spezifikation definiert sechs Hauptteile
ltdefinitionsgt
lttypesgt
ltmessagegt
ltporTypegt
ltoperationgt
ltbindinggt
ltservicegt
ltportgt
22WSDL. Struktur eines WSDL Dokuments II
- WSDL Spezifikation noch zwei weitere Elemente.
ltdefinitionsgt
...
ltimportgt
ltdocumentationgt
23WSDL. Beispiel RealtimeKursService
24WSDL. Spezifikation ltdefinitionsgt
ltdefinitions nameRealtimeKursService
targetnamespacehttp//.../wsdl/
RealtimeKursService.wsdl xmlnshttp//schemas.
xmlsoap.org/wsdl/ xmlnssoaphttp//schemas.xm
lsoap.org/wsdl/soap xmlnstns1http//.../wsdl
/ RealtimeKursService.wsdl
xmlnsxsdhttp//www.w3.org/2001/XMLSchemagt
25WSDL. Spezifikation lttypesgt
- Datentypen die nicht im XML Schema-Standard sind.
lttypesgt ltschema xmlnshttp//www.w3.org/2001/XML
Schema targetNamespaceRealtimeKursService
gt ltcomplexType nameAktienkursgt
ltsequencegt ltelement namename
nillabletrue typexsdstring /gt
ltelement namewkn nillabletrue
typexsdstring /gt ltelement
namekurs typexsddouble /gt
lt/sequencegt lt/complexTypegt ltelement
nameAktienkurs nillabletrue
typetns1Aktienkurs /gt lt/schemagt lt/typesgt
26WSDL. Spezifikation ltmessagegt
- Ausgetauschten Nachrichten.
- Parameter im part Subelement definiert.
ltmessage namegetKursResponsegt ltpart
namereturn typetns1Aktienkurs
/gt lt/messagegt ltmessage namegetKurstRequestgt
ltpart namewkn typexsdstring /gt lt/messagegt
27WSDL. Spezifikation ltportTypegt und ltoperationgt
- Die am Web Service aufrufbaren Methoden.
- Subelement operation.
ltportTypegt ltoperation namegetKurs
parameterOrderwkngt ltinput
messagetns1getKursRequest /gt ltoutput
messagetns1getKursResponse /gt
lt/operationgt lt/portTypegt
28WSDL. Spezifikation ltportTypegt und ltoperationgt
- Kommunikation Muster des operation Elements
Client
Server
One-way
ltinputgt
1.
Request- response
Client
Server
ltinputgt
ltoutputgt
2.
1.
Solicit- response
Client
Server
ltoutputgt
ltinputgt
2.
Client
Server
Notification
ltoutputgt
29WSDL. Spezifikation ltbindinggt
- Beschreibt wie ein Web Service mit dem Client
kommuniziert (HTTP GET, HTTP POST, SOAP).
ltbinding nameRealtimekursService-Binding
typetns1RealtimeKursServicegt ltsoapbinding
stylerpc transport...soap/http/gt
ltoperation namegetKursgt ltsoapoperation
soapActiongetKurs/gt ltinputgt
ltsoapbody useencoded
encodingStyle.../encoding
namespace.../RealtimeKursService/gt
lt/inputgt ltoutputgt ltsoapbody
useencoded encodingStylehttp//...
/encoding namespace.../RealtimeKursServ
ice/gt lt/outputgt lt/operationgt lt/bindinggt
30WSDL. Spezifikation ltservicegt und ltportgt
- Adresse des Web Services.
- port Registrierungs- name des Web Services.
- adress URL des Web Service.
ltservice nameRealtimeKursService_Servicegt
ltport nameRealtimeKursService
bindingRealtimekursService-Bindinggt
ltsoapaddress locationhttp//localhost
8080/axis/ services/RealtimeKursService/gt
lt/portgt ltdocumentationgtWSDL File für
RealtimeKursService lt/documentationgt lt/servicegt
313. UDDI. Universal Description, Discovery
and Integration
32UDDI. Einführung
- Standard um Web Services zugänglich machen.
UDDI Registry
Business Service Technik
Sucht nach Dienst
WSDL
Dienste- Registry
veröffentlicht
UDDI
- Spezifikation
- Implementation
Nimmt Dienst in Anspruch
Dienste- Konsument
Dienste- Anbieter
33UDDI. Registry
- Informationen in drei Kategorien aufgeteilt
Business
White Pages
Service
Yellow Pages
Technik
Green Pages
34UDDI. Kernbestandteile
- Datenstruktur
-
- ? XML Schema
2. API Spezifikation ?publishing
inquiry functions.
UDDI
3. Replikations- Spezifikation
4. Spezifikation für Registry Anbieter
35UDDI. Datenmodell
- UDDI basiert auf XML Schema.
ltBusinessEntitygt lt/BusinessEntitygt
36UDDI. Beispiel
- http//uddi.microsoft.com
- UDDI Suchpfad
BusinessEntity ? BusinessService ?
BindingTemplate ? tModel
37UDDI. Beispiel XMethods
38Zusammenfassung
- Anforderungen einer Web Service Architektur
- Kompatibilität
- Integration im WWW
- Skalierbarkeit Erweiterbarkeit
- Benutzer- Web- freundlich
- Sicherheit
- Funktionssicherheit / Zuverlässigkeit
- Management
?
?
39Vielen Dank für Ihre Aufmerksamkeit!
40Anhang I. Back Up
41SOAP Nachricht. XML Schema für Element env
... ltxselement nameEnvelope
typetnsEnvelopegt ltxscomplexType
nameEnvelopegt ltxssequencegt ltxselement
reftnsHeader minOccurs0/gt ltxselement
reftnsBody minOccurs1/gt ltxsany
namespaceother minOccurs0 maxOccurs
unbounded processContentslax/gt lt/xssequ
encegt ...
42SOAP Header. Attribut role
- role-Attribut
- Definiert welcher SOAP-Knoten sich um die
Auswertung des Header Blocks kümmerns soll. - Es gibt 3 standardisierte Rollen
- none, next, ultimateReceiver
43SOAP Header. Attribut mustUnderstand
- mustUnderstand-Attribut
- Teilt dem jeweiligen SOAP-Knoten mit, ob er den
zugehörigen Header-Block interpretieren muss.
44SOAP Header. Attribute
- relay-Attribut
- Zeigt an was getan werden muss, falls der
Header-Block nicht vom angesteuerten SOAP-Knoten
verarbeitet wurde.
Role Role Header block Header block
Short-name Assumed Understood Processed Forwarded
next Yes Yes No, unless reinserted
next Yes No No, unless relay "true"
user-defined Yes Yes No, unless reinserted
user-defined Yes No No, unless relay "true"
user-defined No n/a Yes
ultimateReceiver Yes Yes n/a
ultimateReceiver Yes No n/a
none No n/a Yes
45SOAP. Fault-Beispiel
ltenvBodygt ltenvFaultgt ltenvCodegt
ltenvValuegtClient.Authenticationlt/envValuegt
ltenvSubcodegt ltenvValuegtrpcBadArgumentslt/envV
aluegt lt/envSubcodegt lt/envCodegt ltenvReason
gt ltenvText xmllang"de"gtLogin-Daten sind
ungültiglt/envTextgt ltenvtext
xmllang"en-US"gtLogin Data not
validlt/envTextgt lt/envReasongt ltenvDetailgt
lteFehlerDetails xmlnse"http//www.beispiel.org/
faults"gt ltemessagegtName does not match
logindatalt/emessagegt lt/eFehlerDetailsgt lt/en
vDetailgt lt/envFaultgt lt/envBodygt
46SOAP. Datentypen Einfache Datentypen
- Atomare Datentypen.
- Einfache Datentypen der XML Schema Spezifikation.
lt?xml version'1.0' ?gt ltenvEnvelope
xmlnsenv"http//www.w3.org/2002/12/soap-envelope
" xmlnsenv-ENC"http//www.w3.org/2002/12/soap
-encoding" xmlnsxsd"http//www.w3.org/2001/
XMLSchema" xmlnsxsi"http//www.w3.org/2001/XM
LSchema-instance" env-ENCencodingstyle"http
//www.w3.org/2002/12/soap- encoding"gt
ltenvBodygt ltgetKursgt ltwkn
xsitypexsdstringgt923835lt/wkngt lt/getKursgt lt/e
nvBodygt lt/envEnvelopegt
47SOAP. Datentypen Zusammengesetzte Datentypen
- SOAP Arrays mit xsitype- und arrayType-
Attributen festgelegt. - Multidimensionale Arrays möglich.
ltenvBodygt ltgetKursResponse
envencodingStylehttp//www.w3.org/2002/12/soap-
encoding"gt ltReturn
xmlnsns1http//www.w3.org/2002/12/soap-encoding
xsitypens1Array ns1arrayTypexsd
string3gt ltitem xsitypexsdstringgt923
835lt/itemgt ltitem xsitypexsdstringgtIBMlt
/itemgt ltitem xsitypexsddoublegt4.32lt/it
emgt lt/Returngt lt/getKursResponsegt lt/envBodygt
48SOAP. Datentypen Zusammengesetzte Datentypen
- Struct Zusammensetzung mehrere atomarer
Datentypen zu einem Hochtyp.
... ltenvBodygt ltgetKursResponse
envencodingStylehttp//www.w3.org/2002/12/soap-
encoding"gt ltaktiegt ltwkn
xsitypexsdstringgt923835lt/wkngt ltname
xsitypexsdstringgtIBMlt/namegt ltwert
xsitypexsddoublegt4.32lt/wertgt lt/aktiegt
lt/getKursResponsegt lt/envBodygt ...