1
(SOAP, REST, WSDL)
2
Web Service – Definitionen?
Gartner Group: „Web services are software
technologies, making it possible to build bridges between IT systems that otherwise would require extensive
development efforts.“
Forrester Research: „Software designed to be used by other software via Internet protocols and formats“
W3C: „A Web service is a software application identified by a URI, whose interface and bindings are capable of being defined, described and discovered as XML
artifacts. A Web service supports direct interactions with other software agents using XML-based Messages
exchanged via internet-based protocols. (October 2002)“
OASIS: „Service Oriented Architecture (SOA) is a paradigm for organizing and utilizing distributed
capabilities that may be under the control of different ownership domains.“ (2006)
3
Serviceorientierten Architektur (SOA)
Dienst beschreibt eine eigenständige Funktionalität
– Funktionalität durch Dienst vollständig implementiert
– eigenständig aus Sicht des Dienstnutzers
Eine öffentliche Schnittstelle ist verfügbar
– alle Angaben in beschreibender Form
– hersteller-, plattform- und technologieneutrale Beschreibung
Jeder Dienst ist eigenständiges Artefakt
– Dienst austauschbar durch andere Implementierung
Kenntniss der Interna des Dienstes nicht
notwendig
4
WS-* Universum
WS-* Universum
WS-BPEL
WS-BPEL WS-
Transaction WS-
Transaction WS-Security
WS-Security WS-PolicyWS-Policy
UDDIUDDI ??
5
Basiskomponenten
Kommunikation
Dienstbeschreibung
Verzeichnisdienst
SOAP beschreibt das XML-basierte Nachrichtenformat der Kommunikation und dessen Einbettung in ein
Transportprotokoll
WSDL ist eine XML-basierte Beschreibungssprache, um Web Services (Dienste) zu beschreiben
UDDI beschreibt einen Verzeichnisdienst für Web Services. UDDI spezifiziert eine standardisierte Verzeichnissstruktur für die Verwaltung von Web
Services-Metadaten: allgemeine Anforderungen, Web- Service-Eigenschaften, benötigte Informationen zum Auffinden von Web Service
6
Merkmale einer SOA
Lose Kopplung
Dynamisches Binden
Verzeichnisdienst
Verwendung von Standards
Einfachheit
Sicherheit
Komplexe Aspekte
– Automatisierung der Kommunikation
– Geschäftsprozessmodellierung
– Ereignisse
– Semantik
7
Vorläufer und artverwandte Technologien
Sun RPC (1985)
Microsoft COM (1993)
– für prozessinterne Aufgabenstellung, nicht für Netzwerkkommunikation geeignet
CORBA (1992)
Microsoft DCOM (1996)
– CORBA-Pendant für die Windows-Welt
– Weiterentwicklung: COM+ ab Windows2000
Java RMI (1996)
8
Web Services Stack
Network Service Description XML-based
Messaging Service Publication
Service Discovery Service Flow
Security Management Quality of services
HTTP, HTTPS, SMTP … SOAP
WSDL UDDI UDDI, WS-Inspection
WS-BPEL
Components Requirements
9
Was ist SOAP?
ursprünglicher Name: Simple Object Access Protokoll
XML-Markup-Language
weist Ähnlichkeiten zu Protokoll auf
SOAP-Spezifikation beschreibt nur Aufbau einer Nachricht, nicht den Versand!
Eigenschaften:
– Regeln, wie Daten in Nachrichten einzubinden und zu interpretieren sind, Konventionen für XML-basierten RPC
– keine Vorschriften zur Semantik
– kann beliebige Transportprotokolle nutzen, z.B. HTTP, SMTP, FTP, auch TCP/IP
– ermöglicht transparenten Zugang zu Applikationen über Standardport des Webservers – somit Bindeglied zwischen Applikationen
10
Grundansatz: Serialisierung
class PurchaseOrder { String item = “socks”;
int amount = 1;
}
<PurchaseOrder>
<item type=“xsd:string”>
socks
</item>
<amount type=“xsd:int”>
1
</amount>
</PurchaseOrder>
Serializer
• Eigene Serialisierungs-Spezifikationen möglich
• Standard-Serialisierung:
– Objekte bzw. Objektstrukturen üblicher Typsysteme (Java, C#, C++) werden auf XML abgebildet
– Arrays und Referenzen sind auch möglich
11
Metapher des
»E-Umschlags«
SOAP ‘document style’
– packt XML in Envelope
12
Hub Sender/
Empfänger
Hub Sender/
Empfänger Vermittlung
Knoten
13
REST? Der Rest von was?
Alternative zu SOAP
REST = REpresentational State Transfer
kein eigenes Protokoll, keine eigene Nachricht
beschreibt Architekturstil für Webstandards:
Webanwendung besteht aus Sammlung von
Ressourcen, die über HTTP-Operationen angesprochen werden
entwickelt von Roy Fielding in seiner Dissertation 2000
Architektonische Elemente von REST
– Ressourcen und Repräsentationen
– Einheitliche Schnittstellen
– Hypermedia (Verknüpfung)
14
SOAP
Ressource:
– Quelle an einer beliebigen Stelle im Web, eindeutig identifizierbar über URIs oder auch URLs
– in REST: Komponenten einer Applikation
– Beispiele: Darlehensanträge, Werbung, Bilder
URIs / URLs in Browser als Link oder Lesezeichen hinterlegt
Unterstützung bei unterschiedlichen Repräsentationen derselben Ressource (Content Negotiation)
Direkter Zugriff auf Ressourcen durch Applikation (kein umständliches Entpacken, Bearbeiten usw. wie in
SOAP)
15
SOAP(2)
einheitliche Schnittstellen
– Dienstnutzer weiß, wie Daten zu bekommen sind
– immer gleiche Operationen – angelehnt an HTTP
– Ressource durch Browser nutzbar (anders als bei SOAP)
REST-konforme Schnittstelle durch Nutzung von HTTP generisch
Operationen
– GET: Abfrage der Repräsentation einer Ressource
– POST: Anlegen einer Ressource oder Starten von Prozessen auf Server
– PUT: Ressource auf Server anlegen oder verändern
– DELETE: Löschen von Ressourcen
– HEAD: Abfrage von Metadaten über Ressource durch Client
– OPTIONS: Abfrage vorhandener Methoden an einer Resource
Web Services erhalten bei neuen Anforderungen immer neue Schnittstellen mit passenden Datentypen und Operationen
16
SOAP(3)
Hypermedia (Verknüpfung)
– Verknüpfen und Nutzen von Ressourcen untereinander
– Eigentliche Verlinkung enthält Inhalt, der Nachricht selbst repräsentiert
– von Ressourcenname zu Prozess …
Standards
– HTTP: GET, POST, DELETE, PUT
– Datenformate: XML, XHTML, PNG, GIF, JPEG, HTML
– MIME-Typen für HTTP undd URIs
Nachrichten
– Übertragung in allen gängigen Formaten
– Keine speziellen Formate erforderlich
– REST-Nachricht selbsterklärend – ohne Wissen über zuvor versendete oder später zu versendende Nachrichten
– Status der Nachricht über den Inhalt (also die Repräsentation) des Hypertext-Dokuments abgebildet
– Ressource durch Browser nutzbar (anders als bei SOAP)
17
WSDL
WSDL = Web Services Definition Language
Beschreibt WebServices in XML Notation
Funktion wie IDL in Corba (aber nicht nur abstrakte Beschreibung)
ist plattform-, protokoll- und programmiersprachenunabhängig
Spezifikation unter www.w3.org/TR/wsdl
spezifiziert ein Interface zu einem Dienst – nur syntaktische Elemente
nicht vorhanden (dafür gibt‘s andere Standards):
– QoS-Informationen (z.B. Kosten, Antwortzeit)
– Sicherheitsbestimmungen
– semantische Beschreibung (Effekte einer Operation)
besitzt die Dateiendung .wsdl
Historie:
– Veröffentlichung von WSDL 1.1 durch im März 2001
– WSDL 2.0 veröffentlicht im Juni 2007
18
WSDL
WSDL beantwortet die 4 elementaren Fragen:
– Welche Datentypen gibt es?
<types/> Element
– Welche Funktionalität besitzt der Dienst?
<message/> und <interface/> Element
– Wie wird kommuniziert?
<binding/> Element
– Wo befindet sich der Dienst?
<service/> Element
19
Elemente in WSDL
Message: Abstrakte Definition der auszutauschenden Daten (typischerweise auf XML-Basis)
Operation: Abstrakte Aktionen, die ein Service unterstützt (d.h. Menge von Input und Output Messages)
Port Type: Menge von Operationen, ab WSDL 1.2 Interface
Binding: Beschreibt Abbildung eines Interfaces auf konkretes Datenübertragungsprotokoll (z.B. SOAP)
Endpunkt (Port): Einzelner individueller "Endpunkt" mit konkretem Binding, identifiziert durch eine
Netzwerkadresse
Service: Sammlung zusammengehöriger Endpunkte
20
<?xml version=“1.0“ encoding=“utf-8“ ?>
<definitions ...>
Interface Definition
Interface Implementierung
</definitions> WSDL Dokument
Struktur eines WSDL Files
<types/> Types
<message/><interfaces/> Messages / Interfaces
<binding/> Bindings
<service/> Service Definition
21
WSDL
Welche Datentypen gibt es?
<types>
<schema targetNamespace="http://localhost/SOAPTraining" ...>
<complexType name=“Person">
<sequence>
<element name=“vorname“ type=“xsd:string“ />
<element name=“nachname“ type=“xsd:string“ />
</sequence>
</complexType>
<element name="el0" nillable="true" type="tns1:Person"/>
</schema>
</types>
22
WSDL
Welche Funktionalität besitzt der Dienst?
<wsdl:message name="addPersonResponse">
<wsdl:part name="addPersonResult" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="addPersonRequest">
<wsdl:part name="arg0" type="xsd:string"/>
<wsdl:part name="arg1" type="xsd:string"/>
<wsdl:part name="arg2" type="xsd:int"/>
</wsdl:message>
<wsdl:interface name="PersonServiceInterface">
<wsdl:operation name="addPerson">
<wsdl:input message="intf:addPersonRequest"/>
<wsdl:output message="intf:addPersonResponse"/>
</wsdl:operation>
</wsdl:interface>
23
WSDL
Wie wird kommuniziert?
<wsdl:binding name="PersonServiceSoapBinding“
type="intf:PersonServiceInterface">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="addPerson">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost/SOAPTraining" use="encoded"/>
</wsdl:input>
<wsdl:output>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost/SOAPTraining" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
24
WSDL
Wo befindet sich der Dienst?
<wsdl:service name="PersonService">
<wsdl:endpoint name="PersonServiceEP">
binding="intf:PersonServiceSoapBinding">
address="http://localhost:8080/axis/servlet/AxisServlet"/>
</wsdl:service>