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 2008 www.materna.de1 Workshop Oldenburg, 23.10.2008 Devices Profile for Web Services

2 © MATERNA GmbH 2008 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

3 © MATERNA GmbH 2008 www.materna.de3 SOA Web Services

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

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

6 © MATERNA GmbH 2008 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

7 © MATERNA GmbH 2008 www.materna.de 7 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 2008 www.materna.de 8 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 2008 www.materna.de 9 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 2008 www.materna.de 10 Web Services – DPWS Problem Keine dynamische Suche von Diensten Keine Ereignisverarbeitung Keine Ressourcen-Optimierung

11 © MATERNA GmbH 2008 www.materna.de11 DPWS

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

13 © MATERNA GmbH 2008 www.materna.de 13 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 2008 www.materna.de 14 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 2008 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.

16 © MATERNA GmbH 2008 www.materna.de 16 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 2008 www.materna.de 17 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 2008.09CM_v01 12345-123-1234 http://139.2.1.3/makeCoffee img:MakeCappucinoPortType img:MakeEspressoPortType http://coffee.example.org/ CoffeeService

18 © MATERNA GmbH 2008 www.materna.de 18 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 2008 www.materna.de 19 DPWS – Security Spezifikationen WS-Security Integrität XML Signature Vertraulichkeit XML Encryption Authentifizierung Transport Layer Security (https)

20 © MATERNA GmbH 2008 www.materna.de20 DPWS Explorer

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

22 © MATERNA GmbH 2008 www.materna.de22 DPWS Java Multi Edition Stack

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

24 © MATERNA GmbH 2008 www.materna.de 24 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 2008 www.materna.de 25 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 2008 www.materna.de 26 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 2008 www.materna.de 27 DPWS Java Multi Edition Stack – Architektur

28 © MATERNA GmbH 2008 www.materna.de 28 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 2008 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 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 2008 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 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 2008 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-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 2008 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 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 2008 www.materna.de 33 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 2008 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 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); } @Override public void onServiceFound( ISearchResult result ){... }

35 © MATERNA GmbH 2008 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 public void onServiceFound( ISearchResult result ){ IRemoteService service = result.getRemoteService(); // RemoteAction aufrufen... }

36 © MATERNA GmbH 2008 www.materna.de 36 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 möglich @Override 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 2008 www.materna.de37 OSGi/DPWS-Integration Web-Service-Integration für eingebettete Systeme mittels DPWS-fähiger OSGi-Plattformen

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

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

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

41 © MATERNA GmbH 2008 www.materna.de 41 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 2008 www.materna.de 42 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 2008 www.materna.de 43 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 2008 www.materna.de 44 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 2008 www.materna.de 45 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 2008 www.materna.de 46 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 2008 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?

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

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

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

51 © MATERNA GmbH 2008 www.materna.de 51 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 2008 www.materna.de 52 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