本主题简要概述了一些新发现功能的实现。 它还概述了如何选择要使用的发现版本。
发现版本控制
发现功能包括对三个版本的WS_Discovery协议的支持。 通过发现 API,可以选择要使用的协议版本。 本文档简要介绍了与版本控制相关的设置。
以下 Discovery 类现在有一个 DiscoveryVersion 属性,并在其构造函数中采用 DiscoveryVersion 参数:
DiscoveryVersion.WSDiscoveryApril2005
以构造函数参数的形式提供 WSDiscoveryApril2005 使实现使用 WS-Discovery 协议的 2005 年 4 月版本。 此版本对应于 WS-Discovery 协议规范的已发布版本。 此版本应用于与使用 WS-Discovery 的 2005 年 4 月版本的旧版程序进行互操作。
DiscoveryVersion.WSDiscovery11
API 使用的默认发现版本为 WSDiscovery11。 这是 WS-Discovery 协议的当前标准化版本。
DiscoveryVersion.WSDiscoveryCD1
以构造函数参数的形式提供 WSDiscoveryCD1 使实现使用委员会草案 1 版本的 WS-Discovery 协议。 此版本的协议应用于与运行 WS-Discovery 协议 CD1 版本的实现进行互作。
支持在单个服务主机上为不同发现版本提供多个 UDP 发现终结点
你可能想要为单个服务主机上的不同发现版本公开多个 UDP 发现终结点。 为此,必须为每个 UDP 发现终结点指定唯一的地址。 以下示例演示如何执行此作。
UdpDiscoveryEndpoint newVersionUdpEndpoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscovery11);
UdpDiscoveryEndpoint oldVersionUdpEndpoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
newVersionUdpEndpoint.Address = new EndpointAddress(newVersionUdpEndpoint.Address.Uri.ToString() + "/version11");
oldVersionUdpEndpoint.Address = new EndpointAddress(oldVersionUdpEndpoint.Address.Uri.ToString() + "/versionApril2005");
serviceHost.AddServiceEndpoint(newVersionUdpEndpoint);
serviceHost.AddServiceEndpoint(oldVersionUdpEndpoint);