Lektion 11: Webservices Helmar Burkhart Dep. Informatik Universität Basel Helmar.Burkhart@... © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-1 „Klassische“ Webnutzung • Weltweit verteilte, vernetzte, einfach zugreifbare Informationen. • Mensch als Informationsnutzer. • Beginnende Geschäftsmodelle: B2C (Business to Consumer). • Einfaches konzeptionelles Modell: ClientServer. • Wenige, einfache Standards: http, html. © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-2 Evolution des Web: Von der Information zum Dienst • Weltweit vernetzte, lose gekoppelte Dienstleistungen. • Business to Business (B2B) Middleware. Anwendung A Anwendung B Web Service Middleware Internet • • • • Standardisierte Protokolle und Nachrichtenformate. Dienstverzeichnisse Entwicklung verteilter Objektsysteme über das Web. Evolutionäre Erweiterungen früher Technologien (RPC, RMI, CORBA). © Helmar Burkhart • 11-3 Webtechnologies (CS211) • Lektion 11: Webservices Remote Procedure Call: RPC (1) Client Server activate remote method call method return response data Remote Procedure Call (RPC) allows method activations on remote objects. It offers higher abstraction for developing distributed applications by preserving the object model across networks. © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-4 RPC (2) Client Stub call local stub return value or throw exception © Helmar Burkhart • Receiver marshalled parameters Server local method call marshalled result or exception Webtechnologies (CS211) • Lektion 11: Webservices 11-5 RMI - Remote Method Invocation http://java.sun.com/products/jdk/rmi/ Java Remote Method Invocation (Java RMI) enables the programmer to create distributed Java technology-based to Java technologybased applications, in which the methods of remote Java objects can be invoked from other Java virtual machines, possibly on different hosts. RMI uses object serialization to marshal and unmarshal parameters and does not truncate types, supporting true objectoriented polymorphism. © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-6 Remote Objects and Interfaces • A remote object is an object whose methods can be invoked from objects within another Java virtual machine, possibly on a a different computer. A method invocation on a remote object has the same syntax as a method invocation on a local object. • An object becomes a remote object when it implements a remote interface (extends java.rmi.Remote) • Remote objects are passed by reference, the others by value. © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-7 Creating RMI-Based Applications 1. Design and implement the components 1.1 Define the remote interfaces 1.2 Implements the remote interfaces 1.3 Implement the server 1.4 Implement the client 2. Compile sources and generate the stubs 2.1 javac to compile the sources 2.2 rmic to generate the stubs (on the remote objects impl.) 3. Make classes network accessible all classes especially remote interface classes and stubs 4. Start the application 4.1 Start the rmiregistry process 4.2 Start the server 4.3 Start the client © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-8 OMG CORBA • IDL - Interface Definition Language (language neutral) • CORBA - Common Object Request Broker Architecture industry-standard distributed object model • OMG - Object Management Group Client Dynamic Invocation IDL Stubs Server ORB Interface Static IDL Skeleton Dynamic Skeleton Object Adapter ORB Core Interface identical for all ORB implementations Possibly multiple object adapters Stubs and skeletons for each object type ORB dependent interfaces © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-9 Java IDL • Java IDL provides ORB • ORB - Object Request Broker - class library that enables low-level communication between Java IDL applications and other CORBA-compliant applications. • Programming: IDL Interfaces, Stubs, Skeletons, Naming Service • ORB includes stubs and skeletons • Communication between ORBs through IIOP • IIOP-Internet Inter ORB Protocol (based on TCP/IP) © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-10 IDL to Java // squareServer.IDL interface squareServer{ double sqrt(in double x) raises(NegativeNumber); } // squareServer.JAVA public interface squareServer extends org.omg.CORBA.Object { public double sqrt(double x) throws NegativeNumber; } © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-11 Was ist ein Web Service ? (1) GI – Lexikon der Informatik: http://www.gi-ev.de/informatik/lexikon/index.html Web Services lassen sich wie folgt charakterisieren: • Programmierbar • Selbstbeschreibend • Kapselung • Lose gekoppelt • Ortstransparenz • Protokolltransparenz • Komposition © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-12 Was ist ein Webservice ? (2) W3C Web services Architecture group: http://www.w3.org/TR/2004/NOTE-ws-arch-20040211/ A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-13 Web Service Dreieck UDDI: Universal Discovery, http://www.ibm.com/services/uddi Description and Integration http://uddi.microsoft.com … Service Registry Find Publish WDSL ← UDDI WDSL → UDDI Service Requestor SOAP over HTTP Service provider Bind © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-14 SOAP (Simple Object Access Protocol) • • • • • • UDDI Service User Service Provider Interaktion zwischen einer Client- und einer ServerAnwendung RPC-Stil (request – response) Benutzt XML Nutzt HTTP als TransportLayer-Protokoll • Header Elemente für Kontextinformationen • Fehler- und Ausnahmebehandlung SOAP © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-15 WSDL (Web Services Definition Language) UDDI WSDL WSDL Service User © Helmar Burkhart Service Provider • Definition der Interfaces: Neben den Operationen des Web Services wird hier auch angegeben, auf welchem Rechner im Internet der Web Service verfügbar ist. WSDL bietet XML-Sprachregeln für die Beschreibung -was ein Webservice leistet -wo er sich befindet und -wie er aufzurufen ist Webtechnologies (CS211) • Lektion 11: Webservices 11-16 UDDI (Universal Description, Discovery, and Integration ) UDDI Service User © Helmar Burkhart 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 Webtechnologies (CS211) • Lektion 11: Webservices 11-17 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: – Security – Authentifizierung – Quality of Service – Transaktions Management © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-18 Java XML Technology http://java.sun.com/xml/index.jsp Spezifiziert 5 APIs – JAXP: – JAXB: – JAXR: – JAX-RPC: – SAAJ: © Helmar Burkhart • XML Processing XML Binding Registries RPC über SOAP SOAP with Attachments API for Java Webtechnologies (CS211) • Lektion 11: Webservices 11-19 JAX RPC • • • • Ziel der Spezifikation: Einfachheit der Schnittstelle Kapselung der SOAP Nachrichtenbildung Unterstützung von WSDL: wscompile Unterstützung von Static Stubs, Dynamic Stubs und Dynamischen Proxies http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html © Helmar Burkhart • Webtechnologies (CS211) • Lektion 11: Webservices 11-20