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