代码改变世界

WCF 第十二章 对等网 点对点应用程序

2011-04-20 13:27  DanielWise  阅读(1900)  评论(0编辑  收藏  举报

这部分讨论Windows 通信基础(WCF)为创建P2P应用提供的支持。为了实现这个我们检查P2P应用程序通信的不同方式。

网状网络

P2P应用程序使用一个网状网络(又名,对等网状网络)。一个网状网络是连接到一起的一组对等节点。一个对等节点是一个P2P应用程序的实例。一个完全的网状连接是一个网状网络中所有节点都与其他节点连接的网络。一个完全连接的网状网络如图12.4显示。

 

图片12.4 完全连接的网状网络

  完全连接的网状网络仅对小规模的网状网络有意义。当由网状网络连接到一起的小部分用户想要尝试扩展到整个互联网时这就是不现实的。这种类型的网状网络称作部分连接网状网络。在一个部分的连接网状网络中,对等节点连接到临近的节点上,称作邻近节点。图片12.5显示了一个部分连接的网状网络。部分连接网状网络降低了每个节点所需资源的数量同时反过来增加了网状网络的扩展性。一个网状网络扩展性由网状网络中的参与者数量决定的。这种类型的网状网络的劣势在于你不可以直接向所有网状中的节点发送消息。相反,消息会在不同的邻居节点之间转发直到所有的参与者都发送了消息。消息在网状网络中传输知道所有节点都已连接到或者消息已经到达网状网络中一个特定深度。

 

图片12.5 部分连接的网状网络

解决对等网状网络

P2P应用程序使用网状名字来确定要加入的网状网络。一个网状名字是一个应用程序用来定位网状网络的逻辑网络名。在一些点一个网状名字需要被解析为要连接的一系列网络地址。这通常涉及连接到其他网状网络参与者并与连接到网状网络的其他参与者交换信息的过程。P2P应用程序可以使用很多技术来在网状网络中发现其他节点。包括使用多播协议,比如UDP,或者使用广为人知的服务器,使用自主服务器等。WCF使用一个称作对等网络解决协议(Peer Network Resolution Protocol, PNRP)的特殊实现,这个协议在Windows XP SP2 和Windows Vista 中都存在。PNRP 使用一系列技术来允许跨不同网络搜索。查看”使用PNRP解决对等网络问题”来获得更多关于PNRP的信息。

泛播消息与定向消息

在一个网状网络上的通信使用泛播消息(又名多播消息)或定向消息实现。泛播消息尝试向网状网络中的所有节点发送消息。消息通过一个网状网络借助节点向邻近节点发送消息进行传播。定向消息尝试通过在一系列连接节点中转发一条消息来向一个网状网络中的特定节点发送一条消息。消息由原始节点发送到它其中的一个邻居节点上去。它的邻居节点接着会把消息转发给其他节点直到消息已经到达目的端。在任何一种情况中,使用的特定技术是限制通过网状网络发送消息的数量。

  WCF支持使用泛播消息创建的P2P应用程序。对定向消息没有外部支持;然而,这种类型的通信可以使用WCF中一种或多种扩展特性来在已有对等网络能力的基础之上部署。