workshop oldenburg 23 10 2008 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Devices Profile for Web Services PowerPoint Presentation
Download Presentation
Devices Profile for Web Services

Loading in 2 Seconds...

play fullscreen
1 / 52

Devices Profile for Web Services - PowerPoint PPT Presentation


  • 121 Views
  • Uploaded on

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?

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Devices Profile for Web Services' - aderyn


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
workshop oldenburg 23 10 2008
Workshop

Oldenburg, 23.10.2008

Devices Profile for Web Services

www.materna.de

tagesablauf
Tagesablauf
  • SOA • Web Services
  • DPWS
  • DPWS Explorer
  • DPWS Multi Edition Stack
  • DPWS gSOAP Stack
  • DPWS-AXIS2
  • OSGi/DPWS-Integration
  • WS4D-Pipes

www.materna.de

soa web services

SOA • Web Services

www.materna.de

slide4
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

soa infrastruktur
SOA – Infrastruktur

Rollen in der SOA

  • Anbieter
  • Nutzer
  • Vermittler

Dienst-

vermittler

veröffentlichen

finden

Dienst-

anbieter

Dienst-

nutzer

interagieren

Service

Client

www.materna.de

web services
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

web services infrastruktur
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

web services soap

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

web services wsdl
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

web services dpws
Web Services – DPWS

Problem

  • Keine dynamische Suche von Diensten
  • Keine Ereignisverarbeitung
  • Keine Ressourcen-Optimierung

www.materna.de

slide11

DPWS

www.materna.de

slide12
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

slide13
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

dpws infrastruktur

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

dpws messaging
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

dpws discovery
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

dpws description
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

dpws eventing
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

dpws security
DPWS – Security

Spezifikationen

  • WS-Security

Integrität

  • XML Signature

Vertraulichkeit

  • XML Encryption

Authentifizierung

  • Transport Layer Security (https)

www.materna.de

dpws explorer

DPWS Explorer

www.materna.de

dpws explorer1
DPWS Explorer

Funktionen

  • Discovery
  • Eventing
  • Methodenaufrufe
  • Filter
  • WSDL-Import

Unterstützung bei

  • Fehlersuche

www.materna.de

dpws java multi edition stack historie
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

dpws java multi edition stack spezifkationen
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

dpws java multi edition stack features teil 1
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

dpws java multi edition stack features teil 2

...

<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

dpws java multi edition stack architektur

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

dpws java multi edition stack klassen bersicht
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

dpws java multi edition stack klasse hostingservice
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

dpws java multi edition stack klasse hostedservice
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

dpws java multi edition stack klasse action
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

dpws java multi edition stack methode action invoke
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

dpws java multi edition stack device starten
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

dpws java multi edition stack klasse client
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

dpws java multi edition stack such callback
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

dpws java multi edition stack operationsaufruf
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

osgi dpws integration symbolik
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

osgi und verteilung ist zustand
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

osgi und verteilung unsere anforderungen
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

osgi dpws integration adaptergenerierung

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

osgi dpws integration proxy generierung

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

osgi dpws integration service nutzung proxy

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

osgi dpws integration service nutzung adapter

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

osgi dpws integration events source

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

osgi dpws integration events target

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

osgi dpws integration herausforderungen
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

osgi dpws integration zusatz services
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

osgi dpws integration filter
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

osgi dpws integration beispielszenario
OSGi/DPWS-Integration – Beispielszenario

(max, min)

Setze Schwellenwerte

ALARM

Starte

Videokonferenz

Klinik

(Supervisor)

Home Gateway

Ergometer

(Überwachtes Training)

www.materna.de

osgi dpws integration beispielszenario schematisch

Video

Konferenz

EKG

Monitoring

Video

Konferenz

Proxy

EKG

Proxy

EKG

Proxy

EKG

OSGi/DPWS-Integration – Beispielszenario (schematisch)

Videostream

Klinik

Home Gateway

Sensor

OSGi Framework

OSGi Framework

OSGi Framework

DPWS

ALARM

ALARM

www.materna.de

osgi dpws integration offene punkte
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, …)

www.materna.de