1 / 46

SOAP-Kurs Einführung und praktische Beispiele

SOAP-Kurs Einführung und praktische Beispiele. 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

Download Presentation

SOAP-Kurs Einführung und praktische Beispiele

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SOAP-Kurs Einführung und praktische Beispiele

  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 2

  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 3

  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? 4

  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 5

  6. Web-Services: Die Idee Plattform- und sprachunabhängige Kommunikation Web-Service Anwendungs-programm Web-Service-Nutzer Plattform- und sprachspezifische Kommunikation 6

  7. Was ist ein Web-Service? Web-Anwendungsserver Anwendungs-programm Service-Proxy Service-Listener 7

  8. Was ist ein Web-Service? • Paradebeispiele • Google: Google-Suche auf der eigenen Seite, z. B. sjaensch.org • Amazon: Shop-Suche als Partnerprogramm, z. B. http://www.php9.com/amazon.php • Dell: Warenwirtschaftssystem • 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 8

  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 9

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

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

  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. 12

  13. Web-Services ausprobieren • Kleines Beispiel zum Ausprobieren: <?php $client = new SoapClient('http://www.xmethods.net/sd/2001/BabelFishService.wsdl'); $result = $client->BabelFish('de_en', 'Hallo Welt'); echo $result; ?> 13

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

  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 W3C ein • Die aktuelle Version von SOAP ist 1.2 und liegt seit Juni 2003 als Empfehlung beim W3C vor 15

  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. 16

  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ührung • SOAP Version 1.2 Part1: Messaging Framework →Aufbau und Funktionsweise einer SOAP-Nachricht • SOAP Version 1.2 Part2: Adjuncts →Zusätzliche Definitionen 17

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

  19. SOAP: Nachrichtenformat • Beispiel: <?xml version=„1.0“ encoding=„utf-8“?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XML-Schema-instance" Xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Header>...</env:Header> <env:Body> <r:reservierung xmlns:r="http://www.airborel.de/Reserierung"> <r:hinflug> <r:abflugort>Freiburg</r:abflugort> <r:ankunftsort>Los Angeles</r:ankunftsort> </r:hinflug> <r:rueckflug>...</r:rueckflug> </env:Body> </soap:Envelope> Header (optional) Namensraum für den anwendung-spezifschen Teil SOAP-Nachricht SOAP-Nachrichten verwenden einen eigenen Namensraum für alle Tags, die zum Envelope gehören (hier env) 19

  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 20

  21. SOAP: Übermittlung Anfrage Sender Empfänger Antwort Nachricht Sender Empfänger • Dialogorientierte MEP • Nachrichten werden in einer Richtung zwischen den SOAP-Knoten ausgetauscht • asynchron • RPC-MEP • Anfrage-Antwort • synchron 21

  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 22

  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: http://schemas.xmlsoap.org/soap/encoding • SOAP-Spezifikation 1.2: http://www.w3.org/2003/05/soap-encoding • 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 23

  24. SOAP-Encodings • Datentypen • An die Datentypen des XML-Schema-Standards angelehnt: http://www.w3.org/TR/xmlschema-2/ • Aufteilung in einfache (primitive) und komplexe Datentypen • Primitive Datentypen: String, boolean, int, byte… • Komplexe Datentypen: Array 24

  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! 25

  26. SOAP: Aufbau 26

  27. Web-Service: Beispiel • Im Browser bitte folgende URL eingeben: • http://www.xmethods.net 27

  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! 28

  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 29

  30. Wo wird die WSDL eingesetzt? WSD Web-Service-Verzeichnis Finden Publizieren WSD Web-Service-Anbieter Web-Service-Nutzer Interaktion SOAP • Interaktionsmodell 30

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

  32. WSDL: Aufbau • Beispiele: • Google : http://api.google.com/GoogleSearch.wsdl • Amazon: http://soap.amazon.com/schemas2/AmazonWebServices.wsdl • Vascoda: http://vifphys.tib.uni-hannover.de/WebServices/VASCODA/vascoda.wsdl 32

  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: http://uddi.microsoft.com 33

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

  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 35

  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? 36

  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. 37

  38. SOAP in der Praxis • Der Weg zum eigenen Web-Service mit SOAP 38

  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 39

  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 40

  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<irgendetwas>" austauschen. • Diese Datei muss nur noch integriert eingebunden werden: • require_once "nusoap.php" 41

  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.php 42

  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 43

  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-0.10.1 • PEAR::SOAP wird z. B. require_once "SOAP/Server.php" um einen Web-Service zu erstellen 44

  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 45

  46. WSDL • WSDL mit PEAR::SOAP 46

More Related