Web Services Discovery for Devices

24
Microsoft Confidential Scaling WS to limited resource Scaling WS to limited resource devices devices Web Services Web Services Discovery Discovery Jorgen Thelin Jorgen Thelin Program Manager Program Manager Connected Systems Division Connected Systems Division Microsoft Corporation Microsoft Corporation [email protected] [email protected]

Transcript of Web Services Discovery for Devices

Microsoft Confidential

Scaling WS to limited resource devicesScaling WS to limited resource devices

Web Services Web Services DiscoveryDiscovery

Jorgen ThelinJorgen ThelinProgram ManagerProgram ManagerConnected Systems DivisionConnected Systems DivisionMicrosoft CorporationMicrosoft [email protected]@microsoft.com

Microsoft Confidential

WS-Discovery - The Big PictureWS-Discovery - The Big Picture

ServiceService ClientClient

DPDP

ProbeMatchProbeMatch

Hello/ByeHello/Bye

Hello/ByeHello/Bye

Probe / ProbeMatchProbe / ProbeMatch

ProbeProbe

ServicesServices to be to be discovereddiscovered

ClientsClients discover servicesdiscover servicesDiscovery Proxy Discovery Proxy caches found caches found

servicesservices

Microsoft Confidential

WS-Discovery message WS-Discovery message exchangesexchanges

1.1. Target service sends a multicast Target service sends a multicast Hello when it joins a network. Hello when it joins a network. Client listens to the multicast Client listens to the multicast Hello.Hello.

2.2. Likewise, a Target Service may Likewise, a Target Service may receive multicast a Probe from a receive multicast a Probe from a Client at any time.Client at any time.

3.3. The Target Service sends a unicast The Target Service sends a unicast Probe Match (PM) to the Client if Probe Match (PM) to the Client if the Target Service matches a the Target Service matches a Probe.Probe.

4.4. Similarly, a Target Service may Similarly, a Target Service may receive multicast Resolve from a receive multicast Resolve from a Client at any time.Client at any time.

5.5. The Target Service sends a unicast The Target Service sends a unicast Resolve Match (RM) to the Client if Resolve Match (RM) to the Client if it is the target of a Resolve.it is the target of a Resolve.

6.6. When a Target Service leaves a When a Target Service leaves a network, it makes an effort to (6) network, it makes an effort to (6) send a multicast Bye. Clients send a multicast Bye. Clients listen to the multicast Bye.listen to the multicast Bye.

Microsoft Confidential

Conceptual Context of Message Conceptual Context of Message ExchangesExchanges

Microsoft Confidential

WS-Discovery MetadataWS-Discovery Metadata

/s:Envelope/s:Body/*/d:Types/s:Envelope/s:Body/*/d:TypesSet of Types implemented by the Target Service (or Discovery Proxy)Set of Types implemented by the Target Service (or Discovery Proxy)

/s:Envelope/s:Body/*/d:Scopes/s:Envelope/s:Body/*/d:ScopesSet of Scopes the Target Service (or Discovery Proxy) is inSet of Scopes the Target Service (or Discovery Proxy) is inMAY be of more than one URI schemeMAY be of more than one URI scheme

/s:Envelope/s:Body/*/d:XAddrs/s:Envelope/s:Body/*/d:XAddrsSet of Transport addresses that MAY be used to communicate with the Set of Transport addresses that MAY be used to communicate with the Target Service (or Discovery Proxy)Target Service (or Discovery Proxy)

/s:Envelope/s:Body/*/d:MetadataVersion/s:Envelope/s:Body/*/d:MetadataVersionIncremented by >= 1 whenever there is a change in the metadata of the Incremented by >= 1 whenever there is a change in the metadata of the Target ServiceTarget ServiceMetadata includes, but is not limited to, Metadata includes, but is not limited to, ../d:Types../d:Types and and ../d:Scopes../d:Scopes. . MAY be used by the Client and/or Discovery Proxy for cache control of MAY be used by the Client and/or Discovery Proxy for cache control of Target Service metadata.Target Service metadata.

Microsoft Confidential

Metadata Matching RulesMetadata Matching Rules

Type matchingType matchingIf Namespace + Local name are the sameIf Namespace + Local name are the same

Scope matching based on specified rules:Scope matching based on specified rules:rfc2396 – General URI comparisonrfc2396 – General URI comparisonuuid – UUID URI comparisonuuid – UUID URI comparisonldap – LDAP URI comparisonldap – LDAP URI comparisonstrcmp0 – Case-sensitive string comparisonstrcmp0 – Case-sensitive string comparison

Additional matching rules may be specifiedAdditional matching rules may be specifiedBut must be equally supported by Client and But must be equally supported by Client and ServiceService

Microsoft Confidential

Device Discovery Device Discovery Bootstrap – Based on Bootstrap – Based on DPWSDPWS

Transfer - Get message to device – over HTTP

Transfer – Get Response containing DP meta data

Devices Profile Discovery Bootstrap – Discovery Hello

DeviceClient

WS-D - Resolve (to EPR)

WS-D – Resolve Match containing EPR

WS-Discovery Hello (containing EPR)

UDP Multicast

UDP Unicast

HTTP

Microsoft Confidential

Typical Device/Service Typical Device/Service Message Exchanges – Based Message Exchanges – Based on DPWSon DPWS

Microsoft Confidential

Profile Recipe: Staple, Redline, GlueProfile Recipe: Staple, Redline, Glue- Devices Profile example- Devices Profile example

““Staple”Staple”Pull relevant specs Pull relevant specs into scopeinto scope

““Redline”Redline”Add constraints on Add constraints on use of those specsuse of those specs

““Glue”Glue”Define missing bits Define missing bits between specsbetween specsSome will migrate Some will migrate back into specsback into specs

SOAP 1.2WS-

AddressingWS-Metadata Exchange

WSDL 1.1WS-

DiscoveryWS-Eventing

ThisModelMetadataThisDevice

Metadata

ActionFilter

ConformanceClaim

PolicyAssertionsPolicy

Assertions

Microsoft Confidential

ProtocolDMRCapabilities

DMRCommands

DMREvents

ProtocolIGDCapabilities

IGDCommands

IGDEvents

Devices ProfileDevices Profile

Assurances

Messaging

SOAP

WS-Security

MTOMWS-Addressing

Metadata

WSDL

WS-MetadataExchange

XML Schema

TLS

Foundation

SOAP / HTTPMIME

XML Infoset

XML 1.0XML

Namespaces

BP 1.1 Sec. 4

WS-DiscoveryDeviceExtensions

SOAP / UDP

ProtocolPrintCapabilities

PrintCommands

PrintEvents

WS-Eventing

WS-Policy

Vista WS device supportVista WS device support

• Printers• “Plug and Play” experience for network printers• Security

• Control over who can connect to the printer• Privacy of data sent to the printer

• Rich printer status

• Scanners• “Plug and Play” experience for network scanners

• enable one-button scanning

• Secure scan delivery

Vista WS device supportVista WS device support

• PC Discovery

• Messenger - People Near Me

• BITS - Background Intelligent Transfer Service

• Projectors• Integration with current IT systems

• Remote diagnostics and configuration• Asset and usage tracking

• Speeds flow of meeting• Automatic display and audio settings• Easy to transition between presenters

Microsoft Confidential

Web Services On Devices Web Services On Devices ResourcesResourcesWS and WSD SitesWS and WSD Sites

Web ServicesWeb Serviceshttp://msdn.microsoft.com/webservices/default.aspxhttp://msdn.microsoft.com/webservices/default.aspx

http://msdn.microsoft.com/windowsvista/http://msdn.microsoft.com/windowsvista/connected/connected/

Web Services Feedback WorkshopsWeb Services Feedback Workshopshttp://msdn.microsoft.com/webservices/community/http://msdn.microsoft.com/webservices/community/workshops/workshops/

Web Services BasicsWeb Services Basicshttp://msdn.microsoft.com/webservices/understanding/http://msdn.microsoft.com/webservices/understanding/webservicebasics/webservicebasics/

Devices Profile for Web ServicesDevices Profile for Web Serviceshttp://msdn.microsoft.com/ws/2006/02/devprof http://msdn.microsoft.com/ws/2006/02/devprof

WS-DiscoveryWS-Discoveryhttp://msdn.microsoft.com/ws/2005/04/ws-discovery/http://msdn.microsoft.com/ws/2005/04/ws-discovery/

Microsoft Confidential

Questions?Questions?

BackupBackup

Microsoft Confidential

WS-Discovery Hello Message WS-Discovery Hello Message OutlineOutline<s:Envelope ... ><s:Envelope ... > <s:Header ... ><s:Header ... > <a:Action ... ><a:Action ... > http://schemas.xmlsoap.org/ws/2005/04/discovery/Hellohttp://schemas.xmlsoap.org/ws/2005/04/discovery/Hello </a:Action></a:Action> <a:MessageID ... ><a:MessageID ... >xs:anyURIxs:anyURI</a:MessageID></a:MessageID> [<a:RelatesTo RelationshipType="d:Suppression" >[<a:RelatesTo RelationshipType="d:Suppression" > xs:anyURIxs:anyURI </a:RelatesTo>]?</a:RelatesTo>]? <a:To ... >urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To><a:To ... >urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To> <d:AppSequence ... /><d:AppSequence ... /> ...... </s:Header></s:Header> <s:Body ... ><s:Body ... > <d:Hello ... ><d:Hello ... > <a:EndpointReference> ... </a:EndpointReference><a:EndpointReference> ... </a:EndpointReference> [<d:Types>[<d:Types>list of xs:QNamelist of xs:QName</d:Types>]?</d:Types>]? [<d:Scopes>[<d:Scopes>list of xs:anyURIlist of xs:anyURI</d:Scopes>]?</d:Scopes>]? [<d:XAddrs>[<d:XAddrs>list of xs:anyURIlist of xs:anyURI</d:XAddrs>]?</d:XAddrs>]? <d:MetadataVersion><d:MetadataVersion>xs:unsignedIntxs:unsignedInt</d:MetadataVersion></d:MetadataVersion> ...... </d:Hello></d:Hello> </s:Body></s:Body>

</s:Envelope></s:Envelope>

Microsoft Confidential

WS-Discovery Bye Message OutlineWS-Discovery Bye Message Outline<s:Envelope ... ><s:Envelope ... > <s:Header ... ><s:Header ... > <a:Action ... ><a:Action ... > http://schemas.xmlsoap.org/ws/2005/04/discovery/Byehttp://schemas.xmlsoap.org/ws/2005/04/discovery/Bye </a:Action></a:Action> <a:MessageID ... ><a:MessageID ... >xs:anyURIxs:anyURI</a:MessageID></a:MessageID> <a:To ...>urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To><a:To ...>urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To> <d:AppSequence ... /><d:AppSequence ... /> ...... </s:Header></s:Header> <s:Body ... ><s:Body ... > <d:Bye ... ><d:Bye ... > <a:EndpointReference> ... </a:EndpointReference><a:EndpointReference> ... </a:EndpointReference> ...... </d:Bye></d:Bye> </s:Body></s:Body></s:Envelope></s:Envelope>

Microsoft Confidential

WS-Discovery Probe Message WS-Discovery Probe Message OutlineOutline<s:Envelope ... ><s:Envelope ... > <s:Header ... ><s:Header ... > <a:Action ... ><a:Action ... > http://schemas.xmlsoap.org/ws/2005/04/discovery/Probehttp://schemas.xmlsoap.org/ws/2005/04/discovery/Probe </a:Action></a:Action> <a:MessageID ... ><a:MessageID ... >xs:anyURIxs:anyURI</a:MessageID></a:MessageID> [<a:ReplyTo ... >[<a:ReplyTo ... >endpoint-reference<endpoint-reference</a:ReplyTo>]?/a:ReplyTo>]? <a:To ... ><a:To ... >xs:anyURIxs:anyURI</a:To></a:To> ...... </s:Header></s:Header> <s:Body ... ><s:Body ... > <d:Probe ... ><d:Probe ... > [<d:Types>[<d:Types>list of xs:QNamelist of xs:QName</d:Types>]?</d:Types>]? [<d:Scopes [MatchBy="[<d:Scopes [MatchBy="xs:anyURIxs:anyURI"]? ... >"]? ... > list of xs:anyURIlist of xs:anyURI </d:Scopes>]?</d:Scopes>]? ...... </d:Probe></d:Probe> </s:Body></s:Body></s:Envelope></s:Envelope>

Microsoft Confidential

WS-Discovery Probe Match Message WS-Discovery Probe Match Message OutlineOutline<s:Envelope ... ><s:Envelope ... > <s:Header ... ><s:Header ... > <a:Action ... ><a:Action ... > http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatcheshttp://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches </a:Action></a:Action> <a:MessageID ... ><a:MessageID ... >xs:anyURIxs:anyURI</a:MessageID></a:MessageID> <a:RelatesTo ... ><a:RelatesTo ... >xs:anyURIxs:anyURI</a:RelatesTo></a:RelatesTo> <a:To ... ><a:To ... >xs:anyURIxs:anyURI</a:To></a:To> <d:AppSequence ... /><d:AppSequence ... /> ...... </s:Header></s:Header> <s:Body ... ><s:Body ... > <d:ProbeMatches ... ><d:ProbeMatches ... > [<d:ProbeMatch ... >[<d:ProbeMatch ... > <a:EndpointReference> ... </a:EndpointReference><a:EndpointReference> ... </a:EndpointReference> [<d:Types>[<d:Types>list of xs:QNamelist of xs:QName</d:Types>]?</d:Types>]? [<d:Scopes>[<d:Scopes>list of xs:anyURIlist of xs:anyURI</d:Scopes>]?</d:Scopes>]? [<d:XAddrs>[<d:XAddrs>list of xs:anyURIlist of xs:anyURI</d:XAddrs>]?</d:XAddrs>]? <d:MetadataVersion><d:MetadataVersion>xs:unsignedIntxs:unsignedInt</d:MetadataVersion></d:MetadataVersion> ...... </d:ProbeMatch>]*</d:ProbeMatch>]* ...... </d:ProbeMatches></d:ProbeMatches> </s:Body></s:Body>

</s:Envelope></s:Envelope>

Microsoft Confidential

WS-Discovery Resolve Message OutlineWS-Discovery Resolve Message Outline<s:Envelope ... ><s:Envelope ... > <s:Header ... ><s:Header ... > <a:Action ... ><a:Action ... > http://schemas.xmlsoap.org/ws/2005/04/discovery/Resolvehttp://schemas.xmlsoap.org/ws/2005/04/discovery/Resolve </a:Action></a:Action> <a:MessageID ... ><a:MessageID ... >xs:anyURIxs:anyURI</a:MessageID></a:MessageID> [<a:ReplyTo ... >[<a:ReplyTo ... >endpoint-referenceendpoint-reference</a:ReplyTo>]?</a:ReplyTo>]? <a:To ... ><a:To ... >xs:anyURIxs:anyURI</a:To></a:To> ...... </s:Header></s:Header> <s:Body><s:Body> <d:Resolve ... ><d:Resolve ... > <a:EndpointReference> ... </a:EndpointReference><a:EndpointReference> ... </a:EndpointReference> ...... </d:Resolve></d:Resolve> </s:Body></s:Body></s:Envelope></s:Envelope>

Microsoft Confidential

WS-Discovery Resolve Match Message WS-Discovery Resolve Match Message OutlineOutline<s:Envelope ... ><s:Envelope ... > <s:Header ... ><s:Header ... > <a:Action ... ><a:Action ... > http://schemas.xmlsoap.org/ws/2005/04/discovery/ResolveMatcheshttp://schemas.xmlsoap.org/ws/2005/04/discovery/ResolveMatches </a:Action></a:Action> <a:MessageID ... ><a:MessageID ... >xs:anyURIxs:anyURI</a:MessageID></a:MessageID> <a:RelatesTo ... ><a:RelatesTo ... >xs:anyURIxs:anyURI</a:RelatesTo></a:RelatesTo> <a:To ... ><a:To ... >xs:anyURIxs:anyURI</a:To></a:To> <d:AppSequence ... /><d:AppSequence ... /> ...... </s:Header></s:Header> <s:Body ... ><s:Body ... > <d:ResolveMatches ... ><d:ResolveMatches ... > [<d:ResolveMatch ... >[<d:ResolveMatch ... > <a:EndpointReference> ... </a:EndpointReference><a:EndpointReference> ... </a:EndpointReference> [<d:Types>[<d:Types>list of xs:QNamelist of xs:QName</d:Types>]?</d:Types>]? [<d:Scopes>[<d:Scopes>list of xs:anyURIlist of xs:anyURI</d:Scopes>]?</d:Scopes>]? <d:XAddrs<d:XAddrslist of xs:anyURIlist of xs:anyURI</d:XAddrs></d:XAddrs> <d:MetadataVersion><d:MetadataVersion>xs:unsignedIntxs:unsignedInt</d:MetadataVersion></d:MetadataVersion> ...... </d:ResolveMatch>]?</d:ResolveMatch>]? ...... </d:ResolveMatches></d:ResolveMatches> </s:Body></s:Body></s:Envelope></s:Envelope>

Microsoft Confidential

WS-* Specifications ProcessStep 2

Broader Community Participation

Step 1Initial

Development

Process reconciles conflicting goals• Quality of engineering• Time to market• Breadth of industry support

Step 3Standardization

Step 4Profiling

Increasing Industry ParticipationIncreasing Industry Participation

Specification Specification PublishedPublished

Feedback and Feedback and Interop Interop

WorkshopsWorkshopsRevise specRevise spec Standards OrgStandards Org WS-IWS-I

Idea

Microsoft Confidential

WS-* Spec Status

Assurances

Messaging

SOAP

WS-Security

MTOMWS-Addressing

Metadata

WS-Policy

WSDL

WS-Discovery

UDDI

WS-MetadataExchange

WS-Transfer WS-Enumeration WS-Eventing

XML Schema

WS-ReliableMessaging

WS-Coordination

WS-AtomicTransaction

WS-BusinessActivity

WS-Trust

WS-SecureConversation

Infrastructureand ProfilesWS-ManagementWS-Federation

DevicesProfile

Foundation

SOAP / HTTP

SOAP / UDP

MIME

XML Infoset

XML 1.0XML

Namespaces

Step 4 – Approved Standard

Step 3 – Standardization

Step 2 – Workshops & Community Dev

MicrosoMicrosoftft

IntelIntel

SunSun

DellDell

AMDAMD AA

CACA AA

SonicSonic AA

gSOAPgSOAP

SystineSystinett

AA

WEBMWEBM

NetIQNetIQ

WS-P

WS-* - Industry AdoptionWS-* - Industry Adoption

Messaging

Security

Assurances

Devices

Mgmt

Metadata

DPWS

WS-

Secure

Conv

WS-S

ecurit

y

WS-T

rust W

S-RM

WS-A

T

MEX

WS-D

Released productReleased product

Public interopPublic interop

AA Co-Author OnlyCo-Author Only

SOAP / W

SDL

MicrosoftMicrosoft

IBMIBM

BEABEA AA

Cape ClearCape Clear

SystinetSystinet

Blue TitanBlue Titan

Rogue Rogue WaveWave

SonicSonic

IONAIONA

JBossJBoss

ChoreologyChoreology

ApacheApache

TibcoTibco

MicrosoftMicrosoft

IBMIBM

BEABEA AA

RSARSA AA

SystinetSystinet

ApacheApache

Layer7Layer7 AA

DataPowerDataPower

CACA AA AA

SUNSUN

SAPSAP

TibcoTibco

IONAIONA

WebMethoWebMethodsds

NokiaNokia

Cape ClearCape Clear

SonicSonic

gSOAPgSOAP

Ping IDPing ID AA

NetegrityNetegrity AA AA

VerisignVerisign AA AA AA

OpenNetwOpenNetworkork

AA AA AA

Oracle/Oracle/OblixOblix

MicrosoftMicrosoft

IBMIBM

BEABEA

SUNSUN

GoogleGoogle

AmazonAmazon

eBayeBay

ApacheApache

WhitemesWhitemesaa

gSOAPgSOAP

RicohRicoh

EpsonEpson

HPHP

XeroxXerox

Fuji-XeroxFuji-Xerox

IntelIntel

CanonCanon

MicrosoftMicrosoft

IntelIntel

CanonCanon

BEABEA AA

WebMethoWebMethodsds

AA

RicohRicoh

EpsonEpson

HPHP

XeroxXerox

Fuji-XeroxFuji-Xerox

BrotherBrother

ToshibaToshiba

ExceptionaExceptional l InnovationInnovation

PeerlessPeerless

SchneiderSchneider

SystinetSystinet

gSOAPgSOAP

LexmarkLexmark AA

MicrosoftMicrosoft

IBMIBM AA

BEABEA AA

SAPSAP AA

SunSun AA

VerisignVerisign AA

SonicSonic

Layer 7Layer 7

ApacheApache

CACA AA

WebMethoWebMethodsds

AA

SystinetSystinet

gSOAPgSOAP

MTOM

© 2003-2006 Microsoft Corporation. All rights reserved. The information contained in this document represents the current view at the time of publication and is subject to change.

WS-M

WS-X

Fer /

Enum

WS-F

ed