Web Services und SOAP. Früher. Heute. Einführung. Kunde sucht sich auf dem Internet die Hotel, Flug und Mietwagenfirmen-Seiten

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 12
 
  Web s und Einführung Sie wissen, was ein Web ist Sie wissen, was ist Sie wissen, wie eine Meldung aufgebaut ist Sie können Meldungen mittels beschreiben Sie können einen Web Klient und Server implementieren
Related documents
Share
Transcript
Web s und Einführung Sie wissen, was ein Web ist Sie wissen, was ist Sie wissen, wie eine Meldung aufgebaut ist Sie können Meldungen mittels beschreiben Sie können einen Web Klient und Server implementieren 1 von 64 2 von 64 Früher Heute Kunde sucht sich auf dem Internet die Hotel, Flug und MietwagenfirmenSeiten?? Credit Credit Card Card Fluggesellschaft Fluggesellschaft Stellt sich ein passen Angebot zusammen Kunde Kunde html html Kunde Kunde html Virtuelles Virtuelles Reisebüro Reisebüro?? Schifffahrtslinie Schifffahrtslinie Bahn Bahn Hotel Hotel Mietwagen Mietwagen html Es braucht eine standardisierte, maschinell verarbeitbare Kommunikation zwischen Reisebüro und Dienstleistungsanbietern 3 von 64 4 von 64 Definition Web (nach W3C) (Web) Architektur Ein Web ist folgendermassen definiert A A Web Web service service is is a a software software system system igned igned to to supendpoint supendpoint interoperable machinetomachine interaction over a network. interoperable machinetomachine interaction over a network. It has an interface cribed in a machineprocessable format It has an interface cribed in a machineprocessable format (specifically (specifically ). ). Other Other systems systems interact interact with with the the Web Web service service in in a a manner manner prescribed prescribed by by its its cription cription using using messages, typically conveyed using with an messages, typically conveyed using with an serialization in conjunction with other Webrelated standards. serialization in conjunction with other Webrelated standards. Verwaltet Verwaltet Servîce Servîce Ermöglicht Ermöglicht das das Eintragen Eintragen von von s s Ermöglicht Ermöglicht das das Finden Finden von von Anbieter Anbieter Adressen Adressen anhand anhand unterschiedlicher unterschiedlicher Kriterien Kriterien Finde Binde Publiziere Bietet Bietet Dienste Dienste an: an: Teil Teil der der Geschäftslogik Geschäftslogik Beschreibt die angebotenen Dienste Beschreibt die angebotenen Dienste wie wie sind sind die die Dienste Dienste abrufbar? abrufbar? (Dienstleistungs)Vertragsinhalt (Dienstleistungs)Vertragsinhalt Publiziert Publiziert Dienste Dienste in in Beschreibt Dienste so, dass Kunden Beschreibt Dienste so, dass Kunden den Dienstanbieter finden können den Dienstanbieter finden können Zweck ist Interoperation zwischen Maschinen Schnittstelle beschrieben in maschinenlesbarer Form () Nachrichtenaustausch über Meldungen meist via oder anderen Web Protokollen meist unter Verwendung von in kodierten Nachrichten Web Konsument Konsument Konsumiert Dienste Anbieters Konsumiert Dienste Anbieters Sucht den gewünschten Dienst im Sucht den gewünschten Dienst im Stellt Verbindung mit dem Stellt Verbindung mit dem Dienstanbieter her und nimmt Dienst Dienstanbieter her und nimmt Dienst in Anspruch in Anspruch Beschreibung Beschreibung Vertrag Vertrag Anbieter Anbieter Ein Web ist eine Funktion (Prozedur,Methode, Teil der Geschäftslogik), die via Internet Technologien zugegriffen werden kann Daten werden meist in Format übermittelt 5 von 64 6 von 64 Web s Vor und Nachteile Standard für Nachrichtenaustausch unabhängig von Transportprotokoll unabhängig von Client und Implementierung: Java,.NET, PHP, Vorteile unabhängig von Programmiersprache, Laufzeitumgebung und Betriebssystem baut auf bestehender InternetInfrastruktur auf standardisiert von den grossen unterstützt/vorangetrieben (ABM und Microsoft) Web s Description Language SchnittstellenBeschreibung in Kommunikation auf Basis existierenden Protokolle und Serverarchitekturen und WebServer SMTP und MailServer FTP und FTPServer Nachteile Performance () Gremien mit dominanten Vertretern mit Partikulärinteressen Standards z.t. komplex, zu allgemein gehalten (Kompromiss standarts) Erweiterbarkeit führt zu Interoperabilitätsproblemen Standardisierung (W3C & I Gremium) 1.2, 1.1 (1.2 und 2.0) Zusätzliche Protokolle basierend auf und 7 von 64 8 von 64 Web s : Simple Object Access Protocol Definiert ein StandardFormat für den Transport von Daten, via, SMTP und FTP für den Zugriff auf Web s : Web Description Language Beschreibt die Schnittstelle eines Web (Ein/Ausgabe Parameter, Protokoll Bindung, etc.) UDDI: Universal Description, Discovery, and Integration (Weltweites) von Web s in dem nach verschiedenen Kriterien gesucht werden kann Finde UDDI UDDI Publiziere Konsument Klient Klient Request Response Fassade Fassade Geschäfts Geschäfts Logik Logik Anbieter 9 von von 64 Basis Web Stack Erweiterter Web Stack Architektur Beschreibung Beschreibung Messaging Messaging Transport Transport Netzwerk Netzwerk Web s UDDI UDDI,, SMTP, SMTP, stellt für Web s zur Verfügung ermöglicht das Eintragen von s (Publikation) ermöglicht Finden von Adressen anhand folgender Kriterien Weisse Seiten: nach Namen Gelbe Seiten: nach Branchen Grüne Seiten: Beschreibung der Dienstleistung beschreibt die Schnittstelle Web s in maschinenlesbarer Form unabhängig von Programmiersprache beschreibt, welcher Transportmechanismus verwendet wird* beschreibt, wo der zu finden ist* definiert das Meldungsformat meistens Format ( basiert) unabhängig von BS kann Transport Netzwerk verwenden (gebunden werden) stellt Transportmechanismus für Daten zur Verfügung im Internet: basiert auf bestehenden Internet Protokollen: http, smtp, ftp im Intranet: auch andere Protokolle möglich: MQ *Design Fehler In konkreten Anwendungsfall von Web s sind Erweiterungen notwendig für Sicherheit, Transaktionssteuerung, etc. Werden angeboten vom Anbieter Infrastruktur ( Microsoft, IBM, Open Source) Standards z.t. noch nicht etabliert proprietäre, z.t. nicht interoperable Lösungen Anwendung Anwendung Messaging Messaging API API.NET, JAX.NET, JAX Messaging Messaging Transport, SMTP, FTP Transport, SMTP, FTP Network Network Transport Transport Layer Layer TCP/IP TCP/IP Beschreibung Beschreibung UDDI. UDDI. Workflow, Workflow, BPEL, XLANG(MS) BPEL, XLANG(MS) Sicherheit Sicherheit Security Security Transaktionen Transactions Transaktionen Transactions Zuverlässigkeit Zuverlässigkeit Reliable Messaging Reliable Messaging Addressierung Addressierung Adressing Adressing Binäre Binäre Anhänge Anhänge Attachement Attachement 11 von von 64 * Konkret Stand der Implementierung (Ende 2008) Federation Federation Secure Secure Conversation Conversation Trust Trust Security Security Transfer Transfer Infoset Infoset Management Management Reliable Reliable Messaging Messaging Enumeration Enumeration Addressing Addressing Namespaces Namespaces Devices Devices Profile Profile Business Business Activity Activity Atomic Atomic Transaction Transaction Coordination Coordination Eventing Eventing MTOM MTOM MIME MIME Step 2 Workshops & Community Dev Step 2 Workshops & Community Dev Step 3 Standardization Step 3 Standardization Step 4 Approved Standard Step 4 Approved Standard Infrastructure Infrastructure and and Profiles Profiles Assurances Assurances Messaging Messaging / / UDP UDP / / Metadata Metadata Metadata Metadata Exchange Exchange Discovery Discovery UDDI UDDI Policy Policy Schema Schema Foundation Foundation einfaches Nachrichtenformat in für Verpackung beliebiger Anwendungsdaten einzelne Nachrichten ( oneway ) Unabhängig vom Transportprotokoll ist erweiterbar Sicherheit Authentifikation etc. Verschiedene Meldungsaustauschmuster durch kombination einzelner Nachrichten (Message Exchange Patterns) oneway, requestresponse Client Client 1: GetTime_Request 2: GetTime_Response Server Server 13 von von 64 Funktionsweise von über Interaktionsmodelle Client soapenv:envelope m:getstockprice Stock INTC /Stock /m:getstockprice /soapenv:body Response ( : 200 OK) soapenv:envelope m:getstockpriceresponse Price 34.5 /Price /m:getstockpriceresponse /soapenv:body Request (:POST) Beispiel RequestResponse Beispiel RequestResponse StockQuote One Way: /SMTP Einweg Kommunikation: nur unbestätigte Aufruf Meldung vom Klient zum Web RequestResponse: / (hier behandelt) Synchrone Kommunikation: Aufruf Meldung vom Klient zum Web mit Antwort vom Web Solicit Response: /SMTP Asynchrone Kommunikation: einzelne unbestätigte Aufruf Meldung vom Klient zum Web, dann unbestätigte Antwort zurück Notification: POP3 Benachrichtigung: einzelne unbestätigte Meldung vom Web zum Klient Client Web 15 von von 64 Aufbau einer Meldung POST/objectURI /1.1 Action soapenv:envelope soapenv:header Objekt Endpunkt Objekt Identifikation Methoden Identifikation Informationen für den Transport der Nachricht Informationen für den/die Empfänger der Nachricht Meldungen Header 1 Header 2 Erweiterungskopfteil Meldungsdaten Daten Informationen über die Daten der Nachricht, Unterschrift, etc. soapenv:body Daten Logische Aufteilung Daten der Nachricht Nachricht 17 von von 64 Beispiel: Aufbau einer Meldung Header Header Header (def: (def: ) ) POST /Accounts /1.1 Host: webservicebank.com ContentLength: nnnn ContentType: text/xml xml; charset= = utf8 Action: : SomeURI :Envelope xmlns:= http://schemas. := http://schemas.xmlsoap.org/soap/envelope/ :encodingstyle encodingstyle= http://schemas. = http://schemas.xmlsoap.org/soap/encoding/ :Header t:signature xmlns:t= someuri :mustunderstand mustunderstand= 1 /t:signature /:Header :Body m:deposit xmlns:m= someuri acctnumber / /acctNumber amount 200 /amount Body Entry /m:deposit Body Entry (def:applikation) /:Body (def:applikation) /:Envelope Envelope Envelope (def: ) (def: ) Header Header (def:,opt) (def:,opt) Header Entry Header Entry (def:applikation) (def:applikation) Body Body (def:) (def:) POST Aufruf meist über POST ContentType: text/xml und charset=utf8 (Unicode variabler Länge) Host: ZielMaschinenname Action: für Routing und Dispatching von Meldungen Request ab 1.2 nicht mehr verwendet, da nur für gültig Action: bei POST wird direkt der Endpunkt s angegeben POST /axis/services/my /1.0 POST /axis/services/my /1.0 ContentType: text/xml; charset=utf8 ContentType: text/xml; charset=utf8 Host: localhost Host: localhost Action: Action: ContentLength: 414 ContentLength: 414 Response / OK / OK ContentType: text/xml; charset= utf8 ContentType: text/xml; charset= utf8 ContentLength: 564 ContentLength: von von 64 Aufruf (GETPOST) Beispielaufruf via GET bzw. POST Aufruf über GET Aufruf kodiert (URLencoded) Response kodiert Einschränkung auf einfache Aufrufe (keine HeaderEinträge, keine strukturierten Daten) Aufruf von GetTime(bool shortform) bei Web Aufruf : Aufruf über POST Datenteil POSTRequest enthält kodierte Anfrage Antwort kodiert ohne Einschränkungen Response: /1.1 / OK OK ContentType: ContentType: text/xml; text/xml; charset=utf8 charset=utf8 ContentLength: ContentLength: length length ?xml ?xml version= 1.0 version= 1.0 encoding= utf8 ? encoding= utf8 ? string string xmlns= http://tempuri.org/ string /string 21 von von 64 Envelope Header Envelope Element definiert in Namespace: ://schemas.xmlsoap.org/soap/envelope/ beinhaltet KindElemente Header: Kopfteil (optional) : Informationen über die Meldung Body: Daten (Payload) Fault: als Teil von Body (optional) bei Fehler soapenv:envelope xmlns:soapenv soapenv= = http:// ://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd= http://www.w3.org/2001/schema Envelope Envelope Namespaces Namespaces xmlns:xsi= http://www.w3.org/2001/schemainstance soapenv:header /soapenv soapenv:header soapenv:fault Schema Namespaces Schema Namespaces /soapenv soapenv:fault /soapenv soapenv:body /soapenv soapenv:envelope Kann verwendet werden um anwendungsspezifische Information zur Meldung hinzuzufügen, z.b. Authentisierung, Transaktionssteuerung wird dem Body vorangestellt Ermöglicht das piggybacking von Metainformation (Information über Daten) zusätzliche (Status) Informationen Sicherheit, etc. Wird von der Infrastruktur interpretiert soapenv:envelope xmlns:soapenv= http://schemas.xmlsoap.org/soap/envelope/ soapenv:envelope xmlns:soapenv= http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd= http://www.w3.org/2001/schema xmlns:xsd= http://www.w3.org/2001/schema xmlns:xsi= http://www.w3.org/2001/schemainstance xmlns:xsi= http://www.w3.org/2001/schemainstance :Header soapenv:encodingstyle= http://schemas.xmlsoap.org/soap/encoding :Header soapenv:encodingstyle= http://schemas.xmlsoap.org/soap/encoding t:signature xmlns:t= :t= someuri t:signature xmlns:t= someuri :mustunderstand mustunderstand= 1 xsi:type= xsd:string :mustunderstand= 1 xsi:type= xsd:string /t:signature Signature /t:signature /:Header Header /:Header 23 von von 64 Body Die Datenformat im Body Element Im Body werden die eigentlichen Daten übertragen Daten im Body Element sind grundsätzlich frei wählbar (wellformed ) Meist jedoch durch Schema definierte Struktur literal: literal: onthewire onthewire Format Format in in einem einem Schema Schema definiert definiert (exact) (exact) encoded: encoded: onthewire onthewire Format Format entspricht entspricht nicht nicht dem dem Schema Schema sondern sondern dem dem definierten definierten Encoding Encoding z.b z.b Endcoding Endcoding Request soapenv:envelope xmlns:soapenv= http://schemas.xmlsoap.org/soap/envelope/ soapenv:envelope xmlns:soapenv= http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd= http://www.w3.org/2001/schema xmlns:xsd= http://www.w3.org/2001/schema xmlns:xsi= http://www.w3.org/2001/schemainstance xmlns:xsi= http://www.w3.org/2001/schemainstance soapenv:header soapenv:header document: document: Übermittlung Übermittlung eines eines Dokuments Dokuments soap:envelope soap:envelope soap:body soap:body mymethoddata mymethoddata x 5 /x x 5 /x /mymethoddata /mymethoddata /soap:body /soap:body /soap:envelope /soap:envelope soap:envelope soap:envelope soap:body soap:body mymethoddata mymethoddata x xsi:type= xsd:int 5 /x x xsi:type= xsd:int 5 /x /mymethoddata /mymethoddata /soap:body /soap:body /soap:envelope /soap:envelope m:deposit xmlns:m= :m= someuri m:deposit xmlns:m= someuri acctnumber / /acctNumber acctnumber /acctnumber amount 200 / 200 /amount amount 200 /amount /m:deposit Deposit /m:deposit /soapenv:body Body /soapenv:body Response rpc: rpc: Aufruf Aufruf einer einer Funktion Funktion soap:envelope soap:envelope automatisch soap:body automatisch soap:body mymethod mymethod x 5 /x x 5 /x /mymethod /mymethod /soap:body /soap:body /soap:envelope /soap:envelope soap:envelope soap:envelope soap:body automatisch soap:body automatisch mymethod mymethod x xsi:type= xsd:int 5 /x x xsi:type= xsd:int 5 /x /mymethod /mymethod /soap:body /soap:body /soap:envelope /soap:envelope 25 von von 64 Die Daten im Body Element Serialisierung von Datenstrukturen Nachrichtenformat: rpc Methodenname als Teil der Meldung Abbildung der einfachen Datentypen der Programmiersprache folgende Abbildungsregeln (=Binding) werden für Java angewandt JAXBCompatible Type Mapping document Methodenname nicht Teil der Meldung Kodierung: literal Daten werden nach einem Schema kodiert encoded Daten werden nach Regeln (Section 5) kodiert übliche Kombinationen: document/literal die heute am häufigsten verwendetes Format, beste Interoperabilität rpc/literal verwendet bei Java Umfeld, weniger Hilfs/Wrapper Klassen rpc/encoded früher häufig verwendet 27 von von 64 Serialisierung von Datenstrukturen Serialisierung von Datenstrukturen Einfache Datentypen werden einfach in Elemente abgebildet ElementName = Variablen Name ElementInhalt = Wert Typ durch XSD Schema definiert xsi:type= xsd:string xsi:type= xsd:string singlereference und nested Strukturen (Klassen) werden eingebettet e:book title my Life and Work /title author name henry Ford /name address web http://www.henryford.com /web /address /author /e:book title My Life and Work /title price /price xsi:type= xsd:float xsi:type= xsd:float Arrays und Listen einfach als Sequenz von gleichen Elementen Andere Andere Collections Collections problematisch problematisch multireference Strukturen verwenden id & href attributes e:books e:book title my Life and Work /title author href= #person1 /e:book e:book title the Success of Tin Lizzy /title author href= #person1 /e:book /e:books e:person id= person1 name henry Ford /name address web http://www.henryford.com /web /address /e:person 29 von von 64 Konsequenzen litteral Formats Fault Body Daten sind durch Schema bzw. beschrieben Vorteil: Meldung kann mit Schema validiert werden Nachteil: Bei nicht Baum Daten Strukturen komplex (Z.B. Graphen, Mehrfachreferenzen) ?xml version= 1.0 ? ?xml version= 1.0 ? xsd:schema xsd:schema xsd:complextype name= arg xsd:complextype name= arg xsd:sequence xsd:sequence type= xsd: name= arg0 type= xsd: name= arg0 type= xsd: name= arg1 type= xsd: name= arg1 /xsd:sequence /xsd:sequence /xsd:complextype /xsd:complextype name= op1 type= listing3:op1type name= op1 type= listing3:op1type arg arg arg0 20.0 /arg0 arg0 20.0 /arg0 arg1 22.0 /arg1 arg1 22.0 /arg1 /arg /arg /soapenv:body /soapenv:body Fault: Ein Fehler ist aufgetreten erstes/einziges Element von Body faultcode: Klassifizierung Fehlers MustUnderstand (Header with mustunderstand=1 nicht verstanden) VersionMismatch (falsche namespace) Client (Fehler in request Meldung vom Klienten) Server (Fehler auf der Server Seite) faultstring/detail: Beschreibung Fehlers Result: Result: / Internal Server Error ContentType: text/xml; charset=utf8 soapenv:envelope soapenv:fault faultcode ns1:server.userexception /faultcode faultstring java.rmi.remoteexception: Overflow /faultstring detail ns2:stacktrace xmlns:ns2= http://xml.apache.org/axis/ java.rmi.remoteexception: at calc.calculatorsoapbindingimpl.add(calculatorsoapbindingimpl.java:12) /detail /soapenv:fault /soapenv:body 31 von von 64 Fragen und Fakten zu Wieso sollte man kennen? StandardBeschreibungssprache für Web Schnittstellen finden von Interoperabilitätsproblemen beschreibung mit Wieso ist so kompliziert? früh entwickelt (noch bevor XSD fertig definiert war) grosse Allgemeinheit abgedeckt (Protokolle, Aufrufmodelle, etc.) Werkzeuge zur Erstellung Texteditor: ziemlich mühsam (sollte man aber einmal gemacht haben) mit graphischen Werkzeugen: einfacher aber kein Standard, z.b. Spy Finden von die meisten Web Implementationen liefern Schnittstelle (automatisch) Web URL ? se auf dem Internet (siehe Anhang) 33 von von 64 Schnittstellen Beschreibung Web Description Language () Funktionen einer Schnittstellen Beschreibungssprache (IDL) von Menschen lesbar und erstellbar Definition der Schnittstelle (SW Engineering zuerst) interface first Ansatz Dokumentation von Maschine lesbar zur Laufzeit: überprüfen ob Daten mit Schnittstelle konform(validierung) zur Entwicklungszeit: Generierung von Hilfsklassen Implementierungsrumpf für Web s Stub (Stumpf) für den Aufruf ist basierte IDL für Webs in wird beschrieben: Interface Verwendete Datentypen Aufbau einzelner Nachrichten Operationen (Methoden) Implementation Protokolle um Operationen aufzurufen Adressen für Web Web Definition Language März 2001 definiert Version 2.0 (früherer Name = 1.2) seit Juni 2007 W3C Recommendation Umbenennung: Port Endpoint; definition cribtion; Interface Interface Elimination von Message ( wird zu XSD Complex Type) 35 von von 64 Struktur eines Dokuments Aufbau eines Dokuments Struktur eines Dokuments (von 1.1 zu 2.0) message x porttype interface port endpoint EndPoint z.b. z.b. + + Operation Verwendung Verwendung von von Schema Schema Type/ Element EndPoint Binding (Interface) Interface (abstraktes Interface) Operation request/ response Types Type/ Element Type/ Element EndPoint Operation Web Protokoll Operationen abstraktes Interface Typen & Elemente 37 von von 64 Aufbau eine
Related Search
Similar documents
View more
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x