Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Franck Borel - UB-Freiburg SOAP-Kurs Einführung und praktische Beispiele.

Ähnliche Präsentationen


Präsentation zum Thema: "Franck Borel - UB-Freiburg SOAP-Kurs Einführung und praktische Beispiele."—  Präsentation transkript:

1 Franck Borel - UB-Freiburg SOAP-Kurs Einführung und praktische Beispiele

2 Franck Borel - UB-Freiburg 2 Ziele des SOAP-Kurses Grundbegriffe verstehen: Web-Services, SOA, WDSL, UDDI, usw. Zusammenhang zwischen SOAP und Web- Services verstehen Architektur der Web-Services kennen SOAP: Konzept, Übermittlung, Aufbau, Inhalt Die wichtigsten SOAP-Implementierung für PHP nutzen können: PHP-SOAP, PEAR::SOAP

3 Franck Borel - UB-Freiburg 3 Übersicht SOAP in der Theorie (heute) –Web-Services –SOAP –WSDL –UDDI SOAP in der Praxis (morgen) –SOAP-Implementierungen für PHP –SOAP mit PHP-SOAP –SOAP mit PEAR::SOAP –WSDL mit PEAR::SOAP

4 Franck Borel - UB-Freiburg 4 Am Anfang war der Web-Service SOAP ist das Kernstück der Web-Services In manchen Veröffentlichungen erscheint SOAP als Synonym für Web-Services –Nicht korrekt, aber verdeutlicht dessen Bedeutung für den Web-Service Wie hängen SOAP und Web-Services zusammen? Was ist den überhaupt ein Web-Service und wofür braucht man diesen?

5 Franck Borel - UB-Freiburg 5 Was ist ein Web-Service? Ein Web-Service ist ein Stück Logik, das sich irgendwo auf einem Server im Internet befindet und über Standard-Internet-Protokolle wie HTTP oder SMTP ansprechen lässt. Kommunikationspartner sind hier Maschinen; Maschine-zu-Maschine-Kommunikation Kein Benutzer notwendig! Maschinen sprechen unterschiedliche Sprachen –Einheitliche Standards für den Daten -und Funktionalitätsaustausch notwendig

6 Franck Borel - UB-Freiburg 6 Web-Services: Die Idee Anwendungs- programm Web-Service Web-Service- Nutzer Plattform- und sprachspezifische Kommunikation Plattform- und sprachunabhängige Kommunikation

7 Franck Borel - UB-Freiburg 7 Was ist ein Web-Service? Anwendungs -programm Service-Proxy Service-Listener Web-Anwendungsserver

8 Franck Borel - UB-Freiburg 8 Was ist ein Web-Service? Paradebeispiele –Google: Google-Suche auf der eigenen Seite, z. B. sjaensch.org sjaensch.org –Amazon: Shop-Suche als Partnerprogramm, z. B. –Dell: Warenwirtschaftssystem –vascoda :-)vascoda Nutzt SOAP-RPC für die Metasuche Jeder Dienstanbieter bietet die Funktion "query" SOAP-Anfrage enthält Suchkriterien SOAP-Antwort enthät Datensätze

9 Franck Borel - UB-Freiburg 9 Web-Services: Eigenschaften Modular, einfach und dezentral Technologien müssen XML-basiert sein Adressierbar sein Plattformunabhängig Erweiterbar Sicher und verlässlich Administrierbar RPC-Unterstützung (RPC = Remote Procedure Calls) Dokumentenaustausch

10 Franck Borel - UB-Freiburg 10 Web-Services: Konzept Web-Service Protokollstapel (siehe auch W3C)W3C EbeneProtokolle Entdeckung Beschreibung Verpackung Transport Netzwerk UDDI, DISCO, WSIL, ebXML WSDL, RDF, ebXML SOAP, XML-RPC HTTP, SMTP, FTP, BEEP… TCP/IP Verpackt die Nutzdaten Beschreibung der verpackten Nutzdaten Namensdienst für Web- Services: Auffinden von WSDL zu interessierenden Web- Services

11 Franck Borel - UB-Freiburg 11 Web-Services: Interaktionsmodell Interaktionsmodell basiert auf SOA (Service Oriented Architecture) Interaktion Finden Web-Service- Verzeichnis Publizieren Bietet Dienst nach außen hin an WSD Dienst wird in einem WSD- Dokument beschrieben und beim Service- Verzeichnis registriert Web- Service- Anbieter Web-Service- Nutzer Muss WSD kennen, damit er korrekt auf den Dienst zugreifen kann Verfügbare Dienste WSD Web Service Description SOAP Nutzdaten

12 Franck Borel - UB-Freiburg 12 Web-Services: Interaktionsmodell Möglichkeiten der Ausgestaltung des Interaktionsmodells: –Web-Service-Konsument und -Anbieter kennen sich vor der Interaktion. Syntax und Semantik ihrer Interaktionen muss beiden Partnern klar sein. –Web-Service-Konsument und -Anbieter kennen sich vorher, die WSD wird dynamisch geladen. Semantik muss klar sein. –Es gibt mehrere Web-Service-Anbieter, die Auswahl des Dienstes erfolgt manuell und die WSD wird dynamisch geladen. –Es gibt mehrere Web-Service-Anbieter, die Auswahl des Dienstes erfolgt manuell und die Web-Service-Beschreibung kommt vom Web-Service-Anbieter. –Es gibt mehrere Web-Service-Anbieter, die Auswahl erfolgt automatisch.

13 Franck Borel - UB-Freiburg 13 Web-Services ausprobieren Kleines Beispiel zum Ausprobieren: BabelFish('de_en', 'Hallo Welt'); echo $result; ?>

14 Franck Borel - UB-Freiburg 14 Web-Services: Alternativen CORBA (Common Object Request Broker Architecture) REST (Representional State Transfer) Remoting:.NET Remoting, Java RMI EDI (Electronic Data Interchange)

15 Franck Borel - UB-Freiburg 15 SOAP: Geschichte ~1998 Dave Winer veröffentlicht "RPC over HTTP via XML" Dave Winer entwickelt XML-RPC (unterstützt von Microsoft) Microsoft leitete von XML-RPC SOAP ab Am 18. April 2000 reichte Microsoft mit Unterstützung von Ariba, HP, IBM, IOAN Technologies, SAP AG usw. SOAP 1.1 beim W 3 C ein Die aktuelle Version von SOAP ist 1.2 und liegt seit Juni 2003 als Empfehlung beim W 3 C vor

16 Franck Borel - UB-Freiburg 16 SOAP: Definition SOAP ehemals Simple Object Access Protocol –Von "simple" kann bei dem Standard keine Rede sein –Mit "Object Access" (Objektzugriff) hat das Protokoll wenig zu tun –Seit Version 1.2 ist SOAP kein Akronym mehr! Definition: SOAP ist ein leichtgewichtiges Protokoll (Thin-Client-Protokoll) zum Austausch struturierter Informationen in einer dezentralisierten verteilten Umgebung.

17 Franck Borel - UB-Freiburg 17 SOAP: Eigenschaften und Spezifikation Einfaches und erweiterbares Protokoll Grundausstattung ohne Sicherheit, Verlässlichkeit und Transaktionen Spezifikation ist sehr offen, aber umfangreich Zur Zeit in der Version 1.2: –XML Protocol Working Group –SOAP Version 1.2 Part0: Primer Allgemeine EinführungSOAP Version 1.2 Part0: Primer –SOAP Version 1.2 Part1: Messaging Framework Aufbau und Funktionsweise einer SOAP-NachrichtSOAP Version 1.2 Part1 –SOAP Version 1.2 Part2: Adjuncts Zusätzliche DefinitionenSOAP Version 1.2 Part2

18 Franck Borel - UB-Freiburg 18 SOAP: Nachrichtenformat Transportprotokoll (HTTP) SOAP-Envelope SOAP-Header Headerblock SOAP-Body Nachricht Dient zur Angabe von Informationen, die nicht direkt als Anwendungsdaten zu klassifieren sind (z. B. Transaktions- nummer).Der Header ist optional! Wurzelelement und Namensraum. Obligatorisch Anwendungs- spezifischer Teil Transportiert die Anwendungsdaten. Obligatorisch

19 Franck Borel - UB-Freiburg 19 SOAP: Nachrichtenformat Beispiel: ... Freiburg Los Angeles... Header (optional) SOAP- Nachricht Namensraum für den anwendung- spezifschen Teil SOAP-Nachrichten verwenden einen eigenen Namensraum für alle Tags, die zum Envelope gehören (hier env)

20 Franck Borel - UB-Freiburg 20 SOAP: Übermittlung Für die Praxis kann man die Spezifikation auf folgende Punkte vereinfachen: –Nachrichten-Art = Message Exchange Pattern (MEP): In der Praxis entweder RPC-MEP (RPC/encoded) oder dialog-orientierte MEP (document/literal) –Pfad der Nachricht: Kommunikation läuft direkt vom Sender zum Empfänger –Protokollbindung: HTTP ist Wahl der meisten Implementierungen und Anwendungen

21 Franck Borel - UB-Freiburg 21 SOAP: Übermittlung Dialogorientierte MEP –Nachrichten werden in einer Richtung zwischen den SOAP-Knoten ausgetauscht –asynchron RPC-MEP –Anfrage-Antwort –synchron Nachricht Sender Empfänger Sender Empfänger Antwort Anfrage

22 Franck Borel - UB-Freiburg 22 SOAP: Übermittlung Protokollbindung –HTTP ideal als Transportmodell Request-Response-Muster passt hervorragend zum SOAP- RPC-Stil URIs identifizieren die Endpunkte Bekannte Adressierungsschemata können für SOAP-Knoten übernommen werden Auch in HTTP gibt es Zwischenknoten (z. B. Proxies), so dass auch hier die beiden Konzepte sehr gut zusammenpassen

23 Franck Borel - UB-Freiburg 23 SOAP Encodings Web-Service-Anbieter und –Konsument müssen die gleiche Sprache sprechen SOAP-Encoding: Erlaubt die Angabe von Datentypen für ein XML-Element –SOAP-Spezifikation 1.1: –SOAP-Spezifikation 1.2: Seit Version 1.2 sind diese Kodierungsregeln optional XML-Schemadefinition statt SOAP-Encoding SOAP-Implementierungen übernehmen das Encoding für uns. Uff ! Vorsicht! Manche Implementierungen sind sich nicht einig, welche Encoding-Variante angewandt werden soll: –Am verbreitesten RPC/encoded –Mickeysoft setzt alles auf document/literal

24 Franck Borel - UB-Freiburg 24 SOAP-Encodings Datentypen –An die Datentypen des XML-Schema-Standards angelehnt: –Aufteilung in einfache (primitive) und komplexe Datentypen Primitive Datentypen: String, boolean, int, byte… Komplexe Datentypen: Array

25 Franck Borel - UB-Freiburg 25 SOAP Fehlermanagement Fehlermanagement –SOAP-Fault: Besonderer Nachrichtentyp, der über Fehler informiert –Fehler werden von SOAP-Spezifikationen 1.1 und 1.2 unterschiedlich behandelt Fehlermanagement ist der beiden SOAP-Versionen ist inkompatibel neue Fehlercodes (z. B. DataEncodingUnknown) Andere Namen (z. B. Client wurde durch Sender ersetzt) Es gibt Regeln, wie eine Implementierung sich verhalten muss, damit sie mit beiden Spezifikationen zurecht kommt!

26 Franck Borel - UB-Freiburg 26 SOAP: Aufbau FunktionalitätVersion 1.1Version 1.2 Spezifikation1 Teil3 Teile Namensraumhttp://schemas.xmlsoap.org/soap/envelo pe envelope EncodingFrei wählbar. Spezifikation: ng Frei wählbar. Spezifikation aktualisiert: encoding encoding Intermediäre und Nachrichten- verteilung Actor-AttributIntermediäre sind SOAP-Knoten, die Rollen annehmen. SOAP 1.2 reguliert die Nachrichten-Weiterleitung exakter Fehler- Management Fehler enthält vier Elemente. Der Fehlercode gibt die Art des Fehlers aus. Vollständig überarbeitet. Neue Fehlercode! Elemente nach dem SOAP- Body SOAP 1.1 erlaubt Elemente nach dem SOAP-Body SOAP 1.2 untersagt Elemente nach dem SOAP-Body BindingBeschreibung der Bindung an HTTPAllgemeine Spezifikation zur Bindung an andere Protokolle

27 Franck Borel - UB-Freiburg 27 Web-Service: Beispiel Im Browser bitte folgende URL eingeben: –http://www.xmethods.nethttp://www.xmethods.net

28 Franck Borel - UB-Freiburg 28 WSDL: Wofür WSDL? Zur reinen Kommunikation reicht SOAP aus Wie soll man aber wissen, welche Methoden ein Web-Service bietet? Wir brauchen daher eine Beschreibung des Dienstes und eine Beschreibungssprache!

29 Franck Borel - UB-Freiburg 29 Konzept der WSDL Beschreibt einen Web-Service, genauer: –Beschreibt die anwendungsspezifischen Teil, der innerhalb einer SOAP-Nachricht verschickt wird Die Implementierung des Kommunikationssystem soll automatisch erstellt werden (Maschine redet mit Maschine) XML-Dokument mit einem –abstrakten Teil: Name des Dienstes Beschreibung der ausgehenden und eingehenden Nachrichten –Konkreten Teil: Beschreibung der Protokollbindung Adresse des Dienstes

30 Franck Borel - UB-Freiburg 30 Wo wird die WSDL eingesetzt? Interaktionsmodell Web- Service- Anbieter Web-Service- Verzeichnis Web-Service- Nutzer Interaktion FindenPublizieren WSD SOAP

31 Franck Borel - UB-Freiburg 31 WSDL: Aufbau definitions types message portType binding service Grundstruktur der WSDL-Datei: Datentypen- Definitionen Name des Dienstes, Namensräume, verwendete Standards Nachrichten- formate (In-Out) Schnittstellen- beschreibung mit Hilfe von definierten Mustern Beschreibt die Bindung: Operationen einer definierten Schnittstelle (interface) Endpunkte und Beschreibung des Dienstanbieters

32 Franck Borel - UB-Freiburg 32 WSDL: Aufbau Beispiele: –Google : –Amazon: s.wsdl s.wsdl –Vascoda: hannover.de/WebServices/VASCODA/vascoda.wsdlhttp://vifphys.tib.uni- hannover.de/WebServices/VASCODA/vascoda.wsdl

33 Franck Borel - UB-Freiburg 33 UDDI UDDI = Universal Description, Discovery and Integration UDDI ist ein Verzeichnisdienst und dient dazu Web- Services zu finden Konzept: Web-Services sollen vom Service-Anbieter im Verzeichnis publiziert und vom Service-Konsumenten im Verzeichnis gefunden werden Ähnlich wie LDAP aber auf Web-Services zugeschnitten (es gibt Bemühungen, LDAP mit UDDI zusammenzubringen) Gründer: Ariba, IBM und Kleinstweich Beispiel:

34 Franck Borel - UB-Freiburg 34 UDDI: Aufbau Service-Anbieter Universal Business Registry Registrar UDDI-Operator 1 Möglichkeit 1: Meldet direkt an Möglichkeit 2: Meldet an UDDI-Operator 2 Trägt ein Datenabgleich über GUIDs Privates UDDI-Verzeichnis Möglichkeit 3: Meldet beim privatem Verzeichnis Firmen bieten öffentliche UDDI- Operatoren an z.B. IBM, SAP UDDI Operator Council regelt, wer zum UBR gehören darf

35 Franck Borel - UB-Freiburg 35 Abschließende Worte Muss ich SOAP und WSDL jemals selbst anfassen? –Man kann Web-Services implementieren, ohne jemals einen Blick auf die WSDL-Beschreibung oder auf SOAP-Datenpakete geworfen zu haben –Es gibt eine Reihe von Werkzeugen, die uns die Arbeit abnehmen –Aber: Für das Konzipieren von Web-Services ist es wichtig die dahinterliegenden Mechanismen zu kennen (auch die Frage, ob ich überhaupt meine Anwendung als Web-Serice konzipieren möchte) Debuggen wird leichter Für die Entwicklung von Web-Service-Konsumenten muss man die WSDL-Beschreibung zumindest lesen können, um besser zu verstehen, wie die Software-APIs verwendet werden müssen

36 Franck Borel - UB-Freiburg 36 SOAP Quiz SOAP ist ein Akronym für? SOAP braucht man für? Wo finde ich die SOAP-Spezifikationen? Bestandteile einer SOAP-Nachricht? Welche Protokoll-Standards kann ich verwenden um eine SOAP- Nachricht zu transportieren? Welche Übermittlungsarten werden von SOAP unterstützt? Wofür brauche ich Encoding? Wer war der Erfinder von XML-RPC? Bestandteile des Webservices? Wo liegen die WSDs?

37 Franck Borel - UB-Freiburg 37 SOAP in der Praxis SOAP wurde für den Nachrichtenaustausch für Web-Services entwickelt! –Austausch von Nachrichten zwischen Dienstnutzer und Dienstanbieter –Die Nachrichten sollen auch in einem heterogenen Umfeld ausgetauscht werden können –Das Nachrichtenformat ist XML –Es soll "transportabel" sein, d.h. Transportprotokolle wie HTTP, SMTP, TCP, POP3, Jabber müssen in der Lage sein, die Nachrichten transportieren zu können.

38 Franck Borel - UB-Freiburg 38 SOAP in der Praxis Der Weg zum eigenen Web-Service mit SOAP

39 Franck Borel - UB-Freiburg 39 SOAP mit PHP SOAP-Implentierungen für PHP –SOAPx4: Urgroßmutter der PHP-Implementierungen. Bildet die Basis für andere Implementierungen. –NuSOAP: Weiterentwicklung von SOAPx4 –PEAR::SOAP: Weiterentwicklung von SOAPx4 –ez SOAP: SOAP-Implementierung für das CMS eZ Publish –PHP-SOAP: C-basierte PHP-Erweiterung –SWSAPI: Einfache API für Web-Services auf Basis von SOAPx4 –Krysalis: Framework für Web-Services auf der Basis von XSLT

40 Franck Borel - UB-Freiburg 40 SOAP mit PHP Welche API sollen wir nehmen? –PEAR::SOAP wird zur Zeit am aktivsten entwickelt und ist das beliebteste SOAP-Paket. Sämtliche Versionen nur im Beta-Status! –NuSOAP: Man findet viele Einführungen zu SOAP mit PHP in denen NuSOAP verwendet wird. Probleme mit der Fehlerrückgabe! –PHP-SOAP: Unterstützt SOAP1.1/1.2 und WSDL 1.1 –Die restlichen Pakete führen ein Nischendasein

41 Franck Borel - UB-Freiburg 41 SOAP mit NuSOAP Wie nutze ich die API? –NuSOAP besteht aus einer ZIP-Datei, die die Datei nusoap.php enthält. –Nicht schön: SOAP-PHP und NuSOAP verwenden den gleichen Klassennamen "soapclient". Um NuSOAP und SOAP-PHP gleichzeitig verwenden zu können, muss man in der Datei nusoap.php alle Einträge mit "soapclient" durch "soapclient " austauschen. –Diese Datei muss nur noch integriert eingebunden werden: require_once "nusoap.php"

42 Franck Borel - UB-Freiburg 42 PHP-SOAP Wie nutze ich die API? –Um die Erweiterung nutzen zu können, muss PHP mit der Option -enable-soap konfiguriert werden. –http://de.php.net/manual/de/ref.soap.phphttp://de.php.net/manual/de/ref.soap.php

43 Franck Borel - UB-Freiburg 43 PHP-SOAP Beispiele zum ausprobieren: –Einfacher Web-Service-Anbieter + -Konsument –Web-Service-Anbieter Server mit Parametern + Web- Service-Konsument –Web-Service-Anbieter mit Parameter und Fehlerrückgabe (fault) + Web-Service-Konsument –Web-Service-Konsument mit Debugging

44 Franck Borel - UB-Freiburg 44 SOAP mit PEAR::SOAP Wie nutze ich die API? – PEAR::SOAP wird mit dem PEAR-Framework installiert, diese ist ein wenig tricky: PEAR installieren pear install channel-update pear.php.net pear install Net_Socket pear install -f Net_DIME pear install Net_URL pear install HTTP_Request pear install Mail_Mime pear install channel://pear.php.net/SOAP –PEAR::SOAP wird z. B. require_once "SOAP/Server.php" um einen Web-Service zu erstellen

45 Franck Borel - UB-Freiburg 45 SOAP mit PEAR::SOAP Beispiele zum ausprobieren: –Einfacher Web-Service-Anbieter/Konsument –Web-Service-Anbieter/Konsument mit Parametern –Web-Service-Anbieter/Konsument mit komplexen Datentypen

46 Franck Borel - UB-Freiburg 46 WSDL WSDL mit PEAR::SOAP


Herunterladen ppt "Franck Borel - UB-Freiburg SOAP-Kurs Einführung und praktische Beispiele."

Ähnliche Präsentationen


Google-Anzeigen