WSDAPI 接口概述
设备上的 Web 服务 API (WSDAPI) 用于开发查找和访问设备的客户端应用程序,以及开发在 Windows Vista 和 Windows Server 2008 上运行的设备主机和相关服务。 函数发现 API 和 WsdCodeGen 工具是可用于客户端、设备主机和服务开发的补充工具。 WSDAPI 接口可以直接用于公开高级功能。
主要 WSDAPI 接口
四个主要的 WSDAPI 接口是 IWSDiscoveryProvider、 IWSDiscoveryPublisher、 IWSDDeviceProxy 和 IWSDDeviceHost。 有关所有 WSDAPI 接口的列表,请参阅 设备上的 Web 服务接口。
IWSDiscoveryProvider
IWSDiscoveryProvider 用于在客户端上实现WS-Discovery功能。
IWSDiscoveryProvider 问题WS-Discovery 探测 和 解析 消息,并接收 Hello、 Bye、 ProbeMatches 和 ResolveMatches 消息。 创建用于描述和控制特定 DPWS 设备的 IWSDDeviceProxy 接口时,请使用通过 IWSDiscoveryProvider 接口检索的信息。
在创建设备代理之前仅解析特定的 DPWS 设备地址时,不需要 IWSDiscoveryProvider 接口。 如果需要,WSDCreateDeviceProxy 将自动解析设备地址。
函数发现 API 可用于通用设备和服务发现,因为该 API 可以发现 DPWS 设备和使用其他协议的设备。 编写泛型发现应用程序时,请考虑使用函数发现。
IWSDiscoveryPublisher
IWSDiscoveryPublisher 用于在目标服务(如设备)上实现WS-Discovery功能。
IWSDiscoveryPublisher 允许应用程序使用WS-Discovery Hello 和 Bye 消息发布其状态。 此接口允许应用程序接收探测和解析请求,并构造和发送 ProbeMatches 和 ResolveMatches 响应。
在仅发布 IWSDDeviceHost 对象的存在时,不需要 IWSDiscoveryPublisher 接口。 IWSDDeviceHost 管理自己的WS-Discovery状态。
IWSDDeviceProxy
IWSDDeviceProxy 用于实现客户端 WS-Discovery、WS-MetadataExchange 和控制功能。 此功能包括可选的安全通道、WS-Eventing 和附件功能。
IWSDDeviceProxy 接口具有以下三种用途。
- 如有必要,解析逻辑设备地址。
- 启动对设备的元数据请求,以枚举服务的类型和地址。
- 提供 IWSDServiceProxy 对象的源,该对象可用于向设备上的特定服务发出控制消息。
IWSDDeviceProxy 对象通常完全在 WsdCodeGen 生成的代码中创建和使用。
IWSDDeviceHost
IWSDDeviceHost 用于实现设备端 WS-Discovery、WS-MetadataExchange 和服务承载功能。 托管服务可能会响应控制消息,并且可能支持安全通道、WS-Eventing 和附件功能。
IWSDDeviceHost 接口具有以下用途。
- 承载服务对象。
- 使用 WS-Discovery 宣布网络上是否存在设备主机。
- 响应WS-MetadataExchange请求,并描述托管服务的类型和位置。
- 将网络请求调度到服务对象中。
WS-Discovery、WS-MetadataExchange 和 WS-Eventing 订阅管理功能完全在设备主机对象中处理。 在设备主机中托管服务之前,必须满足以下要求。
- 必须通过调用 WSDCreateDeviceHost 来创建主机。
- 必须与服务关联的元数据进行注册。
- 必须注册服务本身。
- 必须启动设备主机。
IWSDDeviceHost 对象通常在 WsdCodeGen 生成的代码中创建和使用。