SOAP und WSDL in der Praxis Wie wird SOAP/WSDL verwendet?

Transcrição

SOAP und WSDL in der Praxis Wie wird SOAP/WSDL verwendet?
Heutige Vorlesung
SOAP und WSDL in der
Praxis
;
Aufbau von WSDL-Beschreibungen
;
Protokoll-Bindungen in WSDL
;
Google-WSDL lesen und erweitern können
;
Vor- und Nachteile von WSDL
heute
ƒ Wie wird SOAP/WSDL verwendet?
ƒ .net, Apache Axis, XMLSpy
ƒ dynamische Einbindung zur Laufzeit
ƒ Einbindung zur Entwicklungszeit
ƒ Anforderungen der Praxis
ƒ Erweiterungen von SOAP/WSDL
© Klaus Schild, 2004
1
© Klaus Schild, 2004
2
.net und Apache Axis
zwei Mö
Möglichkeiten
ƒ Web-Dienst aufrufen
ƒ Web-Dienst anbieten
Wie wird SOAP/WSDL
verwendet?
© Klaus Schild, 2004
3
WebWeb-Dienst aufrufen
4
WebWeb-Dienst anbieten
WSDL Î Stubs
ƒ Aus WSDL-Beschreibung automatisch Schnittstelle zur
Anwendung (Stubs) generieren
ƒ Stubs abstrahieren von SOAP und vom konkreten
Übertragungsprotokoll.
ƒ Web-Dienst erscheint als lokale Bibliothek.
© Klaus Schild, 2004
© Klaus Schild, 2004
5
Anwendungsprogramm Î WSDL
ƒ Anwendungslogik implementieren
ƒ Anwendung Î Server
ƒ aus Anwendungsprogramm automatisch WSDLBeschreibung erzeugen
ƒ Übersetzung
Datenstruktur Î Datentypen eines XML-Schemas
nicht immer automatisch möglich
© Klaus Schild, 2004
6
1
XMLSpy
WebWeb-Dienste austesten mit XMLSpy
WebWeb-Dienste austesten
ƒ externen Web-Dienst austesten:
Funktionalität, Reaktionszeit
WSDL Î SOAPSOAP-Anfrage Î SOAPSOAP-Antwort
ƒ eigenen Web-Dienst austesten:
Testen, ob eigener Web-Dienst auch über WSDLBeschreibung abrufbar
ƒ
ƒ
ƒ
ƒ
© Klaus Schild, 2004
7
Was nun verwenden?
aus WSDL-Beschreibung SOAP-Anfrage generieren
Parameter der SOAP-Anfrage anpassen
SOAP-Anfrage per Knopfdruck an Web-Dienst senden
Antwort als SOAP
© Klaus Schild, 2004
8
WebWeb-Dienste: Die Vision
XMLSpy
Beispiel
+ zum schnellen austesten eines Web-Dienstes geeignet
ƒ personalisierte Informations-Webseite
+ SOAP-Anfrage und -Antwort sichtbar
ƒ Benutzer möchte Echtzeitkurse von
bestimmter Aktie einer bestimmten
Börse
+ keine aufwendige Installation notwendig
-
keine Anwendungsentwicklung möglich
ƒ Informations-Webseite sucht
entsprechenden Web-Dienst für
Echtzeitkurse
.net
+ Anwendungsentwicklung möglich
-
aufwendige Installation
ƒ Informations-Webseite bindet den
Web-Dienst automatisch ein
Apache Axis
+ Anwendungsentwicklung unter Java möglich
-
dynamische Einbindung
Einbindung zur
zur Laufzeit
Laufzeit
dynamische
aufwendige Installation
© Klaus Schild, 2004
9
© Klaus Schild, 2004
10
Aufruf des Dienstes
Dynamische Einbindung zur Laufzeit
öffentliches
Verzeichnis
1. Anwendung sucht in Verzeichnis einen Web-Dienst, z.B.
für Echtzeitkurse von Aktien
2. Suchergebnis: WSDL-Beschreibung
3. WSDL-Beschreibung Î Stubs
4. Anwendung ruft Web-Dienst als lokale Bibliothek auf
automatisch
Anbieter
Dienst abrufen
SOAP-Nachrichten
Dienst:
Standard
manuell
Nachfrager
ƒ geg.: WSDL-Beschreibung
WSDLBeschreibung
WSDLBeschreibung
Dienst:
kein Standard
11
ƒ WSDL beschreibt zwar
Syntax der Schnittstelle,
nicht aber die Bedeutung
der Prozedur/Parameter.
ƒ Bedeutung muss außerhalb
von WSDL festgelegt
(standardisiert) werden
Dienst muss
muss automatisch
automatisch gefunden
gefunden
Dienst
und aufgerufen
aufgerufen werden.
werden.
und
© Klaus Schild, 2004
ƒ Um Web-Dienst automatisch
abzurufen, muss er
standardisiert sein:
© Klaus Schild, 2004
12
2
Beispiel
Beispiel
Float Aktienkurs(Integer WKN, String Boersenplatz)
Boersenplatz)
Float Aktienkurs(Integer WKN, String Boersenplatz)
Boersenplatz)
ƒ solcher Stub kann automatisch aus WSDL-Beschreibung
generiert werden
ƒ solcher Stub kann automatisch aus WSDL-Beschreibung
generiert werden
aber:
aber:
ƒ Was bedeutet WKN?
ƒ Was bedeutet WKN?
ƒ Was bedeutet Boersenplatz?
Wie wird der Xetra-Handel in Frankfurt kodiert?
ƒ Was bedeutet Boersenplatz? DLL
SD
W
Wie wird der xetra-Handel
inS Frankfurt
kodiert?
n
W
voonn erddeen
v
b
l
r
b t wwe
a
l
ƒ Was bedeutet Aktienkurs?
h
a
errh ert
außße rdiissiier Wie lange verzögert?
Echtzeit oder
sss auverzögert?
ad
u
d
s
a
mu tannd r
m
a
ƒ Was bedeutet
Ergebnistyp
Float?
s
t
s
Welche Währung?
ƒ Was bedeutet Aktienkurs?
Echtzeit oder verzögert? Wie lange verzögert?
ƒ Was bedeutet Ergebnistyp Float?
Welche Währung?
© Klaus Schild, 2004
13
automatisch
ƒ Übersetzung WSDL Î Stubs automatisch
ƒ Integration von Stubs in Anwendungslogik automatisch
manuell bedeutet:
ƒ Übersetzung WSDL Î Stubs automatisch
ƒ Integration von Stubs in Anwendungslogik programmiert
Entwickler
© Klaus Schild, 2004
15
Web-Dienste: Die Realität
Dienst finden
automatisch
Dienst:
ƒ Standard
ƒ kostenlos
ƒ unkritisch
manuell
Dienst abrufen
automatisch
manuell
Dienst:
ƒ Standard
ƒ kostenpflichtig
oder kritisch
Dienst:
kein Standard
automatisch
Dienst:
kein Standard
Dienst finden
Dienst abrufen
Dienst:
Standard
Dienst:
ƒ Standard
ƒ kostenlos
ƒ unkritisch
manuell
automatisch
Dienst abrufen
automatisch bedeutet:
14
Dienst finden
manuell
Aufruf des Dienstes
© Klaus Schild, 2004
manuell
Dienst:
ƒ Standard
ƒ kostenpflichtig
oder kritisch
Dienst:
kein Standard
ƒ geg.: standardisierter
Web-Dienst
ƒ ges.: Anbieter des WebDienstes, einschl.
WSDL-Beschreibung
ƒ Um Anbieter automatisch
zu finden, muss WebDienst kostenlos und
unkritisch sein.
ƒ andernfalls Rücksprache
und Verhandlungen nötig
ƒ macht keinen Sinn, da standardisierter Web-Dienst auch
automatisch aufgerufen werden kann
© Klaus Schild, 2004
16
Fazit
zwei Möglichkeiten, Web-Dienst einzubinden:
ƒ standardisierte
Informationsdienste
(kostenlos und
unkritisch)
zur Laufzeit
ƒ Vollautomatisches Einbinden prinzipiell mit WSDL
möglich, wird aber Ausnahme bleiben.
ƒ standardisierte
Informationsdienste
(kostenpflichtig
und/oder kritisch)
zur Entwicklungszeit
ƒ Google-Web-Dienst,
E-Business
ƒ kein vollautomatisches Einbinden, aber WSDL
erleichtert das Einbinden ganz erheblich
ƒ Grund: nur für standardisierte, kostenlose und
unkritische Dienste möglich
ƒ Grund: aus WSDL-Beschreibung können automatisch
Stubs generiert werden
© Klaus Schild, 2004
17
© Klaus Schild, 2004
18
3
Beispiel
Zulieferer
Unternehmen
Anforderungen der
Praxis
Bestellung
(SOAP-Nachricht)
ƒ Absender eindeutig identifizierbar?
ƒ Nachricht unversehrt?
ƒ Nachricht genau einmal übermittelt?
ƒ Antwort nach bestimmter Zeit garantiert?
ƒ Passt die Nachricht in den Geschäftsprozess?
z.B. keine Bestellung ohne vorherige Bestellanfrage
© Klaus Schild, 2004
19
Realisierung mit SOAP
© Klaus Schild, 2004
20
Zusatzinformationen im SOAPSOAP-Briefkopf
ƒ digitale Signatur
ƒ Absender eindeutig identifizierbar?
ƒ Nachricht unversehrt?
Î Identifikation des Absenders
ƒ Nachricht genau einmal übermittelt?
ƒ Antwort nach bestimmter Zeit garantiert?
ƒ Absender eindeutig identifizierbar?
ƒ Nachricht unversehrt?
ƒ Nachricht genau einmal übermittelt?
ƒ Antwort nach bestimmter Zeit garantiert?
ƒ Passt die Nachricht in den Geschäftsprozess?
Î Unversehrtheit der Nachricht
ƒ Passt die Nachricht in den Geschäftsprozess?
ƒ Anforderung einer Empfangsbestätigung
Î Nachricht mindestens einmal zugestellt
ƒ keine der Anforderungen von SOAP direkt unterstützt
ƒ eindeutige Nachrichtenreferenz
ƒ können aber als Zusatzinformationen im Briefkopf der
SOAP-Nachricht realisiert werden
Î Erkennung von Duplikaten
ƒ Verweis auf vorherige Nachrichten, z.B. Bestellanfrage
Î Berücksichtigung des Geschäftsprozesses (Workflows)
© Klaus Schild, 2004
21
So einfach ist es dann doch nicht…
© Klaus Schild, 2004
22
Beispiel für Interoperabilität
Zulieferer
Unternehmen
Bestellung
(SOAP-Nachricht)
ƒ Was interoperabel bedeutet, kann am Beispiel Fax
verdeutlicht werden.
Problem der Interoperabilität (Zusammenarbeitsfähigkeit):
ƒ Fax tatsächlich uneingeschränkt interoperabel:
ƒ Zulieferer soll ersetzt werden
ƒ Neuer Zulieferer bekommt WSDL-Beschreibung.
ƒ Ein Faxgerät kann durch ein anderes ersetzt werden,
ohne mit potentiellen Sendern Protokolle auszuhandeln.
ƒ WSDL beschreibt zwar Syntax der Schnittstelle, einschl.
der Zusatzinformationen im Briefkopf.
ƒ Z.B. muss nicht geklärt werden, wie Empfang eines Fax
bestätigt wird.
ƒ Was die Zusatzinformationen bedeuten, muss aber
zwischen Unternehmen und Zulieferer geklärt werden.
ƒ Grund: Es gibt einen etablierten internationalen FaxStandard.
© Klaus Schild, 2004
23
© Klaus Schild, 2004
24
4
Standardisierung von Erweiterungen
Workflow
BPEL4WS
WS
Security
WS Reliable
Messaging
Etablierte Standards
WS
Transactions
XMLSchema, WSDL, WS Policy
XML, SOAP, WS Addressing
HTTP, HTTPS, SMTP
WS
Security
Zusicherungen
Beschreibung
WS Reliable
Messaging
WS
Transactions
Zusicherungen
Beschreibung
XMLSchema, WSDL, WS Policy
Nachrichten
Nachrichten
XML, SOAP, WS Addressing
Transport
Transport
HTTP, HTTPS, SMTP
ƒ sehr gute Übersicht:
ƒ etablierte Standards in grün
http://www-306.ibm.com/software/solutions/webservices/pdf/
SecureReliableTransactedWSAction.pdf
© Klaus Schild, 2004
Workflow
BPEL4WS
ƒ (noch) nicht etablierte Standards in rot
25
© Klaus Schild, 2004
26
Beispiel: erweiterte SOAPSOAP-Nachricht
Zuverlässige
Kommunikation
WS Reliable
Reliable Messaging
Messaging wird
wird exemplarisch
exemplarisch betrachtet
betrachtet
WS
© Klaus Schild, 2004
27
Beispiel: Buchungsanfrage
© Klaus Schild, 2004
28
Asynchrone Buchungsprozedur
ƒ Unternehmen ruft Buchungsprozedur eines
Reiseunternehmens auf
RPC-Aufruf
Client
ƒ Buchung nimmt häufig längere Zeit in Anspruch.
RPC abgeschlossen
auf accept
warten
Anfrage
(request)
ƒ deshalb asynchroner Aufruf der Buchungsprozedur
Server
Anfrage
akzeptiert
(accept)
Ergebnis
Aufruf lokaler
Prozedur
ƒ Buchungsanforderung wird vom Client aufgerufen
ƒ Client wartet bis er vom Server Bestätigung der
Annahme bekommen hat.
ƒ Server schickt später dann das endgültige Ergebnis.
© Klaus Schild, 2004
29
© Klaus Schild, 2004
30
5
Zuverlässige Buchungsanfrage
RPC-Aufruf
WS Reliable Messaging
RPC abgeschlossen
ƒ XML-Standard für zuverlässige Kommunikation
auf accept
warten
Client
Anfrage
(request)
Server
Anfrage
akzeptiert
(accept)
ƒ kann im Briefkopf von SOAP-Nachrichten oder in
WSDL-Beschreibungen verwendet werden
Ergebnis
ƒ gemeinsamer Vorschlag von BEA, IBM, Microsoft und
TIBCO
Aufruf lokaler
Prozedur
ƒ Anfrage (request):
genau einmal zustellen
ƒ von März 2004
ƒ Annahme (accept):
mindestens einmal zustellen
ƒ noch kein etablierter Standard
ƒ Ergebnis:
genau einmal zustellen
Î http://www-106.ibm.com/developerworks/library/ws-rm/
ƒ Annahme immer vor Ergebnis, ansonsten wird evtl.
zweite Buchungsanfrage gestellt.
ÎAnnahme und
und Ergebnis
Ergebnis bilden
bilden eine
eine Sequenz
Sequenz
ÎAnnahme
© Klaus Schild, 2004
31
Beispiel
© Klaus Schild, 2004
32
Beispiel
ƒƒ
ƒƒ
ƒƒ
ƒƒ
Sequenz von
von drei
drei Nachrichten
Nachrichten
Sequenz
jede
Nachricht
genau
einmal zustellen
zustellen
jede Nachricht genau einmal
Reihenfolge beachten
beachten
Reihenfolge
Empfang
der
Sequenz bestätigen
bestätigen
Empfang der Sequenz
© Klaus Schild, 2004
33
Sequenz von SOAPSOAP-Nachrichten senden
© Klaus Schild, 2004
34
Erste SOAPSOAP-Nachricht
<S:Envelopexmlns:wsrm="http://schemas.xmlsoap.org/ws/2004/03/rm"
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2004/03/rm"
<S:Envelope
xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
http://Business456.com/guid/71e0654e-5ce8-477b-bb9d-34f05cfcbc9e
http://Business456.com/guid/71e0654e-5ce8-477b-bb9d-34f05cfcbc9e
</wsa:MessageID>
</wsa:MessageID>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:ReplyTo>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
</wsa:ReplyTo>
</wsa:ReplyTo>
WS RM
RM benutzt
benutzt WS
WS
ƒƒ WS
<wsrm:Sequence>
<wsrm:Sequence>
Addressing
Addressing
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:MessageNumber>1</wsrm:MessageNumber>
Nachricht hat
hat eindeutige
eindeutige
<wsrm:MessageNumber>1</wsrm:MessageNumber>
ƒƒ Nachricht
</wsrm:Sequence>
</wsrm:Sequence>
Referenz(MessageID)
(MessageID)
Referenz
</S:Header>…
…
</S:Header>
© Klaus Schild, 2004
35
© Klaus Schild, 2004
36
6
Erste SOAPSOAP-Nachricht
Zweite SOAPSOAP-Nachricht
<S:Envelopexmlns:wsrm="http://schemas.xmlsoap.org/ws/2004/03/rm"
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2004/03/rm"
<S:Envelope
xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
WS RM
RM benutzt
benutzt WS
WS Utilities
Utilities
ƒƒ WS
http://Business456.com/guid/71e0654e-5ce8-477b-bb9d-34f05cfcbc9e
http://Business456.com/guid/71e0654e-5ce8-477b-bb9d-34f05cfcbc9e
ƒ
Sequenz
hat
eindeutige
Referenz(Identifier)
(Identifier)
</wsa:MessageID>
ƒ Sequenz hat eindeutige Referenz
</wsa:MessageID>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
ƒ
erste
Nachricht
der
Sequenz
(MessageNumber)
ƒ erste Nachricht der Sequenz (MessageNumber)
<wsa:ReplyTo>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
</wsa:ReplyTo>
</wsa:ReplyTo>
<wsrm:Sequence>
<wsrm:Sequence>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:MessageNumber>1</wsrm:MessageNumber>
<wsrm:MessageNumber>1</wsrm:MessageNumber>
</wsrm:Sequence>
</wsrm:Sequence>
</S:Header>…
…
</S:Header>
<S:Envelope…>
…>
<S:Envelope
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
http://Business456.com/guid/daa7d0b2-c8e0-476e-a9a4-d164154e38de
http://Business456.com/guid/daa7d0b2-c8e0-476e-a9a4-d164154e38de
</wsa:MessageID>
</wsa:MessageID>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:ReplyTo>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
</wsa:ReplyTo>
</wsa:ReplyTo>
<wsrm:Sequence>
<wsrm:Sequence>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:MessageNumber>2</wsrm:MessageNumber>
<wsrm:MessageNumber>2</wsrm:MessageNumber>
</wsrm:Sequence>
</wsrm:Sequence>
neue Nachrichten-Referenz
Nachrichten-Referenz
ƒƒ neue
</S:Header>......
</S:Header>
© Klaus Schild, 2004
37
Dritte und letzte SOAPSOAP-Nachricht
alte Sequenz-Referenz
Sequenz-Referenz
ƒƒ alte
© Klaus Schild, 2004
38
Bestätigung
<S:Envelope…>
…>
<S:Envelope
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
http://Business456.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
http://Business456.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
</wsa:MessageID>
</wsa:MessageID>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:To>http://fabrikam123.com/serviceB/123</wsa:To>
<wsa:ReplyTo>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
<wsa:Address>http://Business456.com/serviceA/789</wsa:Address>
</wsa:ReplyTo>
</wsa:ReplyTo>
<wsrm:Sequence>
<wsrm:Sequence>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:MessageNumber>3</wsrm:MessageNumber>
<wsrm:MessageNumber>3</wsrm:MessageNumber>
<wsrm:LastMessage/>
<wsrm:LastMessage/>
neue Nachrichten-Referenz
Nachrichten-Referenz
</wsrm:Sequence>
ƒƒ neue
</wsrm:Sequence>
</S:Header>…
…
</S:Header>
alte Sequenz-Referenz
Sequenz-Referenz
ƒƒ alte
© Klaus Schild, 2004
39
Bestätigung
© Klaus Schild, 2004
40
Zweite Nachricht nochmals senden
<S:Envelope…>
…>
<S:Envelope
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
http://fabrikam123.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
http://fabrikam123.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
</wsa:MessageID>
</wsa:MessageID>
<wsa:To>http://Business456.com/serviceA/789</wsa:To>
<wsa:To>http://Business456.com/serviceA/789</wsa:To>
<wsa:ReplyTo>
<wsa:ReplyTo>
<wsa:Address>http://fabrikam123.com/serviceB/123</wsa:Address>
<wsa:Address>http://fabrikam123.com/serviceB/123</wsa:Address>
</wsa:ReplyTo>
</wsa:ReplyTo>
<wsrm:SequenceAcknowledgment>
<wsrm:SequenceAcknowledgment>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:AcknowledgmentRangeUpper="1"
Upper="1"Lower="1"/>
Lower="1"/>
<wsrm:AcknowledgmentRange
<wsrm:AcknowledgmentRangeUpper="3"
Upper="3"Lower="3"/>
Lower="3"/>
<wsrm:AcknowledgmentRange
</wsrm:SequenceAcknowledgment>
</wsrm:SequenceAcknowledgment>
</S:Header>…
…
</S:Header>
erste und
und dritte
dritte Nachricht
Nachricht angekommen
angekommen
ƒƒ erste
© Klaus Schild, 2004
41
© Klaus Schild, 2004
42
7
Zweite Nachricht nochmals senden
Zweite Nachricht nochmals senden
<S:Envelope…>
…>
<S:Envelope
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
http://Business456.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
http://Business456.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
</wsa:MessageID>
</wsa:MessageID>
…
…
<wsrm:Sequence>
<wsrm:Sequence>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:MessageNumber>2</wsrm:MessageNumber>
<wsrm:MessageNumber>2</wsrm:MessageNumber>
</wsrm:Sequence>
</wsrm:Sequence>
<wsrm:AckRequested>
zweite Nachricht
Nachricht der
der
<wsrm:AckRequested>
ƒƒ zweite
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
Sequenz
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
Sequenz
</wsrm:AckRequested>
</wsrm:AckRequested>
neue Nachrichten-Referenz
Nachrichten-Referenz
ƒƒ neue
</S:Header>…
…
</S:Header>
<S:Envelope…>
…>
<S:Envelope
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
http://Business456.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
http://Business456.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
</wsa:MessageID>
</wsa:MessageID>
…
…
<wsrm:Sequence>
<wsrm:Sequence>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:MessageNumber>2</wsrm:MessageNumber>
<wsrm:MessageNumber>2</wsrm:MessageNumber>
</wsrm:Sequence>
</wsrm:Sequence>
<wsrm:AckRequested>
<wsrm:AckRequested>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
</wsrm:AckRequested>
</wsrm:AckRequested>
Empfangsbestätigung für
für
</S:Header>…
…
ƒƒ Empfangsbestätigung
</S:Header>
alte Sequenz-Referenz
Sequenz-Referenz
ƒƒ alte
© Klaus Schild, 2004
43
Endgültige Bestätigung
Sequenz verlangt
verlangt
Sequenz
© Klaus Schild, 2004
44
Endgültige Bestätigung
<S:Envelope…>
…>
<S:Envelope
<S:Header>
<S:Header>
<wsa:MessageID>
<wsa:MessageID>
alle 33 Nachrichten
Nachrichten empfangen
empfangen
http://fabrikam123.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
ƒƒ alle
http://fabrikam123.com/guid/0baaf88d-483b-4ecf-a6d8-a7c2eb546817
</wsa:MessageID>
neue Nachrichten-Referenz
Nachrichten-Referenz
</wsa:MessageID>
ƒƒ neue
<wsa:To>http://Business456.com/serviceA/789</wsa:To>
<wsa:To>http://Business456.com/serviceA/789</wsa:To>
alte Sequenz-Referenz
Sequenz-Referenz
ƒƒ alte
<wsa:ReplyTo>
<wsa:ReplyTo>
<wsa:Address>http://fabrikam123.com/serviceB/123</wsa:Address>
<wsa:Address>http://fabrikam123.com/serviceB/123</wsa:Address>
</wsa:ReplyTo>
</wsa:ReplyTo>
<wsrm:SequenceAcknowledgment>
<wsrm:SequenceAcknowledgment>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsu:Identifier>http://Business456.com/RM/ABC</wsu:Identifier>
<wsrm:AcknowledgmentRangeUpper="3"
Upper="3"Lower="1"/>
Lower="1"/>
<wsrm:AcknowledgmentRange
</wsrm:SequenceAcknowledgment>
</wsrm:SequenceAcknowledgment>
</S:Header>…
…
</S:Header>
© Klaus Schild, 2004
45
© Klaus Schild, 2004
46
Was gibt es noch?
Integration in SOAP oder WSDL?
ƒ wsu:Expires:
wsu:Expires Verfallsdatum und -zeit
ƒ WS-RM-Elemente können im Briefkopf einer SOAPNachricht erscheinen.
ƒ wsrm:InactivityTimeout:
wsrm:InactivityTimeout wie lange Empfänger höchstens
auf nächste Nachricht warten muss
ƒ Elemente wie z.B.
ƒ wsrm:SequenceFault:
wsrm:SequenceFault Fehlermeldung bzgl. Sequenzen,
z.B.:
ƒ wsrm:SequenceTerminated
ƒ wsrm:InvalidAcknowledgement
<wsrm:DeliveryAssurance Value="wsrm:AtLeastOnce"/>
machen in SOAP-Nachrichten allerdings keinen Sinn.
ƒ Solche Elemente werden in einer WSDL-Beschreibung
integriert.
ƒ wsrm:DeliveryAssurance:
wsrm:DeliveryAssurance verlangte Zuverlässigkeit, z.B.:
ƒ AtLeastOnce
ƒ InOrder
© Klaus Schild, 2004
Wie werden
werden WS-RM-Elemente
WS-RM-Elemente in
in
Wie
WSDL integriert?
integriert?
WSDL
47
© Klaus Schild, 2004
48
8
Zweistufige Integration in WSDL
Beispiel
<wsdl:definitionsname="PurchaseOrder"
name="PurchaseOrder"…>
…>
<wsdl:definitions
<wsdl:messagename="OrderRequest">
name="OrderRequest">
<wsdl:message
<wsp:Policy>
<wsp:Policy>
<wsrm:DeliveryAssuranceValue="wsrm:ExactlyOnce"
Value="wsrm:ExactlyOnce"
<wsrm:DeliveryAssurance
wsp:Usage="wsp:Required"/>
wsp:Usage="wsp:Required"/>
</wsp:Policy>
</wsp:Policy>
…
…
</wsdl:message>
</wsdl:message>
<wsdl:messagename="OrderAccept">
name="OrderAccept">
<wsdl:message
hier wsp:Policy
wsp:Policy als
als Erweiterungselement
Erweiterungselement
… ƒƒ hier
…
</wsdl:message>
</wsdl:message>
tatsächlich erlaubt
erlaubt aber
aber WSDL
WSDL für
für message
message
ƒƒ tatsächlich
…
…
keine Erweiterungselemente
Erweiterungselemente
und portType
portType keine
und
</wsdl:definitions>
</wsdl:definitions>
1. WS-RM-Elemente werden als Kommunikationsregeln
(policies) formuliert.
Formulierung mit Hilfe von WS Policy
2. Diese Kommunikationsregeln werden dann in WSDL
integriert.
ƒ Gleiches Vorgehen auch bei anderen Erweiterungen:
WS RM
WS Security
WS Addressing
…
WS Policy
daher etwas
etwas kompliziertere
kompliziertere Kodierung
Kodierung mit
mit
ƒƒ daher
Attributen
Attributen
WSDL
© Klaus Schild, 2004
49
© Klaus Schild, 2004
50
Bewertung der Erweiterungen
+ einzelne Erweiterungen unabhängig voneinander
+ meist gemeinsame Vorschläge von Microsoft und IBM
Bewertung der
Erweiterungen
© Klaus Schild, 2004
-
noch keine etablierten Standards
-
WS Policy Grammatik zur Festlegung von qualitativen
Aspekten, einzelne qualitative Aspekte müssen noch
standardisiert werden
prinzipiellen Hürden,
Hürden, jedoch
jedoch noch
noch
Keine prinzipiellen
Keine
ein langer
langer Standardisierungsweg
Standardisierungsweg zu
zu gehen!
gehen!
ein
51
© Klaus Schild, 2004
52
Wie geht es weiter?
;
Wie wird WSDL verwendet?
ƒ .net, Apache Axis, XMLSpy
ƒ dynamische Einbindung zur Laufzeit
ƒ Einbindung zur Entwicklungszeit
;
Anforderungen der Praxis
;
Erweiterungen von SOAP/WSDL
heute
ƒ 16:15 betreute Rechnerübung
nächste Woche (7.7.)
ƒ Ausblick, Rückblick, Hinweise für Klausur
Klausur am 21.7.
© Klaus Schild, 2004
53
9