Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© MATERNA GmbH 2008 www.materna.de1 Workshop Oldenburg, 23.10.2008 Devices Profile for Web Services.

Ähnliche Präsentationen


Präsentation zum Thema: "© MATERNA GmbH 2008 www.materna.de1 Workshop Oldenburg, 23.10.2008 Devices Profile for Web Services."—  Präsentation transkript:

1 © MATERNA GmbH Workshop Oldenburg, Devices Profile for Web Services

2 © MATERNA GmbH Tagesablauf SOA Web Services DPWS DPWS Explorer DPWS Multi Edition Stack DPWS gSOAP Stack DPWS-AXIS2 OSGi/DPWS-Integration WS4D-Pipes

3 © MATERNA GmbH SOA Web Services

4 © MATERNA GmbH 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

5 © MATERNA GmbH SOA – Infrastruktur Rollen in der SOA Anbieter Nutzer Vermittler Dienst- anbieter Dienst- nutzer Dienst- vermittler ServiceClient veröffentlichen finden interagieren

6 © MATERNA GmbH Web Services Was sind Web Services? Umsetzung des SOA-Konzepts Maschine-Maschine Interaktion im Netzwerk Realisierung durch Standards XML SOAP WSDL UDDI

7 © MATERNA GmbH Web Services – Infrastruktur Rollen in der Web Services Architektur Anbieter Nutzer Verzeichnis (Vermittler) Dienst- anbieter Dienst- nutzer Dienst- verzeichnis ServiceClient veröffentlichen Verweis auf Dienst Abfrage der Beschreibung UDDI WSDL SOAP suchen SOAP Nutzung

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

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

10 © MATERNA GmbH Web Services – DPWS Problem Keine dynamische Suche von Diensten Keine Ereignisverarbeitung Keine Ressourcen-Optimierung

11 © MATERNA GmbH DPWS

12 © MATERNA GmbH 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

13 © MATERNA GmbH DPWS "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." Sriram Rajagopalan, Leiter von Program Management for Windows Device and Storage Technologies in Microsoft:

14 © MATERNA GmbH DPWS – Infrastruktur Terminologie Device (Dienstanbieter) Client (Dienstnutzer) Discovery ersetzt Vermittler Device (Hosting Service) Hosted Services Device (Hosting Service) Hosted Services Client Messages

15 © MATERNA GmbH 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.

16 © MATERNA GmbH DPWS – Discovery Spezifikation WS-Discovery Nachrichten Hello Bye Probe und Probe Match Resolve und Resolve Match DeviceClient Hello / multicast Resolve Match / unicast Bye / multicast Probe Match / unicast Probe / multicast Resolve / multicast

17 © MATERNA GmbH DPWS – Description Spezifikationen WSDL 1.1 WS-MetadataExchange WS-Policy WS-Transfer Device-Eigenschaften Manufacturer, ModelName, FriendlyName, … Service-Eigenschaften Beschreibung, Zugehörigkeit, Nachrichten, Transport, Security, … Our New Coffee Maker CM_v img:MakeCappucinoPortType img:MakeEspressoPortType CoffeeService

18 © MATERNA GmbH DPWS – Eventing Spezifikation WS-Eventing Parteien Event Sink (Client) Event Source (Hosted Service) Subscription Manager Subscription Notifications (Event Messages) zeitliche Dauer Delivery Mode Push HostedSeviceClient subscribe() sendEvent(…) Observable Observer setChanged() notifyObservers() unsubscribe() Observer Design Pattern

19 © MATERNA GmbH DPWS – Security Spezifikationen WS-Security Integrität XML Signature Vertraulichkeit XML Encryption Authentifizierung Transport Layer Security (https)

20 © MATERNA GmbH DPWS Explorer

21 © MATERNA GmbH DPWS Explorer Funktionen Discovery Eventing Methodenaufrufe Filter WSDL-Import Unterstützung bei Fehlersuche

22 © MATERNA GmbH DPWS Java Multi Edition Stack

23 © MATERNA GmbH 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: Website:

24 © MATERNA GmbH DPWS Java Multi Edition Stack – Spezifkationen Implementierung der DPWS-spezifischen Anforderungen von WS-Discovery Erkennung von Geräten im lokalen Netzwerk WS-Eventing Ereignisgesteuerter Nachrichtenaustausch WS-Transfer und WS Metadata Exchange Metadatenaustausch von Entitäten WS-Security SSL-Transportsicherheit MTOM Versand von Binärinformationen

25 © MATERNA GmbH DPWS Java Multi Edition Stack – Features Teil 1 Vielseitigkeit durch Unterstützung aller Java-Laufzeitumgebungen Java SE, Java ME (CLDC und CDC) Skalierbarkeit durch Anpassungsfähigkeit Verwendung spezifischer Plattformen und Module Generisches Webinterface PresentationURL

26 © MATERNA GmbH Device (Hosting Service) Hosted Services Client DPWS Java Multi Edition Stack – Features Teil 2 Interoperabilität mit anderen DPWS-Implementierungen Vista (WSDAPI), gSOAP, Axis2, Schneider WSDL-Generierung und Interpretation zur Laufzeit On-the-fly Generierung von Proxies zu DPWS-Devices und Services Remote Device Remote Services

27 © MATERNA GmbH DPWS Java Multi Edition Stack – Architektur

28 © MATERNA GmbH DPWS Java Multi Edition Stack – Klassenübersicht HostingService Device HostedService Service QualifiedName Port-Typen Parameter Operanden von Actions Action Operation Client Device (Hosting Service) Hosted Services Client Remote Device Remote Services Action A Action B

29 © MATERNA GmbH 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 public class SampleDevice extends HostingService { public static final String NAMESPACE="http://www.ws4d.org"; public static final String PORTTYPE="SampleDevice"; public static final QualifiedName QN_PORTTYPE = new QualifiedName( PORTTYPE, NAMESPACE ); public SampleDevice() { super(QN_PORTTYPE); // Metadaten setFriendlyName("de-DE", "Marcus' Device"); setModelName("de-DE", "Model 42"); }... }

30 © MATERNA GmbH 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 public class HelloWorldService extends HostedService { public static final String NAMESPACE=SampleDevice.NAMESPACE; public static final String PORTTYPE="HelloWorldService"; public static final QualifiedName QN_PORTTYPE= new QualifiedName(PORTTYPE, NAMESPACE); public HelloWorldService() { super(); // -- hello world action -- HelloWorldAction helloWorldAct = new HelloWorldAction(); addAction(helloWorldAct); }... }

31 © MATERNA GmbH 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-Parameter hinzufügen Eventing: EventedAction Client: RemoteAction public class HelloWorldAction extends Action{ public static final StringACT_HW_NAME= "SayHelloWorld"; public static final StringPARAM_HW_INPUT= "Name"; public static final 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 ); }... }

32 © MATERNA GmbH DPWS Java Multi Edition Stack – Methode Action.invoke() Funktion: Eingehende Remote-Operation-Aufrufe verarbeiten Aufgaben: Input-Parameter holen, Wert auslesen Output-Parameter holen, Wert public void 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); }

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

34 © MATERNA GmbH 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 public class HelloWorldClient extends Client { public static void main(String[] args) { HelloWorldClient client = new HelloWorldClient(); client.start(); // Definiere und starte Suche SearchParameter search = new SearchParameter(client); search.addDeviceType(SampleDevice.QN_PORTTYPE); search.addServiceType(HelloWorldService.QN_PORTTYPE); SearchManager.getInstance().searchService(search); public void onServiceFound( ISearchResult result ){... }

35 © MATERNA GmbH DPWS Java Multi Edition Stack – Such-Callback Funktion: Ergebnis eigener Suche (Client) Callback-Methoden: onServiceFound(...) onDeviceFound(...) onDeviceProbe(...) Aufgaben: z. B. RemoteAction public void onServiceFound( ISearchResult result ){ IRemoteService service = result.getRemoteService(); // RemoteAction aufrufen... }

36 © MATERNA GmbH DPWS Java Multi Edition Stack – Operationsaufruf Funktion: Aufruf einer Remote-Operation Methodenaufruf: RemoteAction.invoke() Aufgaben: Hole Input-Parameter, Wert setzen Hole Output-Parameter, Wert auslesen Lokale Aufrufe auch public void 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()); }

37 © MATERNA GmbH OSGi/DPWS-Integration Web-Service-Integration für eingebettete Systeme mittels DPWS-fähiger OSGi-Plattformen

38 © MATERNA GmbH 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

39 © MATERNA GmbH 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 Physical Device: OSGi Framework Bundle Physical Device: OSGi Framework Bundle X

40 © MATERNA GmbH 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 Bundle Physical Device: OSGi Framework Bundle

41 © MATERNA GmbH OSGi/DPWS-Integration – Adaptergenerierung Physical Device: OSGi Framework Adapter Generator DPWS Device A Hosted Service A Default Serialization Custom Serialization Bundle A Bundle Repository Hello-Msg DPWS Stack

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

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

44 © MATERNA GmbH OSGi/DPWS-Integration – Service-Nutzung (Adapter) Physical Device: OSGi Framework Default Serialization Custom SerializationBundle A DPWS Stack DPWS Device A DPWS Service A Adapter Generator Invocation-Msg

45 © MATERNA GmbH OSGi/DPWS-Integration – Events (Source) Physical Device: OSGi Framework Default SerializationEvent Admin Event-Msg DPWS Stack Event Converter (Event Handler) DPWS Device Event Converter DPWS Service Subscription-Msg

46 © MATERNA GmbH Physical Device: OSGi Framework OSGi/DPWS-Integration – Events (Target) Default Serialization Event-Msg Event Admin Event Converter (Event Handler) DPWS Device Event Converter DPWS Service DPWS Stack

47 © MATERNA GmbH 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?

48 © MATERNA GmbH 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

49 © MATERNA GmbH 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)

50 © MATERNA GmbH OSGi/DPWS-Integration – Beispielszenario (max, min) Setze Schwellenwerte ALARM Home GatewayErgometer (Überwachtes Training) Klinik (Supervisor) Starte Videokonferenz

51 © MATERNA GmbH OSGi/DPWS-Integration – Beispielszenario (schematisch) OSGi Framework EKG Proxy Video KonferenzEKG Proxy Video Konferenz Proxy DPWS EKG Monitoring ALARM OSGi Framework KlinikHome GatewaySensor Videostream OSGi Framework

52 © MATERNA GmbH OSGi/DPWS-Integration – Offene Punkte Unterstützung von REQUIRE-BUNDLE Berücksichtigung der OSGi-Security-Mechanismen Evaluierung und Abgrenzung zu: Distributed OSGi R-OSGi Nyota Tests in praxisnahen Szenarien Definition komplexer Datentypen für das Java Collection Framework Mapping eines nativen DPWS-Service auf seinen Proxy (Interface-Name, Registrierung, Properties, …)


Herunterladen ppt "© MATERNA GmbH 2008 www.materna.de1 Workshop Oldenburg, 23.10.2008 Devices Profile for Web Services."

Ähnliche Präsentationen


Google-Anzeigen