12-1 ist mein ebusiness skalierbar und verfügbar? Datenbank HTML client HTTP Internet HTTP Web Application Server Web Server Anforderungen: - Verfügbarkeit - Skalierbarkeit - Performance - Sicherheit HTML client 43% of all Internet users have experienced one failed purchase, 28% of all online purchases fail... 28% of consumers who experienced a failed purchase stopped shopping at that particular Web site, 23% stopped buying at that site, and 6% also stopped shopping at the retailer s brick-and-mortar outlets. Boston Consulting Group 12-2 1
Web Services Web Services sind eine Infrastrukturtechnologie zur schnellen und einfachen Integration heterogener Anwendungen. Web steht dabei für die Kommunikation von Anwendungen über die bestehende Internetinfrastruktur (HTTP, SSL, Firewall etc.), sowohl innerhalb eines Unternehmens als auch über das Internet. Service steht für ein vereinfachtes Softwarekomponentenmodell, eine wesentliche Vereinfachung gegenüber den doch häufig zu komplexen verteilten Objekten (CORBA, EJB). 12-3 Web Service Find All the Service describe by UDDI WDSL <- UDDI Service Registry http://www.ibm.com/services/uddi http://www.ibm.com/services/uddi/testregistr y http://uddi.microsoft.com http://test.uddi.mirosoft.com hp available soon Publish WDSL -> UDDI SOAP on HTTP Service Requestor Bind Service provider 12-4 2
Find Service User SOAP UDDI Bind SOAP Publish Service Provider SOAP Simple Object Access Protocol Benutzt XML Nutzt HTTP als Transport- Layer-Protokoll Header Elemente für Kontextinformationen Interaktion zwischen einer Client- und einer Server- Anwendung RPC-Stil (request response) Semantik Fehler- und Ausnahmebehandlung 12-5 Find Service User WSDL UDDI Bind SOAP Publish Service Provider WSDL - Web Services Definition Language Definition der Interfaces - Neben den Operationen des Web Services wird hier auch angegeben, auf welchem Rechner im Internet der Web Service verfügbar ist. WDSL bietet XML-Sprachregeln für die Beschreibung - was ein Webservice leistet - wo er sich befindet und - wie er aufzurufen ist 12-6 3
UDDI - Universal Description, Discovery and Integration Find Service User UDDI UDDI Bind SOAP Publish Service Provider dient zur Registrierung von Web Services. neben dem Interface auch Beschreibung des Web Service sowie Daten über den Anbieter etc. folgende Anforderungen müssen abgedeckt werden: Datenstruktur für Web Services Schnittstellenbeschreibung Möglichkeit die Informationen zu finden und die technischen Informationen zu nutzen 12-7 Web Services Technology Stack Basis Schichten sind bereits fest etabliert. Höhere Schichten befinden sich noch im Aufbau. UDDI, WSFL sind dennoch feste Bestandteile des Stacks. Weitere Konzepte: 4Security 4 Authentifizierung 4 Quality of Service 4 Transaktions Management 12-8 4
SOAP consists of three parts: The SOAP envelope construct defines an overall framework for expressing what is in a message; who should deal with it, and whether it is optional or mandatory. The SOAP encoding rules define a serialization mechanism that can be used to exchange instances of application-defined datatypes. The SOAP RPC representation defines a convention that can be used to represent remote procedure calls and responses. Quelle: http://www.w3.org/tr/2000/note-soap-20000508 12-9 SOAP Simple Object Access Protocol Lightweight Message Protokoll Getypter Datenaustausch zwischen Applikationen Besonders geeignet für RPC Funktionalität Lose Kopplung Verteilte Architektur Transport Binding über darunterliegendes Transport Protokoll Struktur wird in XML definiert 12-10 5
SOAP Envelope <xs:element name="envelope" type="tns:envelope" /> <xs:complextype name="envelope" > <xs:sequence> <xs:element ref="tns:header" minoccurs="0" /> <xs:element ref="tns:body" minoccurs="1" /> </xs:sequence> <xs:anyattribute namespace="##other processcontents="lax" /> </xs:complextype> Optionaler Header Block Body Block ist notwendig Namespace: http://www.w3.org/2001/09/soap-envelope 12-11 SOAP Body Body Enthält Applikationsdaten 4RPC Daten 4 Fehlerinformation <xs:element name="body" type="tns:body" /> <xs:complextype name="body" > <xs:sequence> <xs:any namespace="##any" minoccurs="0 maxoccurs="unbounded processcontents="lax" /> </xs:sequence> <xs:anyattribute namespace="##any processcontents="lax" > </xs:anyattribute> </xs:complextype> 12-12 6
SOAP RPC RPC Daten werden im SOAP Body übertragen Struktur entspricht den unter SOAP encoding vorgestellten Konzepten Voraussetzungen für RPC 4URI des Empfängerknotens 4Funktions/Methoden Name 4Funktions/Methoden Signatur 4Funktionsparameter 12-13 SOAP RPC RPC Request 4 Struktur mit dem Namen der Funktion 4 Funktions Parameter müssen typisiert und benannt werden 4 Reihenfolge der Parameter entspricht Schnittstelle 4 Ein sowie Ein/Ausgabe Parameter sind möglich <env:envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope"> <env:body > <tmp:tempinlinz.gettemp_request> xmlns:tmp="http://www.linz_temp.at/2001/temp" > <tmp:plz>4040</tmp:plz> <tmp:strasse>altenbergerstrasse</tmp:strasse> <tmp:hsnr>74</tmp:hsnr> </tmp:tempinlinz.gettemp_request> </env:body></env:envelope> 12-14 7
SOAP RPC RPC Response 4Ebenfalls typisierte, benannte Struktur 4Reihenfolge der Aus bzw. Ein/Ausgabe Parameter entspricht Schnittstelle 4Beginnend mit Rückgabewert Result <env:envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope"> <env:body > <tmp:tempinlinz.gettemp_response> xmlns:tmp="http://www.linz_temp.at/2001/temp" > <tmp:datumzeit>10.12.2001</tmp:datumzeit> <tmp:tempcelsius>-3</tmp:tempcelsius> </tmp:tempinlinz.gettemp_response> </env:body> </env:envelope> 12-15 SOAP Envelope Construct (1) SOAP Message = XML Dokument mit SOAP Envelope [SOAP Header] SOAP Body Beispiel für SOAP Message in HTTP Request: POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getlasttradeprice xmlns:m="some-uri"> <symbol>dis</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 12-16 8
SOAP Envelope Construct (2) Beispiel für SOAP Message in HTTP Response: HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:getlasttradepriceresponse xmlns:m="some-uri"> <Price>34.5</Price> </m:getlasttradepriceresponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 12-17 Simple Types Als Simple-Types übernimmt SOAP alle in der XML Schema Part 2: Datatypes Spec. verwendeten Built-in datatypes. Beispiele für ein Schema (Fragment): <element name="age" type="int"/> <element name="height" type="float"/> <element name="displacement" type="negativeinteger"/> <element name="color"> <simpletype base="xsd:string"> <enumeration value="green"/> <enumeration value="blue"/> </simpletype> </element> Beispiele für Daten: <age>45</age> <height>5.9</height> <displacement>-450</displacement> <color>blue</color> Enumeration mit Simple Types (außer Boolean) 12-18 9
Compound Types Parallel zu Structs und Arrays... Bräuchten einen eigenen Vortrag... ;-) Beispiel für Schema: <element name="book"> <complextype> <element name="author" type="xsd:string"/> <element name="preface" type="xsd:string"/> <element name="intro" type="xsd:string"/> </complextype> </element> Beispiel für Daten: <e:book> <author>henry Ford</author> <preface>prefatory text</preface> <intro>this is a book.</intro> </e:book> 12-19 WSDL Einleitung WSDL = Web Service Description Language XML-basiert Gibt Anworten auf die Fragen: 1. Wo liegt der Web-Service genau? 2. Wie kann man mit ihm arbeiten, welche Schnittstellen hat er? 3. Mit welchen Protokollen kann man den Web-Service verwenden? 12-20 10
WSDL allgemeines WSDL-Dokumente sind ein Vertrag; der Inhalt bildet die Grundlage für eine Kommunikation zwischen Web- Service und einem Client Im WSDL-Dokument sind unter anderem die Methoden- Schnittstellen definiert; weiters kann man mittels einer angegebenen Adresse ein Service lokalisieren 12-21 WSDL allgemeines SOAP wurde bereits als allgemeiner Nachrichtenübertragungsstandard eingeführt. Kennt man aber die Anzahl der Parameter, die Typen oder den Methodennamen nicht, kann man keine Nachricht übertragen. Beim Einsatz von WSDL erfolgt die Generierung von Proxies für Web-Services sprach- und plattformneutral, vergleichbar mit den IDL-Dateien von COM und CORBA. 12-22 11
WSDL Dokumentaufbau <definition> <types> <message> <porttype> <binding> <port> <service> Logisches Wurzelelement, in welchem die verschiedenen Namespaces als Attribute definiert werden Datentypdefinitionen Abstrakte Definition der Nutzdatenpakete, die übertragen werden. Eine Nachricht (Message) entspricht auf dieser Ebene noch nicht einer Methode oder Funktion, wie man vielleicht meinen könnte. Fasst eine Menge von Operationen zusammen Erst hier werden konkrete Protokolle (SOAP, http-get, etc.) und Datenformate für Operationen und Nachrichten definiert. Spezifikation einer Adresse für eine Bindung Aggregation von zusammengehörigen Ports 12-23 WSDL Zusammenspiel der Typen Typen abstrakt Nachrichten Porttypen Operationen Bindungen Operationen konkre t Services Ports 12-24 12
WSDL Typen Die Std.-Typen aus XML-Schema sind vorgegeben Eigene Typen können in diesem Types-Abschnitt analog zu XML-Schema und SOAP definiert werden. BenötigteTypen für das Temperatur-Beispiel: PositionsInfo_Request Temperatur_Response plz datumzeit strasse tempcelsius hsnr 12-25 WSDL Typen - Beispiel <wsdl:types> <xsd:schema targetnamespace= http://beispiel.com xmlns:xsd= http://www.w3.org/2000/10/xmlschema > <xsd:element name= PositionsInfo_Request > <xsd:complextype> <xsd:sequence> <xsd:element name= plz type= string /> <xsd:element name= strasse type= string /> <xsd:element name= hsnr type= string /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name= Temperatur_Response > <xsd:complextype> <xsd:sequence> <xsd:element name= datumzeit type= datetime /> <xsd:element name= tempcelsius type= /> </xsd:sequence> </xsd:complextype> </xsd:element> </wsdl:types> 12-26 13
UDDI Allgemeines UDDI = Universal Description, Discovery, and Integration Plattformunabhängiges, Erweiterbares Framework, um 4 Web-Services zentral zu registrieren 4 Web-Services bereitzustellen für andere Firmen 4 Fremde Web-Services mit gewissen Merkmalen finden und dynamisch in eigenen Web-Service einbinden Basiert auf http, XML und SOAP UDDI SOAP XML HTTP TCP/IP 12-27 UDDI Background-Infos UDDI gibt lediglich eine Beschreibung der Funktionalität vor, nicht aber eine Implementierung Projekt UDDI gestartet im September 2000 Mittlerweile ca. 220 Mitglieder 12-28 14
UDDI UBR - 1 UBR = UDDI Business Registry Die UBR ist eine logisch zentralisiertes, physisch aber verteiltes Service mit mehreren Wurzelknoten, die regelmäßig untereinander Daten austauschen Es genügt, wenn ein Service an einer beliebigen Instanz registriert wird, da diese die Registrierung nach oben hin weiterreicht. DNS-ähnlicher Aufbau der Informationsstruktur 12-29 UDDI Business Registration Registry Data Firmen registrieren öffentliche Infos über sich selbst Servicetyp-Infos werden hier abgelegt; Programmierer, Stand.gesellschaften, Firmen White Pages Yellow Pages Green Pages Service Type Registrations 12-30 15
UDDI API Abfrage Bsp. <find_business generic='1.0' xmlns='urn:uddi-org:api'> <name>microsoft</name> </find_business> <find_service generic='1.0' xmlns='urn:uddi-org:api' businesskey='0076b468-eb27-42e5-ac09-9955cff462a3'> <name>uddi Web Sites</name> </find_service> <get_servicedetail generic='1.0' xmlns='urn:uddi-org:api'> <servicekey>86e46aad-82a5-454f-8957-381c2f724d6f</servicekey> </get_servicedetail> 12-31 Java Web Services Einleitung 1/2 The Java platform and XML are two open industrystandards that together are enabling the work in B2B ecommerce, which will allow enterprises to greatly simplify and lower the cost of information sharing and data exchange. George Paolini, vice president of Sun 12-32 16
Java Web Services JAX Übersicht 2/2 Implementierung der Kommunikation zwischen Client und Applikation Spezifiziert 5 APIs 4JAXP: XML Processing 4JAXB: XML Binding 4JAXR: Registries 4JAXM: Messaging über SOAP 4JAX-RPC: RPC über SOAP 12-33 Java Web Services JAX Übersicht 3/3 12-34 17
Java Web Services JAXR 1/5 Java API for XML Registries Registries enthalten wichtige Informationen zur Kommunikation und Kollaboration von Unternehmen JAXR bietet API zum Abfragen und Bearbeiten von Registries Unterstützt Vereinigungsmenge der Konzepte komplementärer Ansätze (z.b. UDDI, ebxml) 12-35 Java Web Services JAXR 2/5 Architektur 12-36 18
Java Web Services JAXM 1/3 Java API for XML Messaging Nachrichtenübertragung übers Internet Übertragungsprotokoll 4SOAP 1.1 4 SOAP with Attachments 4 Erweiterbar durch Profile wie ebxml, BizTalk, JAXM Provider nötig für 4 Übertragung 4Routing 12-37 Java Web Services JAXM 2/3 Synchrone Kommunikation Asynchrone Kommunikation 4Client muss in Container laufen (J2EE, Servlet) Kommunikationsszenarien 4Asynchrone Anfrage 4Asynchrone Änderung mit Bestätigung 4Synchrone Anfrage 4Synchrone Änderung 4Fire and Forget 12-38 19
Java Web Services JAXM 3/3 12-39 Java Web Services JAX-RPC 1/3 Java API for XML based RPC RPCs möglich durch Verwendung von SOAP Ähnliche Ansätze bereits vorhanden 4Java IDL 4CORBA 4RMI 4RMI/IIOP => Plattformunabhängigkeit durch XML 12-40 20
Java Web Services JAX-RPC 2/3 Ziel der Spezifikation: Einfachheit der Schnittstelle Kapselung der SOAP Nachrichtenbildung Unterstützung von WSDL 4 WSDL2Java Compiler erzeugt Client Artefakte Unterstützung von Dynamischen Proxies 4 DII Dynamic Invocation Interface 4 Dynamic Proxy Mechanismus 12-41 Java Web Services JAX-RPC 3/3 Proxy Beispiel Context ctx = new InitialContext(); com.example.stockquoteservice sqs = ctx.lookup( java:comp/env/stockquoteservice ); com.example.stockquoteprovider sqp = sqs.getstockquoteproviderport(); float quoteprice = sqp.getlasttradeprice( ACME ); DII Beispiel javax.xml.rpc.service service = //... get a Service instance javax.xml.rpc.call call = service.createcall( portname, <operationname> ); call.addparameter( param1, <xsd:string>, Call.PARAM_MODE_IN); call.setreturntype(<xsd:int>); Object[] params = new Object[] { <SomeString> }; Integer ret = (Integer) call.invoke(params); 12-42 21
Java Web Services JAXM vs JAX-RPC JAXM Asynchron und synchron JAX-RPC Synchron Routing zu mehr als 1 Empfänger möglich Hohe Komplexität durch explizite Nachrichtenbearbeitung Lose Kopplung möglich Abstraktion der XML Schicht Einfache Benutzung Enge Kopplung Verlässliche Nachrichtenübertragung als geforderte Implementierung durch den JAXM Provider Hohe Flexibilität 12-43 12-44 22