Techniken von Web Services Neuer Wein in alten Schläuchen? Chris Hübsch [email protected] 14. April 2003 Zusammenfassung Der Begriff Webservices stellt nach XML, XML-RPC und SOAP einen weiteren Meilenstein im Rennen der Fachbegriffe auf dem Gebiet der verteilten Systeme dar. Der Vortrag wird das technische Fundament der Webservices erläutern und Unterschiede sowie Vor- und Nachteile gegenüber ähnlichen Technologien aufzeigen. Chris Hübsch, TU Chemnitz Erster Versuch: Google Webservices → 800.000 Treffer Erster Versuch: Google Webservices → 800.000 Treffer Web Services → 7.200.000 Treffer Erster Versuch: Google Webservices → 800.000 Treffer Web Services → 7.200.000 Treffer • www.webservices.org • W3.Org • IBM (alpha- und developerWorks), Sun (Java), Microsoft (MSDN) • O’Reilly • Webservice-Journal, Webservice-Architect, Webservice-Brokerage • Ein Error 500 ;-) Chris Hübsch, TU Chemnitz 1 Was ist ein Webservice? „Web services are an obvious and exciting evolution of the Internet“ Vint Cerf Was ist ein Webservice? „Web services are an obvious and exciting evolution of the Internet“ Vint Cerf „Web services are self-contained business functions that operate over the Internet. They are written to strict specifications to work together and with other similar kinds of components.“ Alan Kotok Was ist ein Webservice? „Web services are an obvious and exciting evolution of the Internet“ Vint Cerf „Web services are self-contained business functions that operate over the Internet. They are written to strict specifications to work together and with other similar kinds of components.“ Alan Kotok „The basic idea behind Web services is to adapt the loosely coupled Web programming model for use in applications that are not browser-based. The goal is to provide a platform for building distributed applications using software running on different operating systems and devices, written using different programming languages and tools from multiple vendors, all potentially developed and deployed independently.“ MSDN Chris Hübsch, TU Chemnitz 2 Technologieumfeld • RPC • DCE • RMI • CORBA • DCom Chris Hübsch, TU Chemnitz 3 Anforderungen • Intra- und Inter-Applikations-Kommunikation Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg • Integration in bestehende Internet-Infrastruktur Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg • Integration in bestehende Internet-Infrastruktur • Skalierbarkeit in Anzahl und Vielfalt der Knoten Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg • Integration in bestehende Internet-Infrastruktur • Skalierbarkeit in Anzahl und Vielfalt der Knoten • i18n Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg • Integration in bestehende Internet-Infrastruktur • Skalierbarkeit in Anzahl und Vielfalt der Knoten • i18n • Fehlertoleranz Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg • Integration in bestehende Internet-Infrastruktur • Skalierbarkeit in Anzahl und Vielfalt der Knoten • i18n • Fehlertoleranz • Verfügbarkeit von Entwicklungswerkzeugen Anforderungen • Intra- und Inter-Applikations-Kommunikation • Kommunkation über Unternehmensgrenzen hinweg • Integration in bestehende Internet-Infrastruktur • Skalierbarkeit in Anzahl und Vielfalt der Knoten • i18n • Fehlertoleranz • Verfügbarkeit von Entwicklungswerkzeugen • Beliebig komplexe Abläufe abbildbar Chris Hübsch, TU Chemnitz 4 Schlüsseltechnologien SOAP: Simple Object Access Protocol WDSL: Web Services Description Language UDDI: Universal Description, Discovery and Integration UDDI WDSL SOAP HTTP Chris Hübsch, TU Chemnitz 5 SOAP Simple Object Access Protocol • Parallel zu XML-RPC entwickelt von Microsoft • XML-Basiertes Klartextprotokoll • Codierungsregeln für Daten und Prozeduraufrufe • Transport über HTTP, SMTP, FTP, ... • Routing Chris Hübsch, TU Chemnitz 6 SOAP-Messages SOAP <Envelope> SOAP <Header> SOAP <Body> SOAP-Messages SOAP <Envelope> SOAP <Header> SOAP <Body> Envelope: Wurzel des XML-Dokumentes Header: Bearbeitungshinweise an Server Body: Container für zu transportierende Daten im XML-Format1 1 DTD ist nicht vorgegeben Chris Hübsch, TU Chemnitz 7 SOAP-Request <Envelope xmlns =" h t t p : / / www. w3 . org / 2 0 0 2 / 1 2 / soap−envelope / " e n c o d i n g S t y l e =" h t t p : / / www. w3 . org / 2 0 0 2 / 1 2 / soap−encoding "> <Body> < f o o b a r : ConvertTimeRequest xmlns : f o o b a r ="www. f o o . bar "> < f o o b a r : gmtime > 1 4 / 0 4 / 2 0 0 3 1 1 : 5 0 : 0 0 GMT< / f o o b a r : gmtime> < f o o b a r : timezone>Loebsal < / f o o b a r : timezone> < / f o o b a r : ConvertTimeRequest> < / Body> < / Envelope> Chris Hübsch, TU Chemnitz 8 SOAP-Response <Envelope xmlns =" h t t p : / / www. w3 . org / 2 0 0 2 / 1 2 / soap−envelope / " > <Body> < f o o b a r : ConvertTimeResponse xmlns : f o o b a r ="www. f o o . bar "> <foobar : l o c a l t i m e >14. A p r i l 2003 13:50:00 </ foobar : l o c a l t i m e > < / f o o b a r : ConvertTimeResponse> < / Body> < / Envelope> Chris Hübsch, TU Chemnitz 9 WDSL Web Services Description Language • Beschreibt Web-Services in standardisierter Form • Unabhängig von konkreter RPC-Methode • Beschreibungen werden üblicherweise maschinell erstellt Chris Hübsch, TU Chemnitz 10 WDSL-Dokumente • definition ist Wurzelelement WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation · Operationen bestehen aus input und output-Message WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation · Operationen bestehen aus input und output-Message – Abbilden abstrakter Interfaces auf Implementierung → binding WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation · Operationen bestehen aus input und output-Message – Abbilden abstrakter Interfaces auf Implementierung → binding ∗ für jede Operation Codierungen der Messages festlegen WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation · Operationen bestehen aus input und output-Message – Abbilden abstrakter Interfaces auf Implementierung → binding ∗ für jede Operation Codierungen der Messages festlegen – Beschreiben des Dienstes → service WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation · Operationen bestehen aus input und output-Message – Abbilden abstrakter Interfaces auf Implementierung → binding ∗ für jede Operation Codierungen der Messages festlegen – Beschreiben des Dienstes → service ∗ Services bestehen aus ports, die ein Binding aktivieren WDSL-Dokumente • definition ist Wurzelelement – Definition von Datentypen → type (als XSD) – Definition von Botschaften → message ∗ Botschaften bestehen aus Parametern → part – Definition von abstrakten Interfaces → portType ∗ Interfaces bestehen aus Methoden → operation · Operationen bestehen aus input und output-Message – Abbilden abstrakter Interfaces auf Implementierung → binding ∗ für jede Operation Codierungen der Messages festlegen – Beschreiben des Dienstes → service ∗ Services bestehen aus ports, die ein Binding aktivieren Chris Hübsch, TU Chemnitz 11 WDSL-Beispiel < d e f i n i t i o n s name = ’ t i m e s e r v i c e ’ xmlns = ’ h t t p : / / schemas . xmlsoap . org / wsdl / ’ > <message name = ’ Clock . ConvertTimeRequest ’ > < p a r t name = ’ gmttime ’ t y p e = ’ xsd : t i m e ’ / > < p a r t name = ’ timezone ’ t y p e = ’ xsd : s t r i n g ’ / > < / message> <message name = ’ Clock . ConvertTimeResponse ’ > < p a r t name = ’ l o c a l t i m e ’ t y p e = ’ xsd : s t r i n g ’ / > < / message> Chris Hübsch, TU Chemnitz 12 WDSL-Beispiel < portType name = ’ ClockSoapPort ’ > < o p e r a t i o n name = ’ ConvertTime ’ parameterOrder = ’ gmtime timezone ’ > < i n p u t message = ’ wsdlns : Clock . ConvertTimeRequest ’ / > < o u t p u t message = ’ wsdlns : Clock . ConvertTimeResponse ’ / > </ operation> < / portType > < b i n d i n g name = ’ ClockSoapBinding ’ t y p e = ’ wsdlns : ClockSoapPort ’ > <soap : b i n d i n g s t y l e = ’ r p c ’ t r a n s p o r t = ’ h t t p : / / schemas . xmlsoap . org / soap / h t t p ’ / > Chris Hübsch, TU Chemnitz 13 WDSL-Beispiel < o p e r a t i o n name = ’ ConvertTime ’ > <soap : o p e r a t i o n soapAction = ’ h t t p : / / f o o . bar / a c t i o n / \ Clock . ConvertTime ’ / > <input> <soap : body use = ’ encoded ’ namespace = ’ h t t p : / / \ f o o . bar / message / ’ e n c o d i n g S t y l e = ’ h t t p : / / \ schemas . xmlsoap . org / soap / encoding / ’ / > </ input> <output> <soap : body use = ’ encoded ’ namespace = ’ h t t p : / / \ f o o . bar / message / ’ e n c o d i n g S t y l e = ’ h t t p : / / \ schemas . xmlsoap . org / soap / encoding / ’ / > </ output> </ operation> </ binding> Chris Hübsch, TU Chemnitz 14 WDSL-Beispiel < s e r v i c e name = ’ TimeConvertService ’ > < p o r t name = ’ ClockSoapPort ’ b i n d i n g = ’ wsdlns : ClockSoapBinding ’ > <soap : address l o c a t i o n = ’ h t t p : / / l o c a l h o s t / demos / \ wsdl / d e v x p e r t / c o n v e r t s e r v i c e . asp ’ / > </ port> </ service> </ d e f i n i t i o n s > Chris Hübsch, TU Chemnitz 15 UDDI Universal Description, Discovery and Integration • Infrastruktur, um Web-Services zu registrieren und aufzufinden • ca. 30 SOAP-Nachrichten (d.h. selbst Webservice) • 4 Datenstrukturen • Caching der Auskünfte • Retry-On-Failure Protokoll • mehrere konkurrierende Registries Chris Hübsch, TU Chemnitz 16 UDDI-Directories White-Pages Unternehmens-Infos businessEntity UDDI-Directories White-Pages Yello-Pages Unternehmens-Infos Service-Infos businessEntity businessService UDDI-Directories White-Pages Yello-Pages Green-Pages Unternehmens-Infos Service-Infos Binding-Infos businessEntity businessService bindingTemplate UDDI-Directories White-Pages Yello-Pages Green-Pages Unternehmens-Infos Service-Infos Binding-Infos businessEntity businessService bindingTemplate tModel speichert implementierungsabhängige Metadaten Chris Hübsch, TU Chemnitz 17 Implementierungen http://www.xmethods.com/ve2/ViewImplementations.po • J2EE • .NET • mod soap • Bea-WebLogic • ... Chris Hübsch, TU Chemnitz 18 Problemgebiete • Standardisierung im Fluss • Sicherheit • Transaktionsfähigkeit • Versionsinkompatibilitäten Chris Hübsch, TU Chemnitz 19 Weitere Schlagworte im Umfeld XSD: XML Schema ebXML: electronic business XML XML Security OASIS: Organization for the Advancement of Structured Information Standards Chris Hübsch, TU Chemnitz 20 Links • http://www.w3.org/2000/xp/Group/ • http://www.w3.org/TR/wsdl • http://www.uddi.org/ • http://www.xmethods.com/ Chris Hübsch, TU Chemnitz 21 Zukunft? CORBA? Chris Hübsch, TU Chemnitz 22 Ende Chris Hübsch, TU Chemnitz 23