WebServices: Kommunikation



Ähnliche Dokumente
XML-RPC & SOAP. Sven Heß & Fabio Caprera Systemprogrammierung SS 08

Implementierung von Web Services: Teil I: Einleitung / SOAP

Architektur von SOAP basierten Web Services

XML-RPC, SOAP und Web Services. Jörn Clausen

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Verteilte Systeme: Übung 4

Wiederholung: Beginn

FuE-Bereich IuK-Systeme im Gesundheitswesen

Workflow, Business Process Management, 4.Teil

Thema: Web Services. Was ist ein Web Service?

Web-Konzepte für das Internet der Dinge Ein Überblick

RESTful Web. Representational State Transfer

Flash, Network und Facebook. Steven Mohr

WSDL. Web Services Description Language. André Vorbach. André Vorbach

SAP NetWeaver Gateway. 2013

VVA Webservice Online Lieferbarkeits-Abfrage

Containerformat Spezifikation

Java und XML 2. Java und XML

Zustandsgebundene Webservices

Containerformat Spezifikation

SOA. Prof. Dr. Eduard Heindl Hochschule Furtwangen Wirtschaftsinformatik

Aufbau von SOAP- Nachrichten

Man liest sich: POP3/IMAP

SOAP, WSDL, UDDI. Martin Grimmer. Proseminar: Die Zukunft der Softwareentwicklung: Komponentensysteme/Web Services Vortrag 1 am

SMS-API. Sloono Schnittstellenbeschreibung. Version 1.2 Stand

Übersicht. Angewandte Informatik 2 - Tutorium 6. Teile einer WSDL-Datei. Was ist WSDL. Besprechung: Übungsblatt 5

Anwendungsprotokolle: HTTP, POP, SMTP

Vergleich SOAP und REST

Grundlagen der Web-Entwicklung INF3172

FAQ IMAP (Internet Message Access Protocol)

Web Grundlagen zum Spidering

AJAX Implementierung mit Joomla!

OP-LOG

SOA mit.net: Vom Geschäftsprozess zur Lösung

SOAP Simple Object Access Protocol

IMAP und POP. Internet Protokolle WS 12/13 Niklas Teich Seite 1

pr[sms] MMS-MM7/SOAP Schnittstelle Version: 1.1 Stand: Autor: Gollob Florian

Programmers Manual Geodaten Ver. 2.0

Inhaltsverzeichnis. Open-Xchange Authentication & Sessionhandling

Autor: Peter Seemann Seminar: Softwarearchitekturen Betreuer: Benedikt Meurer

Web Sockets mit HTML5. Quelle:

XML und SOAP Einführung und Grundlagen

Systembeschreibung. Masterplan Kommunikationsinterface. ASEKO GmbH. Version 1.0 Status: Final

Erstellen von Mailboxen

XML-RPC zur Backend- Kommunikation in einem mobilen SBB-Projekt

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

Web Service Entwicklung mit Java. Sven Lindow

Automatisches Beantworten von - Nachrichten mit einem Exchange Server-Konto

Auszug aus JAX-WS Folien

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services?

Schnittstellenspezifikation: ZEUS Web Services

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Entwurf zum Web-Service Rechnung

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

XML-Webservices & SOAP

Themen. Anwendungsschicht DNS HTTP. Stefan Szalowski Rechnernetze Anwendungsschicht

AVM Home Automation. HTTP Interface AVM

ÖSTERREICH RECHNET MIT UNS. Standard e-rechnungs-webservice (SERWS) - Status DI Philip Helger, BRZ

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

Webservices Ein Vortrag von:

RSS Push Verfahren. Hongliang Jiang, Roland Höpfner Seminar Moderne Webtechnologien AG-NBI. 18. November 2009

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Übungen Programmieren 1 Felix Rohrer. Übungen

Betr.: Neuerungen eps Online-Überweisung

Software Reuse Sommer 2004

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin

IAWWeb PDFManager. - Kurzanleitung -

SOAP Integrationstechnologie für verteilte Middlewarearchitekturen?

Übungen zur Softwaretechnik

Gliederung. 1. Einleitung (1) 1. Einleitung (3) 1. Einleitung (2)

Einführung in IP, ARP, Routing. Wap WS02/03 Ploner, Zaunbauer

XMPP: Extensible Messaging and Presence Protocol

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Rechnernetze Übung 12

ACCOUNTINFO 1.01 VERWENDEN DER ACCOUNTINFO-SCHNITTSTELLE ABFARGE VON ACCOUNT-INFORMATIONEN IN ECHTZEIT 02. MÄRZ 2010

Architektur von REST basierten Webservices

Web-Sevices : WSDL Entwicklung von Web-Anwendungen

VMware vrealize Log Insight- Entwicklerhandbuch

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Motivation. Inhalt. URI-Schemata (1) URI-Schemata (2)

Technische Anforderungen. zum Empfang. von XML-Nachrichten

Sorgfalt im Umgang mit Identitätskennungen (fürs Zertifikat)

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

ICS-Addin. Benutzerhandbuch. Version: 1.0

Session Management und Cookies

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

Windows Server 2008 für die RADIUS-Authentisierung einrichten

Zeiterfassung für Projekte. SOAP-Schnittstelle. Juli 2013 Version 4.7

Leistungsbeschreibung Click2SMS 1.0

Urlaubsregel in David

Transkript:

WebServices: Kommunikation

WS Basiskomponenten & Rollen SOAP XML-RPC SOAP XML-RPC

WS-Kommunikations Paradigmen Kommunikation nicht an bestimmte Level5-Protokolle gebunden Üblicherweise jedoch: SOAP XML-RPC Kommunikation ebenfalls nicht an bestimmte Transport- Protokolle gebunden! HTTP JMS Partner müssen sich vorher auf Protokolle geeinigt haben

Kommunikation: RPC vs. Document-Style Document-Style Aufruf eines Dienstes Ergebnis: Dokument/Datei Vergleichbar mit Browser RPC: Remote Procedure Call Funktionsaufrufe bei entfernten Maschinen/Diensten Liefern in der Regel ein Ergebnis zurück

XML-RPC Einfaches Protokoll für entfernte Funktionsaufrufe über HTTP Knappe Spezifikation XML als Payload in HTTP Codierung der Übergabeparameter Request-Response-Prinzip Request via HTTP-POST

XML-RPC: Request Beispiel POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 (WinNT) Host: calcservice.example.com Content-Type: text/xml Content-length: 181 <?xml version="1.0"?> <methodcall> <methodname>calculator.add</methodname> <params> <param> <value><int>41</int></value> </param> <param> <value><int>10</int></value> </param> </params> </methodcall>

XML-RPC: Request Anforderungen HTTP Header: Content-type = text/xml Content-Length muss angegeben sein HTTP Payload: XML-Dokument Eine einzige <methodcall> Struktur <methodcall> muss <methodname> enthalten <params> <param> <value> <Datentyp> Wert

XML-RPC: Datentypen 1 <string>: Defaultdatentyp <i4>, <int>: 4byte signed integer <boolean> <double> <datetime.iso8601>: z.b. 20080717T14:08:55 <base64>

XML-RPC: Datentypen 2 - Arrays <array> <data> <value><i4>12</i4></value> <value><string>egypt</string></value> <value><boolean>0</boolean></value> <value><i4>-31</i4></value> </data> </array>

XML-RPC: Datentypen 3 - Structs <struct> <member> <name>lowerbound</name> <value><i4>18</i4></value> </member> <member> <name>upperbound</name> <value><i4>139</i4></value> </member> </struct>

XML-RPC: Response Beispiel HTTP/1.1 200 OK Connection: close Content-Length: 158 Content-Type: text/xml Date: Fri, 17 Jul 1998 19:55:08 GMT Server: UserLand Frontier/5.1.2-WinNT <?xml version="1.0"?> <methodresponse> <params> <param> <value><int>51</int></value> </param> </params> </methodresponse>

XML-RPC: Response Format HTTP Header: Wenn keine überliegenden Fehler: Response-Code = 200 OK Content-type: text/xml Payload:

XML-RPC: Vor- und Nachteile Vorteile: Geringe Komplexität Einfache Umsetzung von RPCs Nachteile Keine Schnittstellenbeschreibung keine lose Kopplung Keine Namespaces Wenige Datentypen Direkt an HTTP gebunden

SOAP Früher: SOAP v1.1 Simple Object Access Protocol Heute: SOAP v1.2 Kein Akronym mehr W3C-Recommondation http://www.w3c.org/tr/soap Unterteilung: SOAP v1.2 Part 0: Primer SOAP v1.2 Part 1: Messaging Framework SOAP v1.2 Part 2: Adjuncts

SOAP Bindings Spezifikation darüber, wie SOAP in Protokolle der unterliegenden OSI Layer eingebracht werden kann In SOAP 1.2 Part 2: Lediglich HTTP Binding definiert Weitere Bindings über Eigendefinitionen möglich Es exisitieren im Netz weitere Bindings (z.b. SOAPover-SMTP), die jedoch nicht standardisiert sind!

SOAP Aufbau SOAP = SOAP Env. Header Optional Kann Applikationsspezifische Metadaten aufnehmen Sicherheitsinformationen Body Payload

SOAP 1.2 XSD

SOAP Beispiel Nachricht I (RPC Request) <?xml version="1.0"?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <t:transaction xmlns:t="http://thirdparty.example.org/transaction" env:encodingstyle="http://example.com/encoding" env:mustunderstand="true">5</t:transaction> </env:header> <env:body> <m:add env:encodingstyle="http://www.w3.org/2003/05/soap-encoding" xmlns:m="http://calculator.example.org/"> <m:summand>41</m:summand> <m:summand>10</m:summand> </m:add> </env:body> </env:envelope>

SOAP Beispiel Nachricht II (RPC Response) <?xml version="1.0"?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <t:transaction xmlns:t="http://thirdparty.example.org/transaction" env:encodingstyle="http://example.com/encoding" env:mustunderstand="true">5</t:transaction> </env:header> <env:body> <m:addresponse env:encodingstyle="http://www.w3.org/2003/05/soap-encoding" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"> xmlns:m="http://calculator.example.org/"> <rpc:result>m:sum</rpc:result> <m:sum>51</m:sum> </m:addresponse> </env:body> </env:envelope>

SOAP Beispiel Nachricht III (Conversational) <?xml version="1.0"?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustunderstand="true"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference> <m:dateandtime>2001-11-29t13:35:00.000-05:00</m:dateandtime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustunderstand="true"> <n:name>åke Jógvan Øyvind</n:name> </n:passenger> </env:header> <env:body> <p:itineraryclarification xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:departure> <p:departing> <p:airportchoices>jfk LGA EWR</p:airportChoices> </p:departing> </p:departure> <p:return> <p:arriving> <p:airportchoices>jfk LGA EWR</p:airportChoices> </p:arriving> </p:return> </p:itineraryclarification> </env:body> </env:envelope>

SOAP Fault Überträgt spezifiziert Fehlermeldungen in einer SOAP Nachricht Definiert als erstes Kindelement innerhalb von env:body Struktur: siehe Schema nächste Folie

SOAP Fault

SOAP Fault Beispiel <?xml version="1.0"?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"> <env:body> <env:fault> <env:code> <env:value>env:sender</env:value> <env:subcode> <env:value>rpc:badarguments</env:value> </env:subcode> </env:code> <env:reason> <env:text xml:lang="en-us">processing error</env:text> <env:text xml:lang="de-de">verarbeitungsfehler</env:text> </env:reason> <env:detail> <e:myfaultdetails xmlns:e="http://example.org/faults"> <e:message>invalid Application-ID</e:message> <e:errorcode>999</e:errorcode> </e:myfaultdetails> </env:detail> </env:fault> </env:body> </env:envelope>

SOAP Fault Fault Codes VersionMismatch MustUnderstand DataEncodingUnknown Sender Receiver

SOAP Processing Modell - Nodes Ursprünglicher Absender (initial SOAP sender) Zwischenstation (SOAP Intermediary) Endgültiger Empfänger (ultimate SOAP Receiver/Recipient)

SOAP Processing Modell - Rollen In Headerblöcken als Attribut env:role über URIs definiert none next ultimatereceiver Benutzerdefinierte URIs Schreiben Verarbeitungsweise der Infoblöcke vor Knoten Rolle Fehlt none next ultimate Receiver Zwischenstation Endgültiger Empfänger

SOAP Processing Modell Infoblöcke im Header können als MUSS Verarbeitung festgelegt werden Mittels Attribut env:mustunderstand Wenn Attribut=false oder fehlt, optionale Verarbeitung möglich Wenn Verarbeitung nicht möglich SOAP Fault

SOAP Fault Beispiel Processing Fehler <?xml version='1.0'?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <env:notunderstood qname="t:transaction" xmlns:t="http://thirdparty.example.org/transaction"/> </env:header> <env:body> <env:fault> <env:code> <env:value>env:mustunderstand</env:value> </env:code> <env:reason> <env:text xml:lang="en-us">header not understood</env:text> </env:reason> </env:fault> </env:body> </env:envelope>

SOAP Processing Modell Weiterleitung von Header-Blöcken Definiert durch optionales env:relay Attribut im Header-Block Trifft nur zu für SOAP-Intermediäre Trifft nur zu wenn mustunderstand!= true Hintergrund: Standardverhalten von SOAP Intermediären: Entfernung von allen nicht verarbeiteten Header-Blöcken vor Weiterleitung der Nachricht

SOAP Weiterleitung Rolle Header Block Name Eingenommen Verstanden & Verarbeitet next Benutzer-definiert ultimatereceiver Ja Ja Ja Nein Ja Nein Nein - Ja Ja Ja - Nein - none Nein - Ja Weiterleitung Nein* Wenn relay= true Nein* Wenn relay= true *: es sei denn, Header-Block durch Verarbeitung neu eingefügt

SOAP Weiterleitung - Beispiel <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <p:oneblock xmlns:p="http://example.com" env:role="http://example.com/log" env:mustunderstand="true">...... </p:oneblock> <q:anotherblock xmlns:q="http://example.com" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:relay="true">...... </q:anotherblock> <r:athirdblock xmlns:r="http://example.com">...... </r:athirdblock> </env:header> <env:body>...... </env:body> </env:envelope> Muss-Verarbeitung Optionale Neueinspeisung des Blocks Keine Weiterleitung, wenn nicht verarbeitet Weiterleitung auf jeden Fall, auch wenn keine Verarbeitung stattfindet bzw. der Knoten den Block nicht versteht

SOAP Processing Modell SOAP Processing Steps: 1. Rollen-Ermittlung, die ein Knoten einnimmt 2. Identifizierung aller obligatorischen Header-Blöcke, die an den Knoten gerichtet sind 3. Falls Blöcke aus (2) nicht verarbeitbar sind SOAP Fault und keine weitere Verarbeitung 4. Verarbeitung aller obligatorischen und ggf. optionaler Header-Blöcke, die an den Knoten gerichtet sind. Wenn Knoten = ultimatereceiver, dann auch env:body verarbeiten 5. Wenn Knoten = Intermediary, dann Weiterleitung der Nachricht (unter Beachtung von Header-Blöcken)

SOAP Adressierung Durch Transportprotokoll geregelt i.d.r. wird ein Service-Endpunkt mittels einer URL benannt SOAP-Dispatcher Schaffung einer WS übergreifenden Adressierungs- Spezifikation WS-Adressing (W3C Submission)

SOAP-Adressierungs- und Verarbeitungs- Problematik bei SOAP-Dispatcher SOAP Methoden-Name erst innerhalb des SOAP-Bodys UltimateReceiver muss komplette SOAP-Nachricht parsen, bevor er den eigentlichen Dienst aufrufen kann Bsp: UltimateReceiver = ShopSystem-Service Erreichbar über URL http://example.com/exampleshop (SOAP Dispatcher) Funktionen: getarticlelist() getarticle() order() Alle Funktionen sind über gleiche URL mittels SOAP Nachrichten anzusprechen, Dispatcher entscheidet anhand des SOAP-Bodys, welche Service-Funktion gewählt werden soll Nachteil: Erhöhte Verarbeitungsdauer; keine eindeutige, funktions- bzw. Ressourcen-orientierte Adressierung möglich Vorteil: Für WS-Konsumenten ist nur ein Endpunkt sichtbar

SOAP-Dispatcher SOAP envelope Request (XML doc) HTTP POST URL 1 getarticlelist() Response (XML doc) HTTP Response Request (XML doc) Response (XML doc) order (XML doc) HTTP POST HTTP POST URL 1 HTTP Response URL 1 Web Server SOAP Server getarticle(id) submit(order) Response (XML doc) HTTP Response

SOAP-Dispatcher HTTP POST getarticlelist() HTTP POST URL 1 SOAP Server getarticle(id) HTTP POST submit(order)

SOAP HTTP Binding Bei Request-Response Message Exchange Pattern: HTTP POST Bei Response Message Exchange Pattern: HTTP GET Bei Faults: HTTP Status Code 500 Internal Server Error mit SOAP Fault als Payload

SOAP-HTTP Binding und Adressierung SOAP 1.2 erlaubt Benennung der auszuführenden Methode (SOAP Action) auch außerhalb des SOAP- Payloads Beispiel Client: POST /exampleshop/exampleservice HTTP/1.1 SOAPAction: "getarticlelist" <?xml version='1.0' encoding='utf-8'?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:body /> </env:envelope>

SOAP Vor- und Nachteile Vorteile: Hoher Spezifizierungsgrad & aktuelle Weiterentwicklung Unterstützung Namespaces Spezifizierte APIs Ermöglicht Loose Kopplung Nicht nur RPC durchführbar Keine harte Bindung an HTTP Trennung von Nutzdaten und Metadaten Multi-Hop-fähig Nachteile Relativ komplex (im Vergleich zu XML-RPC)

REST REpresentational State Transfer Hervorgegangen aus R. Fieldings Ph.D. Dissertation beschreibt einen Architekturstil von Netzwerksystemen REST ist kein Standard/Spezifikation Empfiehlt jedoch den Einsatz von einigen Standards: HTTP, URL, XML/HTML/GIF/JPEG/etc.

REST Client: Zugriff mittels Links auf Ressourcen des Server Antwort des Servers: Representation of the applications state Zugriff/Links: state transitions Zielsystem/Server/Service/Anwendung: state machine State-Transitions eng an HTTP-Methoden gebunden Interaktionen sind zustandslos

REST: HTTP Methoden HTTP GET: Abrufen einer Ressource HTTP POST: Erstellung einer neuen Ressource HTTP PUT: Aktualisierung einer Ressource HTTP DELETE: Löschen einer Ressource

REST: Ressourcen Ressourcen identifiziert mittels URIs Repräsentation des Ressourcen-Inhalt nicht festgelegt Anwendungsabhängig, i.d.r. jedoch HTML, XML, o.ä. Ressourcen können Verweise auf weitere (Folge-) Ressourcen enthalten

REST: Beispiel HTTP GET request URL 1 Response (HTML/XML doc) HTTP response Article List HTTP GET request URL 2 Response (HTML/XML doc) HTTP response Web Server Article Order HTTP POST URL 3 (HTML/XML) URL zur übermittelten Bestellung HTTP response Order

REST: Beispiel [Schritt 1: Artikelliste abrufen] Client: GET /shopsystem/articlelist HTTP/1.1 Server-Antwort: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="utf-8"?> <al:articlelist xlmns:al= urn:example.org:shopsystem:alist xlmsn:xlink= http://www.w3.org/1999/xlink > <al:article id= 01 xlink:href= http://example.org/shopsystem/article/01 /> <al:article id= 02 xlink:href= http://example.org/shopsystem/article/02 /> </al:articlelist>

REST: Beispiel [Schritt 2: Artikel abrufen] Client: GET /shopsystem/article/01 HTTP/1.1 Server-Antwort: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="utf-8"?> <a:article a:id= 01 xlmns:a= urn:example.org:shopsystem:article > <a:name> </a:name> <a:details> </a:details> </a:article>