Spontane Vernetzung Christoph Hoche 19. Februar 2002 Inhalt Einleitung Spontane Vernetzung Infrastrukturen 1. 2. 3. 1. 2. 3. JINI (Java Intelligent Network Interface) SLP (Service Location Protocol) WebServices 1. 2. 3. SOAP (Simple Object Access Protocol) WSDL (Web-Service Description Language) UDDI (Universal Description Discovery and Integration) 2 Einleitung 3 Spontane Vernetzung Jedes Gerät stellt seine Dienste anderen zur Verfügung Automatische Integration neuer Geräte/Dienste Ebenen der spontanen Vernetzung: 1. Netzwerkebene Automatische Vernetzung Festlegen von Kommunikationsparametern in einem Protokollstack: 2. Infrastrukturebene 3. Zuweisung einer IP-Adresse mittels DHCP Authentifizierung … Software zur vereinfachten Nutzung der Netzwerkebene Vermittlung und Verwaltung von Diensten Dienstebene Bereitstellen und Nutzen von Diensten 4 Dienstvermittlung Dienstvermittler 3. Dienstrückgabe 1. Registrierung 2. Dienstanfrage Dienstnehmer Dienstanbieter 4. Dienstnutzung 5 Infrastrukturen JINI (Java Intelligent Network Interface) SLP (Service Location Protocol) WebServices 1. 2. 3. 1. 2. 3. SOAP (Simple Object Access Protocol) WSDL (Web-Service Description Language) UDDI (Universal Description Discovery and Integration) 6 JINI Java Intelligent Network Infrastructure Sun Microsystems Vermittlung von Diensten in lokalen Netzen Dienstvermittlung zentral (Lookup-ServiceGruppen möglich) Vollständig in Java implementiert Publikation der Dienste mittels Proxy-Objekte Informationen: http://www.sun.com/jini 7 JINI Dienstvermittlung 1. 2. 3. 4. 5. 6. Discovery I Join Discovery II Lookup Receive Use 1 Network Service Service Proxy2 Lookup Service Service Request Proxy 5 6 3 4 Request Network Client 8 Jini Beispiel Dienstbeschreibung: Bedienung durch Interface interface PrinterInterface implements Serializable { void print (); } Eigenschaften durch Klassen: class Resolution extends AbstractEntry { int dpi; Resolution (int dpi) {this.dpi = dpi ;} } class Info extens AbstractEntry { String vendor; int year; Info (String vendor, int year) { this.vendor = vendor; this.year = year ;} } Dienstregistrierung: PrinterInterface printerProxy = new PrinterImpl(); Entry [] attr = {new Resolution (600), new Info (“HP”, “2001”)}; JoinManager jm = new JoinManager (printerProxy, attr, null, null, null); Anfrage: Class[] classes = {PrinterInterface.class}; Entry[] attr = {new Resolution(600), new Info(“HP”, null)}; ServiceTemplate anfrage = new ServiceTemplate(null, classes, attr); ServiceRegistrar serviceRegistrar; //Lookup-Service … ServiceItem[] serviceItems = serviceRegistrar.lookup (anfrage); PrinterInterface printerProxy = (PrinterInterface)serviceItem[0].service; printerProxy.print(); Dienstimplementierung: public class PrinterImpl implements PrinterInterface { void print () {…} } 9 SLP Service Location Protocol Standard der IETF (RFC2608) Protokoll zur lokalen Dienstvermittlung Mit/ohne zentrale Dienstvermittlung Reine SchnittstellenBeschreibung Informationen: http://www.srvlog.org 10 Dienstbeschreibung Dienst als URL: Protokoll und Location Attribute als Name-Wert-Paare in der Form (Name = Wert) Textbasiert Lifetime: URL: Attributes: 10800 service:lpr://www.ibr.cs.tubs.de:515/queue (SCOPE = STUDENTS), (PAPERCOLOR = WHITE), (PAPERSIZE = A4), (UNRESTRICTED_ACCESS), (LANGUAGE = POSTSCRIPT), (FLOOR = 1), (ROOM = 168) 11 SLP - Anfrage / Nutzung Dienstanfrage: Angabe des Servicetyps Boolsche Verknüpfung der Attribute lpr//(&(LANGUAGE == POSTSCRIPT), (UNRESTRICTED_ACCESS), (FLOOR == 1))/ Dienstvermittlung: Erfüllen des boolschen Ausdrucks der Anfrage für den verlangten Servicetyp Rückgabe: Resultat ist die URL des Service service:lpr://www.ibr.cs.tu-bs.de:515/queue 12 Web-Services Dienst, erreichbar über das Internet Verwendung offener Standards Programmiersprachen unabhängig, da reine Schnittstellenbeschreibung Globale Verwaltung in einer Registry Web-Service Umgebungen: Microsoft .NET SUN ONE Hewlett Packard E-Services Oracle 9i IBM Websphere mit IBM WebServices Toolkit Protokolle: SOAP (Simple Object Access Protocol) WSDL (Web-Service Description Language) UDDI (Universal Description, Discovery and Integration) 13 SOAP Simple Object Access Protocol W3C-Spezifikation Protokoll für Remote-Procedure-Calls XML-basiert -> textbasiert -> transparent Unabhängig vom Transportprotokoll (HTTP, SMTP, FTP, …) Geht durch Firewalls Weitere Informationen: http://www.w3c.org/2000/xp 14 SOAP Message SOAP Message Protocol Header SOAP Envelope Soap Message: Protocol-Header: SOAP Header Headers Message Name & Data Container für SOAP-Header und SOAP-Body SOAP Header: Ist vom verwendeten Transportprotokoll abhängig SOAP Envelope: SOAP Body Stellt genau eine Anfrage oder eine Antwort dar Besteht aus Protokoll-Header und SOAPEnvelope Daten über SOAP-Nachricht Anweisungen für die aufgerufene Anwendung Optional SOAP-Body: Enthält die eigentliche Nachricht 15 SOAP Beispiel SOAP Message Protocol Header SOAP Envelope SOAP Header Headers POST /Object http/1.1 Host: 134.169.34.18 Content-Type: text/xml Content-Length: 184 SOAPAction: „urn:print-com:Printer#print” <SOAP-ENV:Envelope xmlns:SOAPENV=“http://schemas.xmlsoap.org/soap/envelope/“ SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/“ xmlns:xsi=“http://www.w3c.org/1999/XML-Schema-instance“ xmlns:xsd=„http://www.w3c.org/1999/XML-Schema“> <SOAP-ENV:Body> <p:print xmlns:p=“http://www.ibr.cs.tu-bs.de/WebServices/print“> <text xsi:type=”xsi:string”> Hello World </text> </p:print> </SOAP-ENV:Body> <SOAP-ENV:Envelope> SOAP Body Message Name & Data Anfrage: Antwort: 200 OK Content-Type: text/xml Content-Length: 192 <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/“ SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/“ xmlns:xsi=“http://www.w3c.org/1999/XML-Schema-instance“ xmlns:xsd=“http://www.w3c.org/1999/XML-Schema“ <SOAP-ENV:Body> <p:printerResponse xmlns:p=“http://www.ibr.cs.tu-bs.de/WebServices/print“> <text xsi:type=”xsd:string”> 11 Bytes printed. </text> </p:printerResponse> </SOAP-ENV:Body> <SOAP-ENV:Envelope> 16 WSDL Web Service Description Language W3C-Spezifikation XML basiert Beschreibung von Web-Services (wie IDL in CORBA) Kann aus Klassen gewonnen werden (und umgekehrt) Informationen: http://www.w3.org/TR/wsdl 17 WSDL - Elemente WSDL-Datei Types Messages PortTypes Bindings Service Port Types: Definition von Datentypen Syntax nach XML-Schema <types> <schema targetNamespace=”http://www.ibr.cs.tubs.de/WebServices/printService.xsd” xmlns=“www.w3.org/2000/10/XMLSchema“> <element name=“PrintInstruction“> <complexType> <all> <element name=”printString” type=”string”> </all> </complexType> </element> <element name=“PrinterResponse“> <complexType> <all> <element name=”responseString” type=”string”> </all> </complexType> </element> </types> 18 WSDL - Elemente Message: WSDL-Datei Types Messages <message name=“SendPrintInstruction“> <part name=”data” element=”xsdl:PrintInstruction”/> </message> <message name=“GetPrinterResponse“> <part name=”return” element=”xsdl:PrinterResponse”/> </message> PortTypes Bindings Service Port Zusammensetzen der Types zu einer Nachricht. PortTypes: Art der möglichen Operationen auf einem Port Kann Eingabe und/oder Ausgabe haben <portType name=“PrintPortType“> <operation name=”Print”> <input message=”tns:SendPrintInstruction”/> <output message=”tns:GetPrinterResponse”/> </operation> </portType> 19 WSDL - Elemente Bindings: WSDL-Datei Types Messages <binding name=”PrintBinding” type=”tns:PrintPortType“> <soap:binding style=“document“ transport=“http://schemas.xmlsoap.org/... ...soap/http/”/> <operation name=“Print“> <soap:operation soapAction=”http://www.ibr.cs.tu-bs.de/WebServices/Print”/> </operation> </binding> PortTypes Bindings Port Port: Service Binden eines PortTypes an Protokolle Endpunkt eines Dienstes (URL) Service: Zusammenfassung von Ports <service name=”PrintService” <port name=“PrintPort“ binding=“tns:PrintBinding“> <soap:address location=“http://www.ibr.cs.tu-... ...bs.de/WebServices/Print”/> </port> </service> 20 UDDI Universal Description, Discovery and Integration Globale Business-Registry: Logisch zentral White-Pages: Yellow-Pages: Branchenspezifische Suche nach Unternehmen (Branche, Land) Green-Pages: Informationen zu den Anbietern (URL, Adresse, TelNr.) Technische Beschreibung der Plattformen und Dienste eines Unternehmens Weitere Informationen: http://www.uddi.org 21 Zusammenfassung JINI SLP Web-Services Programmiersprache Java Unabhängig Unabhängig Dienstbeschreibung Java-Interface, Java-Klassen Textbasiert XML-basiert Dienstvermittlung Lokal Lokal Global Dienstnutzung Proxy-Objekt Service-Aufruf Service-Aufruf 22