Resource Management ↔ Application Logic ↔ Presentation
Total Page:16
File Type:pdf, Size:1020Kb
Web Services Introduction to Service-Oriented Computing Layers: Resource management ↔ application logic ↔ presentation (↔ client) Distributed Systems: Laufen zeitgleich auf mehreren computern und kommunizieren über Netzwerk Austausch erfolgt über jeweiligen application logic layer. Oft schwierig wegen Verwendung unterschiedlicher Betriebssysteme, Progammiersprachen, etc. Lösung: Service-Oriented Computing, d.h. Kommunikation über eigens eingerichteten Service. Vergleichbar mit facade software pattern. Wichtige Begriffe (Web) Services: Eigenständige Module, welche auf XML-Basis über ein Netzwerk aufgefunden, beschrieben, programmiert, orchestriert und veröffentlicht werden können. Service providers: Organisationen, welche Implementierungen, Beschreibungen und Support für einen Service anbieten. Service clients: Nutzer und Organisationen, welche Services Nutzen. Service aggregators: Organisationen, welche mehrere Services zu einem neuen vereinen. Service-oriented architecture (SOA): Art, software so zu designen, dass Services, über veröffentlichte und auffindbare interfaces, angeboten werden. Characteristika von Web Services (WS) Erfüllung einer einzigen Aufgabe als abgeschlossenes Modul (zB Input PLZ, Output Wetter) Teilen eines formalen Vertrags, welcher Informationsaustausch klar regelt Abstrahierung der darunterliegenden Programmlogik, diese bleibt verborgen Schwache Koppelung: Service interface unabhängig von Programmiersprache, Plattform etc.. Kann leicht ausgetauscht werden. Wiederverwendbarkeit durch andere Applikationen Dynamische Einbindbarkeit und Auffindbarkeit durch andere Applikationen Beschrieben durch standard description language (WSDL/WADL), functional- und non- functional requirements Verbreitet über das Internet durch bestehende Protokolle wie HTTP Funktionale Charakteristika geben genauere Auskunft über das Verhalten des Services, z.B. wie er aufgerufen oder lokalisiert wird, wie die Struktur des Nachrichtenaustausches ist. Frage des Systemdesings. Nicht-Funktionale Charakteristika beziehen sich auf Qualitätsindikatoren, wie Antwortzeit, Sicherheit, Authentifikation, etc.. Frage der Systemarchitektur. SOA weist im Vergleich zu Java geringe Kopplung auf, etwa wegen asynchroner Kommunikation, unterschiedlichen darunterliegenden Plattformen, dynamisch gebundenen Services, Unabhängigkeit von Betriebssystem und Programmiersprache1 Typen von Web Services SOAP/WSDL basiert: Service interface exponiert durch WSDL Dokumente, Nachrichtenaustausch über SOAP, client code kann über WSDL Beschreibung generiert werden. Ist mittlerweile fast schon überholt. REST (Respresentational State Transfer): Einfache Kommunikation mit Web Services, 1 Vollständige Gegenüberstellung: siehe WebServices-Vortrag-2016.pdf F 13 Resourcen durch URIs identifiziert, deren Status über HTTP durch GET, PORT, PUT, DELETE manipuliert wird. Sehr populär. Anwendungsgebiete von (Web) Services liegen zwischen Organisationen/Geschäftspartnern, und auch innerhalb einer Organisation, z.B. als Schnittstellen zwischen veralteten Systemen und neuen ERP-Systemen Vorteile von Web Services Interoperabel: Verbindung unterschiedlicher Systeme, Nutzung üblicher Standards Ökonomisch: Keine Installation, Wiederverwendbarkeit von Komponenten Automatisch: Kein menschliches Zutun nötig Zugänglich: Zugang zu veralteten Systemen und internen Anwendungen Verfügbar: Unabhängig von Endgerät, Zeit und Ort Lösung von Integrationsproblemen; Vervollständigung automatisierter Infrastruktur Service Oriented Architectures ...sind ein abstraktes Pattern, welches auf viele Web Services zutrifft SOA ist schwach gekoppelt mit business functions als geteilte und wiederverwendbare services Rollen: Service(Rg), -Requestor und -Provider Publish: Bereitstellung einer Beschreibung Find: Abrufen der Beschreibung Bind: Requestor stellt Interaktion mit Service her, indem die „binding details“ in der Beschreibung angewendet werden (Lokation, Kontaktierung, etc.) Rollen aus geschäftlicher bzw. technischer Sicht Service-Provider: Owner eines Services bzw. Plattform, welche den Service bereitstellt Service-Requestor: Geschäft bzw. Applikation Service-Registry: Durchsuchbares Register von Service-Beschreibungen SOA-Layers: Operational Systems (DBs, ERP, …) → Komponentenbasierte Servicerealisationen → Infrastruktur Services → Business Services → Business Processes → Business Domain Standards SOAP (W3C) – Nachrichtenaustauschformat. „Simple Object Access Protocol“ WSDL (W3C) – Zur Beschreibung was zwischen Provider und Requestor ausgetauscht wird. „Web Service Description Language“ UDDI (OASIS) – Basis für ein Datenverzeichnis Service. „Universal Description Discovery and Integration“ SOAP Andere Protokolle verlangten gewisse Implementierungsvoraussetzungen von Sender/Empfänger. Besteht aus Envelope: Beschreibt Nachrichteninhalt und Zugriff darauf Encoding Rules: bzgl. anwendungsdefinierter Datentypen Conventions: Für die Darstellung von Prozeduraufrufen und -antworten Beschreibt wie eine Nachricht formatiert ist, aber nicht wie sie bereitgestellt wird SOAP-Nachricht muss in Transport-Protokoll (meist HTTP) eingebettet sein SOAP transferiert Nachrichten zwischen Serviceinstanzen, die durch WSDL beschrieben werden Fundamentale WS-Nachrichtenaustauschpatterns: Strukur einer SOAP-Nachricht: Envelope ← (Header← Header Entries) (optional) ← Body ← Body Entries Nachrichten werden entlang SOAP-Nodes (transmit, receive, process, relay) geleitet. SOAP-Kommunikationsmodell unterstützt (2*2=)4 Styles 2 Kommunikationsstyles: Remote Procedure Calls (RPC) und Document Exchange (nur Nachrichten) 2 Encodingstyles: Encoded (Datentypen verschlüsselt in Nachricht) und literal (verweist auf XML-Schema) Relevant sind jedoch nur document/literal und RPC/literal RPC-Style Web Services erscheinen für client als remote Objekt. Requests werden durch Methodenaufrufe mit bestimmten Parametern ausgeführt => Starke Kopplung durch hardwireing <env:body><m:GetPrice><product-id>111<... Document-Style Web Services sind nachrichtengetrieben. Request als Document von Client an Service, Antwortnachricht erfolgt synchron oder asynchron <env:Body><p:PurchaseOrder orderDate="2010-05- 06" xmlns:p="http://www.supply.com/order"> <p:from>... Error Handling in SOAP über env:Fault Element mit Kindern <env:Code> <env:Reason> <env:Detail>. Bei Error wird env:Fault in Body retourniert. SOAP & HTTP: Client sendet POST mit SOAP Nachricht → Service Listener empfängt → Service Proxy decodiert Nachricht → Anwendung erhält function call, arbeitet ab, returned Wert → Service Proxy codiert Nachricht → Service listener sendet Antwort → Client erhält HTTP mit SOAP Antwort Vorteile von SOAP: Einfach (XML), plattformunabhängig, firewallfreundlich, Nutzung offener Standards, interoperabel (XML ist programmiersprachenabhängig), akzeptiert, beständig Nachteile von SOAP: Geringe Performance, stateless (requester muss sich immer neu „anmelden“), keine Serialisierung nach Referenz (Objekte nicht synchronisiert mit nicht Lokalen) WSDL Web Service Description Language ist ein XML-basiertes Spezifikationsschema. Es beschreibt die Schnittstelle eines Web Services, dient als Vertrag zwischen provider und client und beschreibt weiters was ein Service macht, wo er zu finden ist und wie er aufgerufen werden kann WSDL gliedert sich in abstrakten (Interface) und konkreten (Implementierung) Teil. Das Interface beschreibt die generelle Struktur, Operationen, Parameter und abstrakte Datentypen des WS. Types – messages – operations – port types. Die Implementierung bindet das Interface an konkrete Netzwerkadresse, Protokoll und Datenstrukturen. Ein Client kann eine Bindung zu einer Implementierung herstellen. Bindings – services and ports. <operation> Signaturen und I/O messages in <message>. Bestehend aus <input> <output> und <fault> Nachrichten. <binding><soap:binding>Definiert SOAP style (RPC/Document) und SOAP Protokoll</...> <operation>Definiert konkrete Operationen für referenzierten Port. Zudem die Kodierung (literal/encoded). Default: literal.</operation></binding> <service>Definiert ports des WS<port>Referenziert existierendes binding</port> <soap:address>URL des Services<... Beispiel F 49ff Messaging Patterns One-way: Sender –SOAP request→ Empfänger <operation><input></... Request/response: Sender –SOAP request→ Empfänger Sender ←SOAP response– Empfänger <operation><input><output></... Notifications: Sender ←SOAP request– Empfänger <operation><output></... Solicit/response: Sender ←SOAP request– Empfänger Sender –SOAP response→ Empfänger <operation><output><input></... UDDI Universal Description Discovery and Integration. „Gelbe Seiten für Web Services“. XML-Basiert. 3 Hauptsäulen: white pages – Adresse, Kontakt und bekannte Identifier yellow pages – Industrielle Klassifikation green pages – Metainformation über Services Wurde nie richtig populär, weil es sehr limitiert ist (keine komplexen Queries), rein technischen Fokus hat (keine Integration von Produktdaten, etc.), zu generisch ist und zu viele Fun-Einträge hat. Intraorganisational trotzdem noch brauchbar. (ERP ↔ EDI ↔ …). Java API for XML Web Services (JAX-WS) Einsatz von POJOs mit speziellen Annotationen (@WebService, @SOAPBinding, @WebMethod, @WebParam, @WebResult, @OneWay) XML-Verarbeitung durch JAX-B (Java Architecture for XML Binding) Marshalling: Java-Objekt → XML; Unmarshalling: XML → Java-Objekt Anwendungsentwicklungsvarianten Contract First: WSDL to Java. Besser für komplexe Web Service Projekte mit vielen Stakeholdern/Partnern. Tool: wsimport Contract Last: Java to WSDL. Besser geeignet für kleinere