220 likes | 333 Views
Spontane Vernetzung. Christoph Hoche 19. Februar 2002. Inhalt. Einleitung Spontane Vernetzung Infrastrukturen JINI (Java Intelligent Network Interface) SLP (Service Location Protocol) WebServices SOAP (Simple Object Access Protocol) WSDL (Web-Service Description Language)
E N D
Spontane Vernetzung Christoph Hoche 19. Februar 2002
Inhalt • Einleitung • Spontane Vernetzung • Infrastrukturen • JINI (Java Intelligent Network Interface) • SLP (Service Location Protocol) • WebServices • SOAP (Simple Object Access Protocol) • WSDL (Web-Service Description Language) • UDDI (Universal Description Discovery and Integration)
Spontane Vernetzung • Jedes Gerät stellt seine Dienste anderen zur Verfügung • Automatische Integration neuer Geräte/Dienste • Ebenen der spontanen Vernetzung: • Netzwerkebene • Automatische Vernetzung • Festlegen von Kommunikationsparametern in einem Protokollstack: • Zuweisung einer IP-Adresse mittels DHCP • Authentifizierung • … • Infrastrukturebene • Software zur vereinfachten Nutzung der Netzwerkebene • Vermittlung und Verwaltung von Diensten • Dienstebene • Bereitstellen und Nutzen von Diensten
Dienstvermittlung Dienstvermittler 3. Dienstrückgabe 1. Registrierung 2. Dienstanfrage Dienstnehmer Dienstanbieter 4. Dienstnutzung
Infrastrukturen • JINI (Java Intelligent Network Interface) • SLP (Service Location Protocol) • WebServices • SOAP (Simple Object Access Protocol) • WSDL (Web-Service Description Language) • UDDI (Universal Description Discovery and Integration)
JINI • Java Intelligent Network Infrastructure • Sun Microsystems • Vermittlung von Diensten in lokalen Netzen • Dienstvermittlung zentral (Lookup-Service-Gruppen möglich) • Vollständig in Java implementiert • Publikation der Dienste mittels Proxy-Objekte • Informationen: • http://www.sun.com/jini
JINI Dienstvermittlung • Discovery I • Join • Discovery II • Lookup • Receive • Use Network Service Lookup Service 1 Service Proxy Service Proxy Service Proxy Service Proxy Request 2 5 6 3 4 Request Network Client
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 ;} } Dienstimplementierung: public class PrinterImpl implements PrinterInterface { void print () {…} } 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(); Jini Beispiel
SLP • Service Location Protocol • Standard der IETF (RFC2608) • Protokoll zur lokalen Dienstvermittlung • Mit/ohne zentrale Dienstvermittlung • Reine Schnittstellen-Beschreibung • Informationen: • http://www.srvlog.org
Dienstbeschreibung • Dienst als URL: Protokoll und Location • Attribute als Name-Wert-Paare in der Form (Name = Wert) • Textbasiert Lifetime: 10800 URL: service:lpr://www.ibr.cs.tubs.de:515/queue Attributes: (SCOPE = STUDENTS), (PAPERCOLOR = WHITE), (PAPERSIZE = A4), (UNRESTRICTED_ACCESS), (LANGUAGE = POSTSCRIPT), (FLOOR = 1), (ROOM = 168)
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
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 Web-Services Toolkit Protokolle: SOAP (Simple Object Access Protocol) WSDL (Web-Service Description Language) UDDI (Universal Description, Discovery and Integration) Web-Services
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
SOAP Message • Soap Message: • Stellt genau eine Anfrage oder eine Antwort dar • Besteht aus Protokoll-Header und SOAP-Envelope • Protocol-Header: • Ist vom verwendeten Transportprotokoll abhängig • SOAP Envelope: • Container für SOAP-Header und SOAP-Body • SOAP Header: • Daten über SOAP-Nachricht • Anweisungen für die aufgerufene Anwendung • Optional • SOAP-Body: • Enthält die eigentliche Nachricht SOAP Message Protocol Header SOAP Envelope SOAP Header Headers SOAP Body Message Name & Data
SOAP Beispiel • Anfrage: 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> • 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> SOAP Message Protocol Header SOAP Envelope SOAP Header Headers SOAP Body Message Name & Data
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
WSDL - Elemente • Types: • Definition von Datentypen • Syntax nach XML-Schema <types> <schema targetNamespace=”http://www.ibr.cs.tu-bs.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> WSDL-Datei Types Messages PortTypes Bindings Service Port
WSDL - Elemente • Message: • Zusammensetzen der Types zu einer Nachricht. <message name=“SendPrintInstruction“> <part name=”data” element=”xsdl:PrintInstruction”/> </message> <message name=“GetPrinterResponse“> <part name=”return” element=”xsdl:PrinterResponse”/> </message> • 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> WSDL-Datei Types Messages PortTypes Bindings Service Port
WSDL - Elemente • Bindings: • Binden eines PortTypes an Protokolle <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> • Port: • 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> WSDL-Datei Types Messages PortTypes Bindings Service Port
UDDI • Universal Description, Discovery and Integration • Globale Business-Registry: • Logisch zentral • White-Pages: • Informationen zu den Anbietern (URL, Adresse, TelNr.) • Yellow-Pages: • Branchenspezifische Suche nach Unternehmen (Branche, Land) • Green-Pages: • Technische Beschreibung der Plattformen und Dienste eines Unternehmens • Weitere Informationen: • http://www.uddi.org