47
0/39 Web-Dienste mit XML und SOAP Andreas Zeller Lehrstuhl Softwaretechnik Universit¨ at des Saarlandes, Saarbr¨ ucken

Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

  • Upload
    lebao

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

0/39

Web-Dienste mit XML und SOAP

Andreas ZellerLehrstuhl SoftwaretechnikUniversitat des Saarlandes, Saarbrucken

Page 2: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

1/39

Funktionalitat und Prasentation

In der Softwaretechnik gilt es als wichtiges Entwurfsprinzip,die Funktionalitat (Semantik) eines Systems von derPrasentation (Syntax) zu trennen:

• Dienste konnen durch verschiedene Prasentationenangesprochen werden

• Bessere Automatisierung der Dienste

• Besseres Zusammenspiel mehrerer Teile

• Separation der Interessen

Page 3: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

2/39

Model-View-Controller

realisiert verschiedene Prasentationen eines Modells

CDU:SPD:

FDP:GRUENE:

PDS:Andere:

41%38%

8%6%

5%2%

CDUSPD

FDPGRUENE

PDSAndere

4138

86

52

Page 4: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

3/39

Dokumente

In LATEX kann derselbe Inhalt auf verschiedene Weisenprasentiert werden:

z.B. als Dokument. . . . . . und als Folie

������������ ������������������������� �"!���$#�%&�'�)(+*��,�-���/.0��1�243

561�287�/���"29�:!* �+;<���=#&*�*����8*�1�;<���">�#&* *��,?��-!��."3��1

@<ABAB@BC�AED�C�ABF

GIHKJKLIM�N�OPJRQKSTNUMWVQRMXHKJEY[Z]\ VQK^`_+JEM-QRM�NUOPJ

acbed&fhgjilknmporqtshgufloUfhvxw�b�yrz|{nyc}co�fh~Rsh}c~�q�yrvxw�oUyr{�fh~R�lbnorqt��gump~x�&guyrb��-yc�&�&d&yrf�������-���c�-�n�n�c�r�:��n�`��i�fh��shb�opycz:��fhyrb�fh~Ri��"~xoUfl��~<�"knb�d&fhg��-������:�������n���r�-�=��i��"b�oUsl�n�&�-�oUg�fhb�b�flb��

�¡  ycfhb�~xopf=z/¢knb�b�flb�d&��g�vxw¤£l�����:¥x¦n�c��§n�����6�-������:�������n���r�-������shb�{�fl~x�&guk"vxw�fhbqtfhg�d&fhb

�¡¨ fl~x~xfhgufE©������-ª��"��� �:�r��������«�d&fhg   ycfhb�~xopf�¡¨ fl~x~xfhgufl~W¬����:�nª�ªe�����,­`�c���:��fhwngufhg�fhg&®�fhyc}rf� i�fh�&shg�shoUyrknbed&flg�arb�oUfhg�fh~x~xfhb

¯°O±Ye_±S�²u³´NU_6µ¶²u·¤OPJRM�\lOPSTS�_±\

g�fhsh}cyr~xycfhg�o"�"fhg�~xvxw�ycfld&fhb�f|�-������:�������"���c�-�����=fhyrb�fh~R¸tknd&fh}r}c~

CDU:SPD:

FDP:GRUENE:

PDS:Andere:

41%38%

8%6%

5%2%

CDUSPD

FDPGRUENE

PDSAndere

4138

86

52

¹

Page 5: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

4/39

Skriptsprachen

In Skriptsprachen werden Anwendungen ebenfalls inFunktionalitat und Prasentation aufgeteilt:

• Funktionalitat wird herkommlich realisiert und einzelnenKommandos (in Perl, Python, Tcl. . . ) zugeordnet

Page 6: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

4/39

Skriptsprachen

In Skriptsprachen werden Anwendungen ebenfalls inFunktionalitat und Prasentation aufgeteilt:

• Funktionalitat wird herkommlich realisiert und einzelnenKommandos (in Perl, Python, Tcl. . . ) zugeordnet

• Kommandos werden aufgerufen

– von graphischer Benutzeroberflache

– innerhalb von automatischen Skripten

• Kommandos + Dienste sind als Bibliothek uberalleinsetzbar

Page 7: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

5/39

Im Netz

ist die Trennung von Funktionalitat und Prasentation nicht soweit fortgeschritten:

und ahnliche Argernisse – festgelegte Fontgroßen, Farben,Browser. . .

Suche in Google nach”best viewed with“ liefert ungefahr

1.410.000 Dokumente.

Page 8: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

6/39

Im Netz (2)

Hintergrund: Das ursprunglich prasentationsneutrale HTMLwurde mit immer weiteren prasentationsspezifischenErweiterungen angereichert:

<FONT> · <TABLE WIDTH=...> · <BLINK> · <SCRIPT> · · ·

Folge:

• Aufgezwungene Prasentationsform

• Automatisierung nur schlecht moglich

• Zusammenspiel der Teile nur schlecht moglich

Page 9: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

7/39

Ubersicht

Wir betrachten die folgenden Techniken zur Realisierungautomatisierter, verteilter, prasentationsunabhangigerDienste uber das Internet:

HTTP (HyperText Transfer Protocol) ubermittelt Dienste undErgebnisse

XML (Extended Markup Language) trennt den Inhalt von seinerDarstellung

SOAP (Simple Object Access Protocol) ermoglicht Zugriff aufDienste uber XML und HTTP

WSDL (Web Services Description Language) ermoglichtselbstbeschreibende Dienste

Page 10: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

8/39

Kommunikationsprotokolle

Es gibt dezidierte Protokolle zur Kommunikation vonKomponenten:

DCOM (Distributed COM) von Microsoft (.NET)

IIOP (Internet Inter-ORB Protocol) von CORBA

RMI (Remote Method Invocation) aus der Java-Welt (SunONE)

Diese Protokolle realisieren effizient und effektiv verteilte,synchrone Dienstanforderungen.

Page 11: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

9/39

Kommunikationsprotokolle (2)

Probleme mit dezidierten Protokollen:

• Aufwendige Infrastruktur mit zahlreichen Dienstenvonnoten ⇒ muß gewohnlich eingekauft werden

Page 12: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

9/39

Kommunikationsprotokolle (2)

Probleme mit dezidierten Protokollen:

• Aufwendige Infrastruktur mit zahlreichen Dienstenvonnoten ⇒ muß gewohnlich eingekauft werden

• Abhangigkeit vom Hersteller der Kommunikations-Infrastruktur (Microsoft, CORBA-Anbieter, Java-Anbieter)

Page 13: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

9/39

Kommunikationsprotokolle (2)

Probleme mit dezidierten Protokollen:

• Aufwendige Infrastruktur mit zahlreichen Dienstenvonnoten ⇒ muß gewohnlich eingekauft werden

• Abhangigkeit vom Hersteller der Kommunikations-Infrastruktur (Microsoft, CORBA-Anbieter, Java-Anbieter)

• Schlecht fur offene, skalierbare Anwendungen geeignet(jeder Client braucht seinen ORB-Zugang)

Page 14: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

9/39

Kommunikationsprotokolle (2)

Probleme mit dezidierten Protokollen:

• Aufwendige Infrastruktur mit zahlreichen Dienstenvonnoten ⇒ muß gewohnlich eingekauft werden

• Abhangigkeit vom Hersteller der Kommunikations-Infrastruktur (Microsoft, CORBA-Anbieter, Java-Anbieter)

• Schlecht fur offene, skalierbare Anwendungen geeignet(jeder Client braucht seinen ORB-Zugang)

Kein Problem in einer geschlossenen Umgebung (z.B. einerServer-Farm), aber in offenen Umgebungen wie dem Internet!

Page 15: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

10/39

HTTP als Kommunikationsprotokoll

Das weitverbreitete HTTP-Protokoll (”Internet = HTTP + Mail“)

wird ebenfalls fur Dienstanforderungen benutzt.

Wir betrachten Anfragen an Praktomat, der eingereichtePraktikumslosungen pruft:

POST /praktomat/check HTTP/1.1 - Aufgerufener DienstHost: www.praktomat.org - ZielrechnerContent-Type: text/plain - DatenformatContent-Length: 1264 - Lange der Daten

/* Losung Aufgabe 1 */ - Datenint main(int argc, char *argv[])...

Page 16: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

11/39

HTTP als Kommunikationsprotokoll (2)

Der Praktomat-Server gibt das Ergebnis der Prufung (= desDienstaufrufs) zuruck:

200 OK - StatusContent-Type: text/plain - DatenformatContent-Length: 34 - Lange der Daten

Ihre Aufgabe ist bestanden. Danke! - Daten

Page 17: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

11/39

HTTP als Kommunikationsprotokoll (2)

Der Praktomat-Server gibt das Ergebnis der Prufung (= desDienstaufrufs) zuruck:

200 OK - StatusContent-Type: text/plain - DatenformatContent-Length: 34 - Lange der Daten

Ihre Aufgabe ist bestanden. Danke! - Daten

Einfach zu parsen und zu verarbeiten

Einfach zu realisieren (z.B. als CGI-Skript)

Wird in Millionen von Web-Anwendungen benutzt

Page 18: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

12/39

XML

Problem: Anfragen und Ergebnisse mussen maschinenlesbarsein ⇒ Trennung von Inhalt und dessen Darstellung.

Ansatz: Extended Markup Language (XML)

• ermoglicht es, beliebige Daten in strukturierter,serialisierter Form zu beschreiben

• ist Text-basiert und einfach zu verarbeiten

• ist ein extrem flexibles und erweiterbares Format

Page 19: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

13/39

Eine Anfrage in XML

Die folgende Anfrage unterteilt das eingereichte Programm(prog1) und den Kommentar (comment):

<praktomat_check xmlns="urn:praktomat-org:CheckProcs"><prog name="foo.cc">int main(int argc, char *argv[]) ...

</prog><commentxmlns=’http://www.praktomat.org/documentation’>Dies ist ein Kommentar!

</comment></praktomat_check>

Das Attribut xmlns legt den Namensraum (namespace) fest.

Page 20: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

14/39

Eine Anfrage in XML (2)

Etwas bequemer geht es mit Kurzeln fur die Namensraume:

<cp:praktomat_checkxmlns:cp="urn:praktomat-org:CheckProcs"xmlns:doc="http://www.praktomat.org/documentation">

<cp:prog name="foo.cc">int main(int argc, char *argv[]) ...

</cp:prog><doc:comment>Dies ist ein Kommentar!

</doc:comment></cp:praktomat_check>

Page 21: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

15/39

Schemas

Schemas legen Typen fur XML-Datentypen fest:

<schema xmlns="http://www.w3.org/1999/XMLSchema’targetNamespace="urn:schemas-praktomat-org:CheckProcs’><element name="praktomat_check"><type><element name="prog1" type="string" /><any minOccurs="0" maxOccurs="*" />

</type></element>

</schema>

Grundtypen: Strings, Bytes, Integers, Zeit/Datum. . .

Zusammengesetzte Typen: Listen, Unions. . .

Außerdem Muster (regulare Ausdrucke)

Page 22: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

16/39

XML-Ausgaben parsen

XML-Ausgaben konnen wegen der einheitlichen Syntax sehreinfach weiterverarbeitet werden.

Beispiel – Eine XML-Ausgabe des Praktomat-Servers:

<message_list><message>

<location><file>main.cc</file><line>45</line>

</location><text>undefined reference</text>

</message></message_list>

XML-Parser gibt es fur alle gangigen Programmiersprachen

Page 23: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

17/39

Stylesheets

Um XML-Daten im Browser fur Menschen lesbar darzustellen,benotigt man Stylesheets, die die Prasentation definieren.

location { font-family: "sans-serif",font-weight: bold,color: #ff0000

}text { font-family: "sans-serif",

color: #000000}

stellt Text dar als

main.cc 45 undefined reference

Page 24: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

18/39

HTML aus XML erzeugen

Die XSL Transformation language (XSLT) ermoglicht es,XML-Elemente in andere XML-Elemente zu wandeln –insbesondere in HTML-Elemente.

Die Wandlung per XSLT kann geschehen

im Server – ermoglicht Ausgabe je nach Fahigkeiten desBrowsers (bis hin zu WML)

im Web-Browser – ermoglicht Austauschbarkeit vonXSLT-Spezifikationen und somit individuelle Anpassungen

Page 25: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

19/39

Eine XSLT-Spezifikation

<tt><ul><xsl:for-each select="message">

<li><strong><xsl:value-of select=".//location/file">:<xsl:value-of select=".//location/line">:</strong><xsl:value-of select=".//text"></li>

</xsl:for-each></ul></tt>

Ergebnis:

• main.cc:45:undefined reference

Page 26: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

20/39

Zwischenbilanz

• Zentrales Prinzip: Trennung von Funktionalitat undPrasentation

• Im Web bislang unterentwickelt

• Das HTTP-Protokoll erlaubt den Aufruf von Diensten

• Mit XML laßt sich Inhalt von Darstellung trennen

• Stylesheets und XSLT sorgen fur die Darstellung vonXML-Inhalten

Page 27: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

21/39

SOAP

Kommen wir nun zur maschinellen Weiterverarbeitung derDaten.

SOAP (Simple Object Access Protocol) realisiert ein einfachesProtokoll auf Basis von XML und (typischerweise) HTTP, mitdem externe Dienste aufgerufen werden konnen.

Im Wesentlichen besteht SOAP aus einer Methode, umDatentypen nach XML und zuruck umzuwandeln.

Page 28: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

21/39

SOAP

Kommen wir nun zur maschinellen Weiterverarbeitung derDaten.

SOAP (Simple Object Access Protocol) realisiert ein einfachesProtokoll auf Basis von XML und (typischerweise) HTTP, mitdem externe Dienste aufgerufen werden konnen.

Im Wesentlichen besteht SOAP aus einer Methode, umDatentypen nach XML und zuruck umzuwandeln.

SOAP ist eine einfache Moglichkeit, Protokolle wie DCOM, IIOP,RMI zu realisieren

⇒ CORBA, SunONE, .NET usw. konnen SOAP als Protokolleinsetzen!

Page 29: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

22/39

SOAP-Anfrage

Der Header einer SOAP-Anfrage enthalt ein zusatzliches Feld,das den aufgerufenen Dienst spezifiziert.

POST /praktomat/check HTTP/1.1 - Aufgerufenes ObjektHost: www.praktomat.org - ZielrechnerContent-Type: text/plain - DatenformatContent-Length: 1264 - Lange der DatenSOAPMethodName: urn:praktomat-org:CheckProcs#check

- Aufgerufener Dienst

Die Abbildung des SOAP-Methodennamens auf tatsachlicheMethoden ist Sache des Servers!

Page 30: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

23/39

SOAP-Anfrage (2)

Der Body der Anfrage enthalt die tatsachlichen Daten – intextueller Form.

<Envelope> - SOAP-Anfrage<Body><cp:check xmlns:cp="urn:praktomat-org:CheckProcs"><theProgram>

/* Losung Aufgabe 1 */ - Datenint main(int argc, char *argv[])...

</theProgram></cp:check>

</Body></Envelope>

Page 31: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

24/39

SOAP-Ruckmeldung

200 OK - StatusContent-Type: text/plain - DatenformatContent-Length: 234 - Lange der Daten

<Envelope><Body><cp:checkResponse xmlns:cp="urn:praktomat-org:CheckProcs"><message_list>

<message><location><file>main.cc</file><line>45</line>

</location><text>undefined reference</text>

</message></message_list>

</cp:checkResponse></Body>

</Envelope>

Page 32: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

25/39

SOAP-Nachricht: Allgemeine Struktur

Quelle: http://www.intranetjournal.com/articles/200012/pid 12 13 00a.html

Page 33: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

26/39

Allgemeines Aufruf-Muster

Quelle: http://www.intranetjournal.com/articles/200012/pid 12 13 00a.html

Page 34: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

27/39

Allgemeines Aufruf-Muster (2)

1. Ein Dienst des lokalen Application Servers wird aufgerufen

2. Der Application Server nutzt einen verteilten Dienst uber dessenAPI

3. Die API nutzt SOAP, um die Aufrufdaten in XML zu wandeln. . .

4. . . . und an den Web-Server zu senden

5. Dessen SOAP-Komponente entpackt die Aufrufdaten. . .

6. und stellt sicher, daß alle relevanten Teile vorhanden sind.

7. Anschließend wird der Dienst aufgerufen und der Ruckgabewertbestimmt

8. Der Ruckgabewert wird genauso zuruckgesandt.

9. Bei Dienstende geht die Kontrolle an den ursprunglichenAufrufer zuruck.

Page 35: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

28/39

Eine Bankanwendung mit SOAP

Wir betrachten eine Schnittstelle fur eine Bankanwendung, wiesie z.B. in CORBA IDL spezifiziert sein konnte:

struct withdrawData { - Daten zum Abhebenlong account;float amount;

};struct withdrawResponse { - Ruckmeldung

float newBalance;float amount;boolean overdrawn;

};interface IBank {

withdrawResponse withdraw(withdrawData data);};

Page 36: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

29/39

Bankanwendung: Aufruf des Dienstes

(hier mit allen Namespaces)

<soap:Envelopexmlns:soap=’http://schemas.xmlsoap.org/soap/envelope/’><soap:Body><IBank:withdrawData xmlns:IBank=’urn:uuid:DEADF00D-BEAD-BEAD-BEAD-BAABAABAABAA’><account>3512</account><amount>100</amount>

</IBank:withdrawData></soap:Body>

</soap:Envelope>

Methodenname und URI werden separat spezifiziert!

Page 37: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

30/39

Bankanwendung: Ruckmeldung

Die Ruckmeldung erfolgt ebenfalls im SOAP-Format

<soap:Envelopexmlns:soap=’http://schemas.xmlsoap.org/soap/envelope/’><soap:Body><IBank:withdrawResponse xmlns:IBank=’urn:uuid:DEADF00D-BEAD-BEAD-BEAD-BAABAABAABAA’><newBalance>0</newBalance><amount>5</amount><overdrawn>true</overdrawn>

</IBank:withdrawResponse></soap:Body>

</soap:Envelope>

Page 38: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

31/39

Serialisierung – Allgemeine Form

Die allgemeine Form fur serialisierte Daten sieht so aus:

<t:typname xmlns:t=’namespaceuri’><feldname1>feld1wert</feldname1><feldname2>feld2wert</feldname2>...</t:typname>

Diese Form wird auch Element-Normal-Form (ENF) genannt.

Page 39: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

32/39

WSDL

WSDL (Web Services Description Language) beschreibt dieSchnittstelle fur SOAP-Dienste

Einfacher Standard

Ermoglicht die Selbstbeschreibung von Web-Diensten:

• Welche Dienste stelle ich zur Verfugung?

• Wie sieht die Schnittstelle aus?

• Welches Protokoll kann ich benutzen?, usw.

Page 40: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

33/39

Schnittstelle der Bankanwendung

Wir betrachten zunachst die Schnittstelle der Nachrichten:

<element name="withdrawData"><complexType><sequence><element name="account" type="long"/><element name="amount" type="float"/>

</sequence></complexType>

</element>

Page 41: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

34/39

Schnittstelle der Bankanwendung (2)

Der Ruckgabewert wird analog spezifiziert:

<element name="withdrawResponse"><complexType><sequence><element name="newBalance" type="float"/><element name="amount" type="float"/><element name="overdrawn" type="boolean"/>

</sequence></complexType>

</element>

Page 42: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

35/39

Schnittstelle der Bankanwendung (2)

Die Methodenbeschreibungen kommen in einen Rahmen.

Der Rahmen beschreibt, mit welchen Nachrichten uber welcheProtokolle die Dienste aufgerufen werden konnen.

<definitions name="IBank"><types><schema xmlns="http://www.w3.org/1999/XMLSchema">

- (Nachrichten-Schnittstellen) -</schema>

</types>... - Messages, Ports, Services

</definitions>

In der Praxis werden solche Beschreibungen aus einer IDLgeneriert

Page 43: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

36/39

WSDL in der Praxis

Will ein Programmierer einen Web-Dienst nutzen, so . . .

1. Startet er eine WSDL-Anfrage beim Web-Dienst

2. laßt er die WSDL-Beschreibung in eine IDL umwandeln

3. laßt er die IDL in einen Stub umwandeln

4. kann er den Web-Dienst uber den Stub so nutzen, als wareer lokal verfugbar.

All diese Schritte lassen sich automatisieren⇒ Zugang zu Web-Diensten ist nicht schwieriger als dieNutzung einer Bibliothek

Page 44: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

37/39

Fazit

Web-Dienste realisieren verteilte Dienste mit Bordmitteln:

Sie kombinieren

• bekannte Techniken (Serialisierung, entfernterDienstaufruf)

• mit bekannten Protokollen (HTTP),

um verteilte Dienste leicht realisierbar zu machen.

Vereinheitlichende Grundlage ist XML

Page 45: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

37/39

Fazit

Web-Dienste realisieren verteilte Dienste mit Bordmitteln:

Sie kombinieren

• bekannte Techniken (Serialisierung, entfernterDienstaufruf)

• mit bekannten Protokollen (HTTP),

um verteilte Dienste leicht realisierbar zu machen.

Vereinheitlichende Grundlage ist XML

Weder elegant noch tiefsinnig, aber einfach (wie z.B. HTML)

Ziel ist Nutzen durch breite Anwendung und Standardisierung

Page 46: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

38/39

Zusammenfassung

• Funktionalitat und Prasentation gehoren getrennt

• In Dokumenten wird der Inhalt durch XML ausgedruckt

• Die Prasentation erfolgt uber Annotation (Stylesheets) undTransformation (XSLT)

• Web Services wie SOAP machen Funktionalitat uberStandard-Protokolle (HTTP) verfugbar

• SOAP dient als Basis fur beliebige verteilte Anwendungen

• Mit WSDL konnen Anbieter ihre Dienste beschreiben

Page 47: Web-Dienste mit XML und SOAP - st.cs.uni-saarland.de · Im Wesentlichen besteht SOAP aus einer Methode, um Datentypen nach XML und zur¨uck umzuwandeln. 21/39 SOAP ist eine einfache

39/39

Literatur

World Wide Web Consortium (http://www.w3.org) – allehier beschriebenen Standards und Tutorials

A Young Person’s Guide to The Simple Object Access Protocol(http://msdn.microsoft.com/msdnmag/issues/0300/soap/soap.asp) – Einfuhrung in SOAP