1 / 52

Devices Profile for Web Services

Workshop Oldenburg, 23.10.2008. Devices Profile for Web Services. Tagesablauf. SOA • Web Services DPWS DPWS Explorer DPWS Multi Edition Stack DPWS gSOAP Stack DPWS-AXIS2 OSGi/DPWS-Integration WS4D-Pipes . SOA • Web Services. SOA. Was ist SOA?

aderyn
Download Presentation

Devices Profile for Web Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Workshop Oldenburg, 23.10.2008 Devices Profile for Web Services www.materna.de

  2. Tagesablauf • SOA • Web Services • DPWS • DPWS Explorer • DPWS Multi Edition Stack • DPWS gSOAP Stack • DPWS-AXIS2 • OSGi/DPWS-Integration • WS4D-Pipes www.materna.de

  3. SOA • Web Services www.materna.de

  4. SOA Was ist SOA? • Abstraktes Konzept einer Software-Architektur • Dienste anbieten, suchen und nutzen Eigenschaften von Diensten in SOA • Wieder verwendbar • Offen zugreifbar • Plattform- und sprachenunabhängig • Lose gekoppelt www.materna.de

  5. SOA – Infrastruktur Rollen in der SOA • Anbieter • Nutzer • Vermittler Dienst- vermittler veröffentlichen finden Dienst- anbieter Dienst- nutzer interagieren Service Client www.materna.de

  6. Web Services Was sind Web Services? • Umsetzung des SOA-Konzepts • Maschine-Maschine Interaktion im Netzwerk Realisierung durch Standards • XML • SOAP • WSDL • UDDI www.materna.de

  7. Web Services – Infrastruktur Rollen in der Web Services Architektur • Anbieter • Nutzer • Verzeichnis (Vermittler) UDDI Dienst- verzeichnis WSDL WSDL veröffentlichen Verweis auf Dienst SOAP suchen Dienst- anbieter Dienst- nutzer Abfrage der Beschreibung Service Client SOAP Nutzung www.materna.de

  8. Envelope Header Body Web Services – SOAP SOAP beschreibt das XML-basierte Nachrichtenformat der Kommunikation und dessen Einbettung in ein Transportprotokoll • Aufbau einer SOAP-Nachricht • SOAP Envelope, Header, Body • Verwendung • Datentransport • Methodenaufruf (SOAP-RPC) • Transportprotokolle • HTTP, SMTP, FTP, RMI, … www.materna.de

  9. Web Services – WSDL WSDL ist eine XML-basierte Sprache, um Web-Services-Schnittstellen zu beschreiben • Aufbau eines WSDL-Dokuments • Types • Interface (portType) • Bindings • Services description types portType operation input output binding operation service endpoint www.materna.de

  10. Web Services – DPWS Problem • Keine dynamische Suche von Diensten • Keine Ereignisverarbeitung • Keine Ressourcen-Optimierung www.materna.de

  11. DPWS www.materna.de

  12. DPWS Devices Profile for Web Services Specification: „DPWS defines a minimal set of implementation constraints to enable secure Web service messaging, discovery, description, and eventing on resource-constrained endpoints.“ Fakten • Erstveröffentlichung in 2004 • Seit 2008 existiert OASIS WS-DD TC • Standard von Microsoft, Intel, Nortel, Lexmark, Red Hat, … • Integraler Bestandteil von Windows Vista www.materna.de

  13. DPWS Sriram Rajagopalan, Leiter von Program Management for Windows Device and Storage Technologies in Microsoft: "The formation of the WS-DD Technical Committee is an important milestone and builds upon mature WS-* base protocols by expanding the scope to include the wide variety of devices being used today in homes and enterprises. Defining protocols for discovering, securely consuming and exposing Web services in a lightweight footprint that suits these devices has the potential to greatly broaden the reach of Web services to meet customers' needs." www.materna.de

  14. Device (Hosting Service) Device (Hosting Service) Hosted Services Hosted Services Client Messages Client DPWS – Infrastruktur Terminologie • Device (Dienstanbieter) • Client (Dienstnutzer) • Discovery ersetzt Vermittler www.materna.de

  15. DPWS – Messaging Protokolle und Spezifikationen • SOAP 1.2 • HTTP/1.1 • WS-Addressing • UUID • URI • UDP • MTOM R0029: A SERVICE SHOULD NOT send a SOAP ENVELOPE that has more octets than the MTU over UDP. R0034: A SERVICE MUST at least receive and send SOAP 1.2 SOAP Envelopes. R0004: A DEVICE SHOULD use a urn:uuid scheme URI as the [address] property of its Endpoint Reference. www.materna.de

  16. DPWS – Discovery Spezifikation • WS-Discovery Nachrichten • Hello • Bye • Probe und Probe Match • Resolve und Resolve Match Device Client Hello / multicast Probe / multicast Probe Match / unicast Resolve / multicast Resolve Match / unicast Bye / multicast www.materna.de

  17. DPWS – Description <wsdp:Hosted> <wsa:EndpointReference> <wsa:Address> http://139.2.1.3/makeCoffee </wsa:Address> </wsa:EndpointReference> <wsdp:Types> img:MakeCappucinoPortType img:MakeEspressoPortType </wsdp:Types> <wsdp:ServiceId> http://coffee.example.org/ CoffeeService </wsdp:ServiceId> </wsdp:Hosted> <wsdp:ThisDevice> <wsdp:FriendlyName xml:lang=„en-US“> Our New Coffee Maker </wsdp:FriendlyName> <wsdp:FirmwareVersion> 2008.09CM_v01 </wsdp:FirmwareVersion> <wsdp:SerialNumber> 12345-123-1234 </wsdp:SerialNumber> </wsdp:ThisDevice> Spezifikationen • WSDL 1.1 • WS-MetadataExchange • WS-Policy • WS-Transfer Device-Eigenschaften • Manufacturer, ModelName, FriendlyName, … Service-Eigenschaften • Beschreibung, Zugehörigkeit, Nachrichten, Transport, Security, … www.materna.de

  18. DPWS – Eventing Observer Design Pattern Observable Observer Spezifikation • WS-Eventing Parteien • Event Sink (Client) • Event Source (Hosted Service) • Subscription Manager Subscription • Notifications (Event Messages) • zeitliche Dauer Delivery Mode • Push HostedSevice Client subscribe() setChanged() notifyObservers() sendEvent(…) unsubscribe() www.materna.de

  19. DPWS – Security Spezifikationen • WS-Security Integrität • XML Signature Vertraulichkeit • XML Encryption Authentifizierung • Transport Layer Security (https) www.materna.de

  20. DPWS Explorer www.materna.de

  21. DPWS Explorer Funktionen • Discovery • Eventing • Methodenaufrufe • Filter • WSDL-Import Unterstützung bei • Fehlersuche www.materna.de

  22. DPWS Java Multi Edition Stack www.materna.de

  23. DPWS Java Multi Edition Stack – Historie • Stack wird entwickelt in Zusammenarbeit von • Entwicklung wurde im Herbst 2005 begonnen • Open Source seit 2007 • Sourceforge: WS4D.org Java Multi Edition DPWS Stack • Aktuelle Version: 0.9.5 • Website: www.ws4d.org www.materna.de

  24. DPWS Java Multi Edition Stack – Spezifkationen Implementierung der DPWS-spezifischen Anforderungen von • WS-DiscoveryErkennung von Geräten im lokalen Netzwerk • WS-EventingEreignisgesteuerter Nachrichtenaustausch • WS-Transfer und WS Metadata ExchangeMetadatenaustausch von Entitäten • WS-SecuritySSL-Transportsicherheit • MTOMVersand von Binärinformationen www.materna.de

  25. DPWS Java Multi Edition Stack – Features Teil 1 • Vielseitigkeit durch Unterstützung aller Java-LaufzeitumgebungenJava SE, Java ME (CLDC und CDC) • Skalierbarkeit durch AnpassungsfähigkeitVerwendung spezifischer Plattformen und Module • Generisches Webinterface PresentationURL www.materna.de

  26. ... <wsdl:portType name="HelloWorldService"> <wsdl:operation name="SayHelloWorld"> <wsdl:input ... /> </wsdl:operation> </wsdl:portType> ... Hosted Services Remote Services Client Device (Hosting Service) Remote Device DPWS Java Multi Edition Stack – Features Teil 2 • Interoperabilität mit anderen DPWS-ImplementierungenVista (WSDAPI), gSOAP, Axis2, Schneider • WSDL-Generierung und Interpretation zur LaufzeitOn-the-fly Generierung von Proxies zu DPWS-Devices und Services www.materna.de

  27. Client Service Application Application Client Service Remote Discovery Eventing Discovery Eventing Remote Plug-ins Attachment Plug-ins SOAP SOAP Security HTTP HTTP Core Core UDP UDP PresentationURL TCP TCP DeviceAdmin Platform Toolkit (SE, CDC, CLDC) Platform Toolkit (SE, CDC, CLDC) Java Virtual Machine Java Virtual Machine DPWS Java Multi Edition Stack – Architektur www.materna.de

  28. HostingServiceDevice HostedServiceService QualifiedNamePort-Typen ParameterOperanden von Actions ... <wsdl:portType name="HelloWorldService"> <wsdl:operation name="SayHelloWorld"> <wsdl:input ... /> </wsdl:operation> </wsdl:portType> ... Hosted Services Remote Services Client Device (Hosting Service) Remote Device Action A Action B DPWS Java Multi Edition Stack – Klassenübersicht • ActionOperation • Client www.materna.de

  29. Funktion: DPWS Device Konstruktor:public HostingService( QualifiedName deviceType ) DPWS Java Multi Edition Stack – Klasse HostingService • Aufgaben: • Device-Port-Type setzen • Device-Metadaten setzen • Client: RemoteDevice publicclass SampleDevice extends HostingService { publicstaticfinal String NAMESPACE="http://www.ws4d.org"; publicstaticfinal String PORTTYPE="SampleDevice"; publicstaticfinal QualifiedName QN_PORTTYPE = new QualifiedName( PORTTYPE, NAMESPACE ); public SampleDevice() { super(QN_PORTTYPE); // Metadaten setFriendlyName("de-DE", "Marcus' Device"); setModelName("de-DE", "Model 42"); } ... } www.materna.de

  30. DPWS Java Multi Edition Stack – Klasse HostedService • Funktion: DPWS Service • Konstruktor: public HostedService() • Aufgaben: • Service-Port-Type definieren • Actions erzeugen • Actions hinzufügen • Client: RemoteService publicclass HelloWorldService extends HostedService { publicstaticfinal String NAMESPACE=SampleDevice.NAMESPACE; publicstaticfinal String PORTTYPE="HelloWorldService"; publicstaticfinal QualifiedName QN_PORTTYPE= new QualifiedName(PORTTYPE, NAMESPACE); public HelloWorldService() { super(); // -- hello world action -- HelloWorldAction helloWorldAct = new HelloWorldAction(); addAction(helloWorldAct); } ... } www.materna.de

  31. DPWS Java Multi Edition Stack – Klasse Action • Funktion: DPWS Action / Operation • Konstruktor:public Action( String actionName, QualifiedName serviceType, boolean oneway) • Aufgaben: • Parameter definieren und erzeugen • Input/Output-Parameterhinzufügen • Eventing: EventedAction • Client: RemoteAction publicclass HelloWorldAction extends Action{ publicstaticfinal StringACT_HW_NAME= "SayHelloWorld"; publicstaticfinal StringPARAM_HW_INPUT= "Name"; publicstaticfinal StringPARAM_HW_OUTPUT= "Greetings"; public HelloWorldAction() { super(ACT_HW_NAME, QN_PORTTYPE, false); Parameter helloWorldInput = new Parameter(PARAM_HW_INPUT, NAMESPACE, ParameterType.PARAMETER_TYPE_STRING); Parameter helloWorldOutput = new Parameter( PARAM_HW_OUTPUT, NAMESPACE, ParameterType.PARAMETER_TYPE_STRING); addInputParameterDefinition( helloWorldInput ); addOutputParameterDefinition( helloWorldOutput ); }... } www.materna.de

  32. DPWS Java Multi Edition Stack – Methode Action.invoke() • Funktion: Eingehende Remote-Operation-Aufrufe verarbeiten • Aufgaben: • Input-Parameter holen, Wert auslesen • Output-Parameter holen, Wert setzen @Override publicvoid invoke() throws DPWSException { Parameter helloWorldInput = getInputParameter(PARAM_HW_INPUT); Parameter helloWorldOutput = getOutputParameter(PARAM_HW_OUTPUT); String name = helloWorldInput.getValue(); String outputGreetings = "Hello World from Marcus' Service, " +name+ "!"; helloWorldOutput.setValue(outputGreetings); } www.materna.de

  33. Aufgaben: Device erzeugen Services erzeugen Services zum HostingService hinzufügen Eventing initialisieren (optional) Device starten DPWS Java Multi Edition Stack – Device starten publicstaticvoid main(String[] args) { SampleDevice device = new SampleDevice(); HelloWorldService service = new HelloWorldService(); device.addHostedService(service); device.start(); } www.materna.de

  34. DPWS Java Multi Edition Stack – Klasse Client • Funktion: DPWS Client • Konstruktor: public Client() • Aufgaben: • Client erzeugen und starten • Suche definieren und starten • Device Port Type • Service Port Type • Scope • Device UUID publicclass HelloWorldClient extends Client { publicstaticvoid main(String[] args) { HelloWorldClient client = new HelloWorldClient(); client.start(); // DefiniereundstarteSuche SearchParameter search = new SearchParameter(client); search.addDeviceType(SampleDevice.QN_PORTTYPE); search.addServiceType(HelloWorldService.QN_PORTTYPE); SearchManager.getInstance().searchService(search); } @Override publicvoid onServiceFound( ISearchResult result ){ ... } www.materna.de

  35. DPWS Java Multi Edition Stack – Such-Callback • Funktion: Ergebnis eigener Suche (Client) • Callback-Methoden: • onServiceFound(...) • onDeviceFound(...) • onDeviceProbe(...) • Aufgaben: • z. B. RemoteAction aufrufen @Override publicvoid onServiceFound( ISearchResult result ){ IRemoteService service = result.getRemoteService(); // RemoteAction aufrufen ... } www.materna.de

  36. DPWS Java Multi Edition Stack – Operationsaufruf • Funktion: Aufruf einer Remote-Operation • Methodenaufruf: • RemoteAction.invoke() @Override publicvoid onServiceFound( ISearchResult result ){ IRemoteService service = result.getRemoteService(); AbstractAction action = service.getAction( HelloWorldService.HelloWorldAction.ACT_HW_NAME, HelloWorldService.QN_PORTTYPE); Parameter input = action.getInputParameter( HelloWorldService.HelloWorldAction.PARAM_HW_INPUT); input.setValue("Marcus' Client"); try { action.invoke(); } catch (DPWSException e) { e.printStackTrace(); } Parameter output = action.getOutputParameter( HelloWorldService.HelloWorldAction.PARAM_HW_OUTPUT); System.out.println(output.getValue()); } • Aufgaben: • Hole Input-Parameter, Wert setzen • Hole Output-Parameter,Wert auslesen • Lokale Aufrufe auch möglich www.materna.de

  37. Web-Service-Integration für eingebettete Systeme mittels DPWS-fähiger OSGi-Plattformen OSGi/DPWS-Integration www.materna.de

  38. OSGi/DPWS-Integration – Symbolik Bundle mit OSGi Service Physikalisches Gerät mit OSGi Framework (Server/Client) Import von Paketen Verwendung von Empfang/Versand einer DPWS-Nachricht www.materna.de

  39. OSGi und Verteilung – Ist-Zustand • OSGi Services können nur innerhalb einer VM interagieren • Eine plattformübergreifende Nutzung ist nicht vorgesehen • Verteilte Lösungen lassen sich somit nicht realisieren • Im Draft RFC 119 wird ein Konzept für eine transparente verteilte Kommunikation spezifiziert X Physical Device: OSGi Framework Physical Device: OSGi Framework Bundle Bundle Bundle Bundle www.materna.de

  40. OSGi und Verteilung – Unsere Anforderungen • Einbettung von OSGi in eine verteilte SOA • Verschmelzung von SOA und OSGi • Nutzung offener und plattformunabhängiger Standards (Web Services) • Einsatz auf ressourcenbeschränkten Geräten • Keine Anpassungen der OSGi-Konzepte und -mechanismen • Keine Unterscheidung zwischen lokalen und entfernten Services • Anbieten von Legacy Services als entfernte Services ohne Anpassung • Einsetzbarkeit auf möglichst allen OSGi Frameworks • Rückgriff lediglich auf OSGi Standard Services  Physical Device: OSGi Framework Physical Device: OSGi Framework Bundle Bundle Bundle Bundle www.materna.de

  41. Default Serialization Custom Serialization DPWS Device A Hosted Service A Hello-Msg OSGi/DPWS-Integration – Adaptergenerierung Physical Device: OSGi Framework Bundle Repository Bundle A Adapter Generator DPWS Stack www.materna.de

  42. Default Serialization Custom Serialization Proxy A Package (Host-Bundle) Proxy Generator Interface X Remote Service A DPWS Client Interface Y Hello-Msg OSGi/DPWS-Integration – Proxy-Generierung Physical Device: OSGi Framework Bundle Repository Bundle B (Client) DPWS Stack www.materna.de

  43. Default Serialization Custom Serialization Invocation-Msg OSGi/DPWS-Integration – Service-Nutzung (Proxy) Physical Device: OSGi Framework Proxy A Bundle B (Client) Package (Host-Bundle) Interface X Remote Service A Interface Y DPWS Stack www.materna.de

  44. Default Serialization Custom Serialization Bundle A DPWS Device A DPWS Service A Invocation-Msg OSGi/DPWS-Integration – Service-Nutzung (Adapter) Physical Device: OSGi Framework Adapter Generator DPWS Stack www.materna.de

  45. Default Serialization Event Admin DPWS Device Event Converter DPWS Service OSGi/DPWS-Integration – Events (Source) Physical Device: OSGi Framework Event Converter (Event Handler) DPWS Stack Subscription-Msg Event-Msg www.materna.de

  46. Default Serialization Event Admin DPWS Device Event Converter DPWS Service OSGi/DPWS-Integration – Events (Target) Physical Device: OSGi Framework Event Converter (Event Handler) DPWS Stack Event-Msg www.materna.de

  47. OSGi/DPWS-Integration – Herausforderungen • Unter welchen Interfaces wird ein Proxy registriert? • Wie werden Properties eines Service übertragen? • Wie wird die Vererbungshierarchie der Java-Interfaces rekonstruiert? • Wie werden Methoden den Java-Interfaces zugeordnet? • Welche lokalen Services/Bundles sollen entfernt zugreifbar sein? • Welche entfernten Services/Bundles sollen lokal eingebunden werden? • Kann die entfernte Service-Nutzung gesichert erfolgen? www.materna.de

  48. OSGi/DPWS-Integration – Zusatz-Services • Zusätzliche Attribute eines DPWS-Service geben an, unter welchen Interfaces ein Service registriert wird • Je nach Bedarf werden DPWS-Zusatz-Services für ein Bundle-Device verfügbar gemacht: • OSGi-Zusatz-Service: Überträgt die Eigenschaften eines Service (Properties) • Java-Zusatz-Service:Liefert Informationen über die Interface-Vererbungshierarchie und die Zuordnung der Methoden zu den Interfaces www.materna.de

  49. OSGi/DPWS-Integration – Filter • Der Proxy- und Adapter-Generator sind (im Sinne von OSGi) managebar • Adapter-Generator: • White List über die Services, die entfernt zugreifbar sein sollen(BUNDLE-SYMBOLIC_NAME, INTERFACE_NAME) • White List über die zu sicherenden Services(BUNDLE-SYMBOLIC_NAME, INTERFACE_NAME) • Proxy-Generator: • White List über die einzubindenden Services (FRAMEWORK-ID, BUNDLE-SYMBOLIC_NAME, SERVICE_IMPL) www.materna.de

  50. OSGi/DPWS-Integration – Beispielszenario (max, min) Setze Schwellenwerte ALARM Starte Videokonferenz Klinik (Supervisor) Home Gateway Ergometer (Überwachtes Training) www.materna.de

More Related