1 Web Services (SOAP, REST, WSDL). © Prof. T. Kudraß, HTWK Leipzig 2 Web Service – Definitionen?...
-
Upload
kaiser-westen -
Category
Documents
-
view
111 -
download
0
Transcript of 1 Web Services (SOAP, REST, WSDL). © Prof. T. Kudraß, HTWK Leipzig 2 Web Service – Definitionen?...
1
Web Services(SOAP, REST, WSDL)
2
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK LeipzigDienste als kleinste Bestandteile in einer 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
© Prof. T. Kudraß, HTWK Leipzig
WS-* Universum
WS-* UniversumWS-BPELWS-BPELWS-
Transaction
WS-Transaction
WS-SecurityWS-Security WS-PolicyWS-Policy
UDDIUDDI ??
5
© Prof. T. Kudraß, HTWK Leipzig
Basiskomponenten Kommunikation Dienstbeschreibung VerzeichnisdienstSOAP 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
© Prof. T. Kudraß, HTWK Leipzig
Merkmale einer SOA Lose Kopplung Dynamisches Binden Verzeichnisdienst Verwendung von Standards Einfachheit Sicherheit Komplexe Aspekte
– Automatisierung der Kommunikation– Geschäftsprozessmodellierung– Ereignisse– Semantik
7
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
Web Services Stack
Network
Service Description
XML-based Messaging
Service Publication
Service Discovery
Service Flow
Sec
urity
Man
agem
ent
Qua
lity
of s
ervi
ces
HTTP, HTTPS, SMTP …
SOAP
WSDL
UDDI
UDDI, WS-Inspection
WS-BPEL
Components Requirements
9
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
Metapher des »E-Umschlags«
SOAP ‘document style’
– packt XML in Envelope
12
© Prof. T. Kudraß, HTWK Leipzig
HubSender/
Empfänger
HubSender/
Empfänger
Vermittlung
Knoten
13
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK LeipzigREST: Abgrenzung und Vergleich zu 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
© Prof. T. Kudraß, HTWK LeipzigREST: Abgrenzung und Vergleich zu 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
© Prof. T. Kudraß, HTWK LeipzigREST: Abgrenzung und Vergleich zu 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
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
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 NetzwerkadresseService: Sammlung zusammengehöriger Endpunkte
20
© Prof. T. Kudraß, HTWK Leipzig
<?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
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
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
© Prof. T. Kudraß, HTWK Leipzig
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>