终结点地址

终结点地址表示网络上服务的地址。 打开 通道时,通过调用 WsOpenChannel 函数,需要提供要与之通信的服务的终结点地址,以及指定要打开的通道。

终结点地址包括:

  • URL
  • 一组标头(可选)
  • 一组扩展(可选)
  • 表示服务安全标识的可选 标识

对消息进行寻址时,URL 将成为消息的“收件人”标头。 终结点地址中的任何标头也会添加到消息中。

显示正在添加到消息中的终结点地址标头的关系图。

通道使用传递给 WsOpenChannelWS_ENDPOINT_ADDRESS 结构自动解决发送的任何消息。 还可以使用 WsAddressMessage 函数替代此默认行为。

WS_ENDPOINT_ADDRESS 作为参数传递时,WsOpenChannelWsOpenServiceProxy 函数会在内存中创建 WS_ENDPOINT_ADDRESS 参数的副本,其大小限制为 65536 字节。 WsAddressMessage 没有此限制,因为它不需要创建 WS_ENDPOINT_ADDRESS 参数的副本。

扩展 字段中指定的扩展 WS_ENDPOINT_ADDRESS 不用于寻址消息,而是一种扩展机制,可用于提供有关服务的其他信息(例如元数据)。 可以使用 WsReadEndpointAddressExtension 函数读取常见扩展。

终结点地址的可选标识字段可以包括运行服务的计算机的 DNS 名称,或运行服务的 Windows 帐户的 UPN。 标识字段不用于处理消息,但可用于获取服务的安全令牌(例如,获取目标 UPN 的 Kerberos 票证),以及验证服务回复的身份(例如,用于在 SSL 期间返回的服务证书上进行名称检查的 DNS 标识)。

可以使用 序列化WS_TYPE中的 WS_ENDPOINT_ADDRESS_TYPE 枚举值读取和写入终结点地址。 请注意,若要序列化终结点地址,必须知道用于寻址标头的规范的版本,如 WS_ADDRESSING_VERSION 枚举中指定的。