对等通道自定义对等解析程序

自定义对等解析程序示例演示如何实现可以与对等通道应用程序一起使用的自定义解析程序。

此示例基于自承载示例。有关 Windows Communication Foundation (WCF) 的高级概述,另请参阅入门示例

提示

本主题的末尾介绍了此示例的设置过程和生成说明。

关键概念:

对等通道是 WCF 中的一种多方对等 (P2P) 通信技术。它为应用程序开发人员提供了基于消息的、安全且可伸缩的 P2P 信道。可从对等通道中获益的多方应用程序的一个常见示例是协作应用程序,例如在以对等方式(无需服务器)相互聊天的一组人中进行聊天。对等通道支持有关 P2P 协作、内容分发、负载平衡和分布式处理的使用者和企业方案。

对等通道引入了下列新概念:

  • “网格”**是彼此之间可以相互通信并由唯一的网格 ID 标识的对等节点的命名集合(一个互连图)。

    提示

    网格中的活动节点发布其网格名称,以便其他节点可以找到它们。网格具有下列特征:根据不断变化的成员资格进行调整,在节点不断加入和离开网格的环境中具有弹性连接性,并根据流量模式动态优化。

  • “对等节点”**是网格中的终结点。一个应用程序可以具有加入不同网格的多个对等节点。

  • “对等通道”**是使用 netPeerTcpBinding 绑定构造的通道,或者是使用 PeerTransportBindingElement 的自定义绑定。

  • 对等解析程序**负责将网格 ID 解析为网格中节点的终结点地址。在打开一个对等节点后,它会使用对等解析程序将网格 ID 解析为网格中其他对等节点的地址列表。这会创建一个由互连节点组成的网格,从而允许通过网格来传播消息。

此示例演示如何编写自定义对等解析程序 Web 服务以及如何在可执行文件内部自承载服务。客户端不是独立应用程序,但是可以借助于其他使用自定义对等解析程序的对等通道应用程序进行编译。请参见对等通道聊天示例,了解有关对等通道应用程序如何使用自定义对等解析程序的客户端。

自定义对等解析程序服务是一种单一实例服务,它在字典中缓存网格 ID 和终结点地址,响应注册和注销,并解析来自客户端的请求。

网格 ID 应是唯一的。如果多个应用程序使用同一个解析程序,则它们必须选择不同的网格 ID 以避免冲突。

下面的示例实现一个静态主函数,以便创建一个给定 CustomPeerResolverService 类型的 ServiceHost。主机还负责提供服务主机的基址,该基址已经在配置文件 (App.config) 的应用程序设置中进行配置。

<appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress"
     value=" net.tcp://localhost/servicemodelsamples/peerResolverService" />
</appSettings>

服务实现公开 RegisterMeshId、UnregisterMeshId 和 ResolveMeshId 操作的约定。客户端向给定的操作发出同步请求,服务使用结果进行答复。

服务会公开一个终结点以便与使用配置文件 (App.config) 定义的服务进行通信。绑定使用可提供 TCP 通信的标准 NetTcpBinding 进行配置。

<services>
    <service 
       service="Microsoft.ServiceModel.Samples. CustomPeerResolverService">
       <!-- use base address provided by the host -->
       <endpoint address=""
            binding=" netTcpBinding "
             contract="Microsoft.ServiceModel.Samples. ICustomPeerResolver" />
    </service>
</services>

经过配置之后,服务便可以由同一台计算机上的客户端在 net.tcp://localhost/servicemodelsamples/peerResolverservice 处访问。若要使远程计算机上的客户端能够访问该服务,必须指定限定域名,而不是本地主机。

运行示例时,操作的注册和注销消息显示在服务控制台窗口中。如果针对同一个网格 ID 进行了多次注册,则只有第一个注册和最后一次注销才会导致在控制台窗口中显示消息。在控制台窗口中按 Enter 可以关闭服务(在使用该服务关闭对等通道应用程序之后)。

提示

此示例目前不处理基础结构可能引发的所有可能异常。如果要在商业或生产环境中使用这些示例,请遵循正确的异常处理最佳做法。

设置、生成和运行示例

  1. 请确保已经执行了 Windows Communication Foundation 示例的一次性安装过程

  2. 若要生成 C#、C++ 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

  3. 若要用单一计算机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。(对等通道聊天示例应用程序还可以包括其自己的自定义对等解析程序实现。请按照对等通道聊天页中的说明来生成和运行客户解析程序和对等聊天实例。)

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.