Web Services Verschiedene Definitionen Web Service

Transcrição

Web Services Verschiedene Definitionen Web Service
Web Services
Web Service = Schnittstelle für den
netzbasierten Zugriff auf eine
Anwendungsfunktionalität, die vollständig
auf Standard-Internet-Technologien basiert
Web
Web
Netzwerk
SerService
vice
Anwendungslogik
A. Eberhart, S. Fischer: Web Services. München: Hanser 2003
286
© W. Wahlster, DFKI
Verschiedene Definitionen Web Service
z IBM: “Web services are self-contained, modular
applications that can be described, published,
located, and invoked over a network, generally,
the World Wide Web.”
z Microsoft: “a Web service is programmable
application logic, accessible using standard
Internet protocols,”
z Gartner Group: “a software component that
represents a business function (or a business
service) and can be accessed by another
application (a client, a server or another Web
service) over public networks using generally
available ubiquitous protocols and transports
(i.e. SOAP over HTTP).”
287
© W. Wahlster, DFKI
Just-in-time Integration
z Eine Anwendung findet
erst zur Laufzeit heraus,
Service
Service
Registry
welche Web Services sie
Registry
tatsächlich nutzen will.
1. Registrie2. Suche
z Der Dienst wird dann
rung
„just in time“ integriert.
z Vergleichbar mit „late
Service
Service
Service
binding“ in objektorientierter Service
Consumer
Provider
Provider
Consumer
Programmierung.
3. Bindung
z Vorgehen beruht auf der
„Web Service Architektur“
288
© W. Wahlster, DFKI
Technologie-Ebenen für Web Services
Entdeckung
Entdeckung
Beschreibung
Beschreibung
Verpackung
Verpackung
Transport
Transport
Netzwerk
Netzwerk
289
z Modularisierung der Aufgaben
z Angepasst an Internet Stack
z Entdeckung (discovery): finde
die Beschreibung von Web
Services
z Beschreibung (description):
beschreibe einen Web Service
z Verpackung (packaging):
kodiere die Daten in einem
allg. verständlichen Format
(=marshalling, serialization)
z Transport: Datentransport
zwischen Prozessen
z Netzwerk: Kommunikation
zwischen Maschinen im Netz
© W. Wahlster, DFKI
Wichtige Technologien für Web Services
z Web Services beruhen vor allem auf den
folgenden Technologien:
– XML als übergreifende
Datenbeschreibungssprache
– TCP/IP als zentrale Internet-Protokollfamilie
– HTTP, SMTP (Simple Mail Transfer Protocol)
als Datentransportprotokolle zwischen
Anwendungen
– WSDL: Web Services Description Language
– UDDI: Universal Description, Discovery, and
Integration
290
© W. Wahlster, DFKI
N-Tier Architekturen
z Verteilte (Web-)Anwendungen werden heute als
sog. „N-Tier-Anwendungen“ entwickelt (N=2,3,4)
z Jedes „Tier“ (Layer, Ebene) hat seine eigene
Aufgabe
z Vorteile
– geringere Komplexität der einzelnen Teile
– Verteilung der Implementierungsaufgaben
– Flexibilität bei der Verteilung der einzelnen Aufgaben
(thin client)
– erleichterte Wartbarkeit (keine Client-Software,
Austausch von Versionen)
– Skalierbarkeit, Sicherheit
291
© W. Wahlster, DFKI
3- und 4-Tier-Architekturen
Tier 1:
Präsentation
Tier 2:
Geschäftslogik
Tier 3:
Daten
Tier 1:
Präsentation
292
Geschäftslogik
Tier 2:
Web
Server
Tier 3:
Application
Server
Tier 4: Daten
© W. Wahlster, DFKI
Präsentationsebene
z Benutzerschnittstelle
z heute häufig als „thin client“ ohne jegliche weitere
Anwendungslogik, implementiert über den WebBrowser
z wichtigste Funktionen
– Eingaben des Benutzers „abholen“
– Ausgaben/Ergebnisse der Server-Seite der Anwendung
darstellen
z Wichtigste Technologien
– HTML und WML, vor allem Formulare (dominierend)
– Java Applets
293
© W. Wahlster, DFKI
Ebene der Geschäftslogik
z In dieser Ebene findet sich der Großteil der
Anwendungslogik wieder, bei E-Commerce z.B.
– Warenkorbfunktionen
– Preisberechnungs- und Bezahlfunktionen
z Die Ebene kann aus Skalierbarkeits- und Sicherheitsgründen physisch weiter aufgeteilt sein in
– den Web-Server, der das direkte (und oft einzige)
Interface zum Benutzer darstellt
– den Application Server, der weitere standardisierte und
nutzbare Dienste bereit stellt (Transaktionen, Security)
z Technologien: Servlets, JSP (Java Server Pages),
ASP (MS Active Server Pages), CORBA, EJB
(Enterprise Java Beans)
294
© W. Wahlster, DFKI
Die Datenebene
z Diese Ebene hat die Aufgabe, die eigentlichen
Daten der Anwendung zu verwalten,
bei E-Commerce z.B.
- Kundendaten
- Produktdaten
- Bestellungen
z Typische Implementierungen
Datenbanken wie DB2, Oracle, SQL Server
Enterprise Resource Planning Systeme wie R/3
295
© W. Wahlster, DFKI
Sinn von Servicebeschreibungen
z Um zu wissen, wie ein Service benutzt werden
kann, muss der Aufrufer irgendeine Art von
Dienstbeschreibung besitzen.
z Standardverfahren: textuelle Beschreibung z.B.
auf einer Web-Seite
z Besser: verwende eine formale,
maschinenverarbeitbare Beschreibung mittels
einer Dienstbeschreibungssprache
z Beschrieben werden gewöhnlich die
Schnittstellen, deshalb: Interface Definition
Language (IDL)
296
© W. Wahlster, DFKI
Die Rolle formaler Beschreibungen in der Web
Service Architektur
z Das in der Abbildung
gezeigte Schema
funktioniert nur mittels
formalisierter
Beschreibungen.
z Alle drei Schritte
benötigen die ServiceBeschreibung:
– Registrierung macht das
Aussehen des Dienstes
bekannt
– Suche basiert auf formal
definierten
Eigenschaften
– Bindung des Dienstes
verwendet die formale
Beschreibung zum
korrekten Aufruf
297
Service
Service
Registry
Registry
1. Registrierung
Service
Service
Provider
Provider
3. Bindung
2. Suche
Service
Service
Consumer
Consumer
© W. Wahlster, DFKI
Aufgabe einer Beschreibung
z Eine formale Dienstbeschreibung
muss/sollte/kann die folgenden Fragen
beantworten:
– Wer benutzt den Dienst? Wer bietet ihn an?
– Was wird angeboten? Æ Dienstschnittstelle
– Wo wird der Dienst angeboten? Æ Endpunkte,
URLs
– Warum wird der Dienst angeboten? Æ Aufgabe,
meist nicht formal
– Wie wird der Dienst angeboten? Æ Beschreibung
in der Dienstschnittstelle
298
© W. Wahlster, DFKI
WSDL
z WSDL ist ein „proposed standard“ der W3C.
z Vorgeschlagen von IBM, Microsoft und
anderen
z Aktuelle Version: 1.1
z Verfügbar unter: http://www.w3.org/TR/wsdl
z WSDL ist wie SOAP eine Anwendung der
XML-Spezifikation. Ein WSDL-Dokument ist
konform zur WSDL-Schema-Definition.
z Eine WSDL-Spezifikation beantwortet drei
Fragen:
299
z Was tut ein Service – welche Operationen stellt er
bereit?
z Wie wird auf den Service zugegriffen –
Datenformate, Nachrichten?
z Wo findet sich der Service – URL, etc.?
© W. Wahlster, DFKI
WSDL-Informationsmodell
z Eine WSDL-Spezifikation besteht einerseits
– aus abstrakten Spezifikationen von
Nachrichtentypen etc., andererseits
– aus konkreten Implementierungen dieser
Spezifikationen, also dem aktuell verfügbaren
Dienst
z Zur Beschreibung der abstrakten
Fähigkeiten dient der portType, zur
Beschreibung der aktuellen
Implementierung das binding-Element.
z Die Bindung wird mit einer Adresse
kombiniert; so erhält man einen konkreten
Endpunkt, über den die Implementierung
angesprochen werden kann.
300
© W. Wahlster, DFKI
WSDL-Sprachelemente
z portType: die abstrakte Definition einer Schnittstelle
(entspricht einem Java Interface)
z message: eine Menge von Parametern, die von den
Operationen verwendet werden
z Typen: alle Datentypen, die in den Nachrichten verwendet
werden
z binding: beschreibt, wie die Elemente eines abstrakten
Interfaces in eine konkrete Repräsentation umgewandelt
werden (Kodierungsschema, SOAP über HTTP)
z port: beschreibt, wie eine Bindung an einem konkreten
Endpunkt realisiert wird
z service: eine Sammlung von Endpunkten
301
© W. Wahlster, DFKI
Zusammenhang der Elemente
part
type
(abstrakte) message
(abstrakte)
operation
(konkrete) message
(konkrete)
operation
Konkretisiert
durch
enthält
service
Abstrakte
Schnittstelle
PortType
konkrete
Bindung
Konkreter Endpunkt (port)
302
© W. Wahlster, DFKI
Struktur eines WSDL-Dokuments
z Ein Service ist also eine
Sammlung von Ports.
z Ein Port hat eine abstrakte
Definition (portType) und
eine konkrete Realisierung
(binding).
z PortTypes sind Sammlungen
von abstrakten Operationen,
etc.
z Entsprechend sind WSDLDokumente aufgebaut.
303
Datentypen
<wsdl:types/>
Nachrichten
<wsdl:message/>
Schnittstellen
<wsdl:portType/>
Services
<wsdl:/binding/>
<wsdl:service>
© W. Wahlster, DFKI
XML Schemata zur Datenbeschreibung
z Bei einer Servicebeschreibung muss klar sein,
welche Struktur die ausgetauschten Datentypen
haben.
z WSDL erlaubt im Prinzip jedes
Spezifikationsmittel, allerdings steht XML
Schema eindeutig im Vordergrund.
z Um bei der Definition möglichst flexibel
beliebige Schemabeschreibungen verwenden zu
können, werden Namespaces eingesetzt.
z Damit werden Namen von Datentypen in einen
lokalen Kontext gesetzt.
304
© W. Wahlster, DFKI
Abstrakte Servicebeschreibung
<definitions= ....>
<wsdl:message name=“sayHello_IN“>
<part name=“name“ type=“xsd:string“ />
</wsdl:message>
<wsdl:message name=“sayHello_OUT“>
<part name=“greeting“ type=“xsd:string“ />
</wsdl:message>
<wsdl:portType name=“HelloWorldInterface“>
<wsdl:operation name=“sayHello“>
<wsdl:input message=“tns:sayHello_IN“ />
<wsdl:output message=“tns:sayHello_OUT“ />
</wsdl:operation>
</wsdl:portType>
</definitions>
305
© W. Wahlster, DFKI
Ein SOAP-über-HTTP-Binding
<wsdl:binding name=“HelloWorldBinding“
type=“tns:HelloWorldInterface“>
<soap:binding stype=“rpc“
transport=“http://schemas.xmlsoap.org/soap/http“ />
<wsdl:operation name=“sayHello“>
<soap:operation soapAction=“urn:Hello“ />
<wsdl:input>
<soap body use=“encoded“ ... />
</wsdl:input>
....
</wsdl:operation>
<wsdl:binding>
306
© W. Wahlster, DFKI
Beispiel: Börsenkursabfrage
z Es soll ein Web Service beschrieben werden,
an den man als Anfrage ein Tickersymbol
schicken kann und dann als Antwort den
aktuellen Kurs erhält.
z Wir beschreiben den Dienst in 3 Dateien:
– Die Schemadefinition stockquote.xsd
– Die Operationen in stockquote.wsdl
– Den Service in stockquoteservice.wsdl
307
© W. Wahlster, DFKI
stockquote.xsd
<?xml version=“1.0“?>
<schema
targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name=“tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePriceResult">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
308
© W. Wahlster, DFKI
stockquote.wsdl
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace=“http://example.com/stockquote/schemas“
location=“http://example.com/stockquote/stockquote.xsd“>
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePriceResult"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
</definitions>
309
© W. Wahlster, DFKI
stockquoteservice.wsdl
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/service"
xmlns:tns="http://example.com/stockquote/service"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace=“http://example.com/stockquote/definitions“
location=“http://example.com/stockquote/stockquote.wsdl“>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation
soapAction="http://example.com/GetLastTradePrice"/>
</operation>
</binding>
<service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
310
© W. Wahlster, DFKI
WSDL-Werkzeuge
z Auf der Basis von WSDL-Dokumenten
können nun natürlich wieder eine Reihe
von Werkzeugen implementiert werden:
– Generierung von Java-Klassen und
verschiedenen Code-Stücken, z.B. SOAPZugriff
– Automatisches Deployment von Web Services
– Automatische Registrierung von Web Services
bei UDDI
311
© W. Wahlster, DFKI
Service Discovery
z WSDL legt fest, wie ein Service aufgerufen
werden kann
– URL des Services
– Information über Methoden / Parameter
z Wie wird das WSDL Dokument zwischen
Client und Server ausgetauscht?
– Ein verteiltes System wird von einem Team
geschrieben: Austausch z. B. via Email
(homogenes System)
– Ein System wird von unterschiedlichen Teams
erstellt: Austausch über ein Repository
(heterogenes System)
312
© W. Wahlster, DFKI
Repository Funktionalität
z Ein Service Repository speichert eine
Vielzahl von Metadaten, welche die Services
funktional beschreiben und die Suche
ermöglichen
z Die Funktionalität ist unterschiedlich zum
Naming Service
– Ein Naming Service setzt lediglich den logischen
Namen eines bereits bekannten Services in eine
physikalische Adresse um
– Bei Web Services übernehmen dies die Internet
DNS Server
313
© W. Wahlster, DFKI
UDDI
z UDDI steht für Universal Description Discovery
and Integration
– Wurde Ende 2000 von IBM, Microsoft und Ariba initiiert
– Inzwischen sind einige hundert Firmen dem UDDI
Konsortium beigetreten (u.a. Oracle, SAP)
z UDDI spezifiziert Standards zur Publikation und
Suche von Web Services
z Schnittstellen
– Manuell per Browser
– Automatisiert per Web Services API
314
© W. Wahlster, DFKI
Das Globale UDDI Repository
z Die Spezifikationen werden in einem globalem
Web Service Repository implementiert
z Die drei Initiatoren unterhalten die technische
Infrastruktur
– Drei Server die untereinander Informationen replizieren
• http://uddi.microsoft.com
• http://www.ibm.com/services/uddi
• http://www.ariba.com
– Registrierungsmechanismus
– Filterung von SPAM Einträgen
315
© W. Wahlster, DFKI
Problem: Vertrauensverhältnis
z Das globale UDDI Repository ermöglicht eine
Vielzahl von Anwendungen
– Beispiel: finde einen Web Service, der Fahrpläne der
Fähre von Rom nach Sardinien liefert
z In wieweit kann einem bisher unbekanntem
Service vertraut werden?
– Betrug ist nicht ausgeschlossen
– Qualität gelieferter Teile
– Termingerechte Lieferung
z Es ist unwahrscheinlich, dass große
Transaktionen ohne vorherigen Kontakt / Verträge
abgeschlossen werden
316
© W. Wahlster, DFKI
Lokale Repositories
z Eine naheliegende Lösung besteht darin, UDDI im
kleineren / kontrollierten Rahmen einzusetzen
– Dies wird von den UDDI Initiatoren explizit
vorgeschlagen und erlaubt
z Anwendungsbeispiele:
– Management von Services innerhalb einer großen Firma
Vertrauen innerhalb der Firma ist gegeben
– B2B Internet Marktplatz
Zutritt zum Marktplatz ist nur nach vertraglicher
Bindung und Prüfung erlaubt
317
© W. Wahlster, DFKI
UDDI Browser Interface: Publikation
318
© W. Wahlster, DFKI
UDDI Browser Interface: Suche
319
© W. Wahlster, DFKI
UDDI Browser Interface: Suche II
320
© W. Wahlster, DFKI
UDDI Datenstrukturen: White Pages
z White Pages beinhalten
Informationen über die Institution,
die Services bereitstellt
– Name
– Telefon
z Dies ist vergleichbar mit der
Information im Telefonbuch
321
© W. Wahlster, DFKI
UDDI Datenstrukturen: Yellow Pages
z Die Yellow Pages erlauben eine Klassifikation der
Institutionen nach verschiedenen Schemata
z Momentan werden unterstützt:
– Geographisch (ISO 3166)
– Branchen (NAICS)
– Services / Produkte (UN / SPSC)
z Es können auch eigene Klassifikationsschemata
definiert werden (besonders interessant für lokale
UDDI Repositories)
z Dies entspricht den Gelben Seiten
322
© W. Wahlster, DFKI
UDDI Datenstrukturen: Green Pages
z Green Pages beinhalten technische
Informationen
– Angebotene Web Services
– Wie sind diese aufzurufen
z Technical Models (tModel) werden zur
Identifikation einer bestimmten Art von
Service verwendet
– Diese kann auf ein WSDL Dokument verweisen
– Sie kann sich aber auch auf vorab definierte
Standards wie z.B. RosettaNet beziehen
323
© W. Wahlster, DFKI
UDDI Datenmodell
businessEntity (white
pages)
Name, desc, contacts
businessServices
businessService
Bindings (green pages)
categoryBag (yellow
pages)
...
identifierBag
...
accessPoint URL
tModel
categoryBag (yellow
pages)
Verweise werden durch
UUIDs (universally unique
identifiers) hergestellt
categorization
Name, desc,
UUID
tModel
Specification
z.B. WSDL Doc
Name, desc,
UUID
identifier
Name, desc,
UUID
324
© W. Wahlster, DFKI
Firmeninformation im UDDI Format
325
© W. Wahlster, DFKI
Service Discovery zur Designzeit
z Services werden dem Entwickler mit Hilfe
eines Browsing Werkzeuges angezeigt
– Entwickler wählt den aufzurufenden Service
über die Browser Schnittstelle
– Stubs (Stummel, Kurzersatz für längeres
Programm) werden generiert
– Programmieren des Service Aufrufs
– Kompilieren des Projekts
z Funktioniert ähnlich wie bereits bekannte
Objektbrowser
326
© W. Wahlster, DFKI
Service Discovery zur Laufzeit
z Die Auswahl der Services erfolgt erst zur Laufzeit
– Entwickler wählt tModel (Service Interface ID)
– Stubs werden generiert
– zur Laufzeit Suche der passenden Services über die
Web Services UDDI API
– diese werden dann über den Stub aufgerufen
z Mittels dynamisch compiliertem und gebundenem
Code könnte sogar die Auswahl der tModels zur
Laufzeit erfolgen
327
© W. Wahlster, DFKI