© materna gmbh 2008 workshop oldenburg, 23.10.2008 devices profile for web services
Post on 05-Apr-2015
104 Views
Preview:
TRANSCRIPT
www.materna.de 1© MATERNA GmbH 2008
Workshop
Oldenburg, 23.10.2008
Devices Profile for Web Services
www.materna.de 2© MATERNA GmbH 2008
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© MATERNA GmbH 2008
SOA • Web Services
www.materna.de 4© MATERNA GmbH 2008
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© MATERNA GmbH 2008
SOA – Infrastruktur
Rollen in der SOA Anbieter Nutzer Vermittler
Dienst-anbieter
Dienst-nutzer
Dienst-vermittler
Service Client
veröffentlichen finden
interagieren
www.materna.de 6© MATERNA GmbH 2008
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© MATERNA GmbH 2008
Web Services – Infrastruktur
Rollen in der Web Services Architektur Anbieter Nutzer Verzeichnis (Vermittler)
Dienst-anbieter
Dienst-nutzer
Dienst-verzeichnis
Service Client
veröffentlichen Verweis auf Dienst
Abfrage der Beschreibung
UDDI
WSDL WSDL
SOAP
suchen
SOAPNutzung
www.materna.de 8© MATERNA GmbH 2008
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
www.materna.de 9© MATERNA GmbH 2008
Web Services – WSDL
Aufbau eines WSDL-Dokuments Types Interface (portType) Bindings Services
WSDL ist eine XML-basierte Sprache, um Web-Services-Schnittstellenzu beschreiben
description
types
portType
binding
service
operation
input
output
operation
endpoint
www.materna.de 10© MATERNA GmbH 2008
Web Services – DPWS
Problem Keine dynamische Suche von Diensten Keine Ereignisverarbeitung Keine Ressourcen-Optimierung
www.materna.de 11© MATERNA GmbH 2008
DPWS
www.materna.de 12© MATERNA GmbH 2008
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© MATERNA GmbH 2008
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:
www.materna.de 14© MATERNA GmbH 2008
DPWS – Infrastruktur
Terminologie Device (Dienstanbieter) Client (Dienstnutzer) Discovery ersetzt Vermittler
Device(Hosting Service)
HostedServices
Device(Hosting Service)
HostedServices
Client
Client
Messages
www.materna.de 15© MATERNA GmbH 2008
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© MATERNA GmbH 2008
DPWS – Discovery
Spezifikation WS-Discovery
Nachrichten Hello Bye Probe und Probe Match Resolve und Resolve Match
Device Client
Hello / multicast
Resolve Match / unicast
Bye / multicast
Probe Match / unicastProbe / multicast
Resolve / multicast
www.materna.de 17© MATERNA GmbH 2008
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, …
<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>
<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>
www.materna.de 18© MATERNA GmbH 2008
DPWS – Eventing
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()
sendEvent(…)
Observable Observer
setChanged()
notifyObservers()
unsubscribe()
Observer Design Pattern
www.materna.de 19© MATERNA GmbH 2008
DPWS – Security
Spezifikationen WS-Security
Integrität XML Signature
Vertraulichkeit XML Encryption
Authentifizierung Transport Layer Security (https)
www.materna.de 20© MATERNA GmbH 2008
DPWS Explorer
www.materna.de 21© MATERNA GmbH 2008
DPWS Explorer
Funktionen Discovery Eventing Methodenaufrufe Filter WSDL-Import
Unterstützung bei Fehlersuche
www.materna.de 22© MATERNA GmbH 2008
DPWS Java Multi Edition Stack
www.materna.de 23© MATERNA GmbH 2008
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© MATERNA GmbH 2008
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© MATERNA GmbH 2008
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© MATERNA GmbH 2008
Device(Hosting Service)
HostedServices
Client
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
Remote Device...<wsdl:portType name="HelloWorldService"> <wsdl:operation name="SayHelloWorld"> <wsdl:input ... /> </wsdl:operation></wsdl:portType>...Remote
Services
www.materna.de 27© MATERNA GmbH 2008
DPWS Java Multi Edition Stack – Architektur
Application
Core
Platform Toolkit (SE, CDC, CLDC)
Java Virtual Machine
Remote
Client
SOAP
UDPHTTP
TCP
Plug-ins Attachment
PresentationURL
DeviceAdmin
Core
Plug-ins
Discovery Eventing
Java Virtual Machine
SOAP
UDPHTTP
TCP
Service
Discovery EventingRemote
Application
Security
Client Service
Platform Toolkit (SE, CDC, CLDC)
www.materna.de 28© MATERNA GmbH 2008
DPWS Java Multi Edition Stack – Klassenübersicht
HostingServiceDevice
HostedServiceService
QualifiedNamePort-Typen
ParameterOperanden von Actions
ActionOperation
Client
Device(Hosting Service)
HostedServices
Client
Remote Device
...<wsdl:portType name="HelloWorldService"> <wsdl:operation name="SayHelloWorld"> <wsdl:input ... /> </wsdl:operation></wsdl:portType>...Remote
Services
Action A
Action B
www.materna.de 29© MATERNA GmbH 2008
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);
// MetadatensetFriendlyName("de-DE", "Marcus' Device");setModelName("de-DE", "Model 42");
}...
}
www.materna.de 30© MATERNA GmbH 2008
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);
}
...
}
www.materna.de 31© MATERNA GmbH 2008
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
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 );
}...
}
www.materna.de 32© MATERNA GmbH 2008
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);
}
www.materna.de 33© MATERNA GmbH 2008
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();
}
www.materna.de 34© MATERNA GmbH 2008
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 ){
...
}
www.materna.de 35© MATERNA GmbH 2008
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
...
}
www.materna.de 36© MATERNA GmbH 2008
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());
}
www.materna.de 37© MATERNA GmbH 2008
OSGi/DPWS-Integration
Web-Service-Integration für eingebettete Systeme mittels
DPWS-fähiger OSGi-Plattformen
www.materna.de 38© MATERNA GmbH 2008
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© MATERNA GmbH 2008
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 Bundle
Physical Device: OSGi Framework
Bundle Bundle
X
www.materna.de 40© MATERNA GmbH 2008
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 Bundle
Physical Device: OSGi Framework
Bundle Bundle
www.materna.de 41© MATERNA GmbH 2008
OSGi/DPWS-Integration – Adaptergenerierung
Physical Device: OSGi Framework
Adapter Generator
DPWSDevice A
HostedService A
DefaultSerialization
CustomSerializationBundle A
BundleRepository
Hello-MsgDPWS Stack
www.materna.de 42© MATERNA GmbH 2008
OSGi/DPWS-Integration – Proxy-Generierung
Physical Device: OSGi Framework
DefaultSerialization
CustomSerialization
DPWS Stack
Proxy A
RemoteService A
Proxy Generator
DPWS Client
Package(Host-Bundle)
InterfaceX
InterfaceY
BundleRepository
Hello-Msg
Bundle B(Client)
www.materna.de 43© MATERNA GmbH 2008
OSGi/DPWS-Integration – Service-Nutzung (Proxy)
Physical Device: OSGi Framework
DefaultSerialization
CustomSerializationProxy A
DPWS Stack
Package(Host-Bundle)
InterfaceX
InterfaceY
Bundle B(Client)
RemoteService A
Invocation-Msg
www.materna.de 44© MATERNA GmbH 2008
OSGi/DPWS-Integration – Service-Nutzung (Adapter)
Physical Device: OSGi Framework
DefaultSerialization
CustomSerializationBundle A
DPWS Stack
DPWSDevice A
DPWSService A
Adapter Generator
Invocation-Msg
www.materna.de 45© MATERNA GmbH 2008
OSGi/DPWS-Integration – Events (Source)
Physical Device: OSGi Framework
DefaultSerializationEvent Admin
Event-MsgDPWS Stack
Event Converter(Event Handler)
DPWS DeviceEvent Converter
DPWSService
Subscription-Msg
www.materna.de 46© MATERNA GmbH 2008
Physical Device: OSGi Framework
OSGi/DPWS-Integration – Events (Target)
DefaultSerialization
Event-Msg
Event AdminEvent Converter
(Event Handler)
DPWS DeviceEvent Converter
DPWSService
DPWS Stack
www.materna.de 47© MATERNA GmbH 2008
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© MATERNA GmbH 2008
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© MATERNA GmbH 2008
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© MATERNA GmbH 2008
OSGi/DPWS-Integration – Beispielszenario
(max, min)
Setze Schwellenwerte
ALARM
Home Gateway Ergometer(Überwachtes Training)
Klinik(Supervisor)
StarteVideokonferenz
www.materna.de 51© MATERNA GmbH 2008
OSGi/DPWS-Integration – Beispielszenario (schematisch)
OSGi Framework
EKGEKGProxy
VideoKonferenzEKG
Proxy
VideoKonferenz
Proxy
DPWS
EKGMonitoring
ALARMALARM
OSGi Framework
Klinik Home Gateway Sensor
Videostream
OSGi Framework
www.materna.de 52© MATERNA GmbH 2008
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, …)
top related