Subject: RE: Issue 137 - DPWS - Discovery/Service types WSDL attribute
What happens if you have a device that has multiple services in it? Which discovery type would actually be used? Is the assumption that they would all have the same discovery type? This seems to completely defeat the reuse of standard services in multiple device classes.
Toby Nixon | Senior Standards Program Manager | Windows Device and Storage Technologies | Microsoft Corporation
I keep forgetting to add a concrete example of what this would look like. Sorry for the delay.
The proposed addition is highlighted.
<!-- WSDL Types and Messages go here -->
<wsdl:portType name="WSDToasterService" dpws:DiscoveryType="tns:WSDToasterDevice">
<!-- WSDToasterService operations go here -->
<!-- optionally, also include an empty portType for the device-layer type. -->
<wsdl:portType name="WSDToasterDevice" />
This issue is assigned the number 137. For further discussions on this issue, please refer to this issue number or use this thread.
This issue covers the case where we need an automated way to identify the empty discovery-layer portType from the Hosted Service type. Unless otherwise overridden in another spec, I expect all applications require a discovery-layer type to advertise at the Device endpoint. We can generate much better code for these applications by inspecting these in the WSDL that defines the service-layer portType.
Richer type description languages may also be defined outside of DPWS 1.1, but this lightweight solution meets a basic requirement for all WSDLs built for DPWS.
This mechanism cannot be mandatory, since some non-DPWS WSDLs are sometimes hosted in DPWS devices, and it is unreasonable to change the WSDL solely to fit into DPWS.
I propose adding an Appendix that describes how applications may add an attribute to identify this discovery-layer type.
Appendix ??? – Declaring Discovery Types in WSDL
Solutions built on DPWS often define portTypes implemented by Hosted Services, and a discovery-layer portType implemented by the Host Service so the presence of these functional services can be determined at the discovery layer. The binding between a service-layer type and its discovery-layer type can be defined purely in descriptive text, but this appendix provides an optional mechanism to declare a discovery-layer type inside WSDL that can be consumed and understood by tools.
This appendix defines @dpws:DiscoveryType attribute to annotate the portType for the service-layer type. The normative outline for @dpws:DiscoveryType is:
[<wsdl:portType [dpws:DiscoveryType=”xs:QName”]? >
The following describes additional, normative constraints to the outline listed above:
The name of the portType to be advertised by the Host Service to indicate that this device supports the annotated Hosted Service portType.
If omitted, no implied value
[example usage follows]