B) Webserivces W3C Web Services Architecture Group: "Ein Web Service ist eine durch einen URI eindeutige identifizierte Softwareanwendung, deren Schnittstellen als XML Artefakte definiert, beschrieben und gefunden werden können. Ein Web Service unterstützt die direkte Interaktion mit anderen Softwareagenten durch XML basierte Nachrichten, die über Internetprotokolle ausgetauscht werden. WSDL: Webservice Description Language Hinweis: Der Begriff Webservice wird heute auch allgemeiner genutzt und subsummiert auch REST Services. Wiederholung: Beginn 1
PortType Porttypes definieren eine Menge abstrakter Methoden (Operations). Typischerweise hat man nur einen Porttype pro WSDL Jede Operation hat 0 oder 1 Input Messages und 0 oder 1 Output Messages Nur Input: Client schickt Message an Server (ohne Antwort vom Server) Nur Output: Server schickt Message an Client (ohne Antwort vom Client) Input und Output: Request Response Output und Input: Server schickt Message an Client und erwartet Bestätigung 2
Messages entsprechen Übergabeund Rückgabetypen In unserem Beispiel gibt es zwei Messages 1. "addition", zwei int-werte (summand1 und summand") 2. "additionresponse", ein int-wert Die Messages definieren die Übergabe und Rückgabetypen, die wiederum auf Datentypen verweisen (hier int), die in <types/> definiert sein können. Messages enthalten einen oder mehrere Parts (Parameter) 3
Encoding: literal: XML (lesbar) encoded: proprietäre encodede Daten. transport > SOAP (siehe nächste Seite), XML RPC > Protokoll: http, https, POP/SMTP soap:body: entweder literal oder encoded (kein XML) style: entweder rpc oder document 4
Beispiel für Response <soap:body> <m:getkunde xmlns:m="http://www.crm.com/kunden"> <m:item>1239</m:item> </ m:getkunde > </soap:body> Beispiel für Response <soap:body> <m:getkunderesponse xmlns:m="http://www.crm.com/kunden"> <m:kunde>schmidt</m:kunde> </ m:getkunderesponse > </soap:body> Wiederholung: Ende 5
Bemerkung: Der Webservice Explorer funktioniert nicht mit Java8. Daher muss die eclipse.ini wie folgt angepasst werden: Beispiel für einen SOAP Request (vom Typ RPC) SOAP-Request style = rpc mit Methodenname: ns0:addition mit Parametern SOAP Simple Object Access Protocoll Kommunikationsprotokoll zwischen Anwendungen XML basiert (Plattform und Programmiersprachen Unabhängigkeit) SOAP Nachrichten bestehen aus einem optionalen Head und einem Body Viel Overhead 6
Style: rpc (remote procedure call) > enthält Methoden und Übergabeparameter > stärkere Kopplung (API muss stimmen) document > Reines XML Dokument mit Daten > Schwächere Kopplung, Kommunikationspartner müssen sich einigen, was damit zu machen ist Quelle: http://mangstacular.blogspot.de/2011/05/wsdl soap bindings confusion rpc vs.html 7
ein Port kann unter mehreren Adressen (URIs) unter jeweils mehreren Bindings erreichbar sein URI, unter der der Webservice erreichbar ist 8
Messages Operations 9
Eigenen Webservice Client mit Java schreiben Kochrezept: 1. File > New > Dynamic Webproject 2. File > New > Web Service Client 10
Mit generiertem Proxy arbeiten 11
Eigenen Webservice Server mit Java schreiben 1. Variante: Mit Java >6 Klassen annotieren Pflicht, um Klasse als Webservice zu veröffentlichen (abweichender Name ist optional) Pflicht: Binding festlegen Nur als @WebMethod gekennzeichnete Methoden werden veröffentlicht Über Annotationen lassen sich die Namen von Übergabe-, Rückgabetypen und Methoden ändern Arbeiten mit nicht-primitiven Datentypen 12
Klasse um Webservice (Server) zu starten Automatisch erzeugte WSDL: Externe Schema-Datei, die den Datentyp Buch definiert: 13
Wir können wieder einen Client generieren, der diesen Webservice nutzt: Webservice entkoppeln Clients und Server über eine wohldefinierte Schnittstelle (WSDL) sowohl räumlich als auch technologisch (Client und Server können z.b. in verschiedenen Programmiersprachen entwickelt werden). => Schwache Kopplung 14
2. Variante: Java aus WSDL erzeugen lassen mit (Apache Axis2) 15
Server Artikel Manager Client Proxy Fassade Kunde Manager Fassade - verrät keine "echten" Geschäftsobjekte - kommuniziert nach außen nur mit DTOs - ist der einzige Ansprechpartner für Clients - kann Funktionalität als Webservice, REST oder API anbieten 16