代码改变世界

WCF 第十二章 对等网 系列文章

2011-07-13 08:37  DanielWise  阅读(2938)  评论(4编辑  收藏  举报

上一个系列主要描述工作流服务,WCF 与WF 是如何相互关联、一起使用的。本篇主要描述WCF对创建分布式应用非常常见的对等网的支持和扩展,相信大家对P2P已经非常熟悉,但是对基于WCF架构的P2P会很新奇,本系列将就这方面做深入的探讨。

[第1篇] 对等网

很多开发人员在创建分布式应用程序时会考虑客户端-服务端或者n-层结构模型。另外一个通常会被忽略的创建分布式应用程序的方案是点到点(P2P)模型。大多数流行的互联网应用程序中的一部分,包含即时通信,游戏以及文件共享,都使用P2P方案。与其他应用程序的类型不同,一个P2P应用程序假设没有中心结点,这意味着客户端和服务端之间没有区别。这里介绍了在应用程序的设计中的大量的复杂性。大多数开发人员由于创建P2P应用程序的复杂性和困难性而回避创建P2P应用程序。如果使用合适的方式实现,P2P应用程序可以提供在可扩展性和可信赖性两方面的明显优势。这一章将聚集在Windows Vista 上使用WCF创建P2P应用程序。我们将检查WCF的能力并描述在.NET Framework 3.5 中添加的新功能。

[第2篇] 点对点应用程序

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

[第3篇] 创建P2P应用程序

WCF支持使用netPeerTcpBinding绑定创建P2P应用程序。这个绑定允许多个部分在一个对等传输协议上通信。它也定义了节点用来在网状网络中解析邻近节点的方式。对等传输信道默认使用的解析协议是PNRP。这个技术是Windows 操作系统的一部分且从Windows XP SP2就已经有了。我们会在本章的”使用PNRP解析对等网络问题”部分详细讨论有关PNRP内容.

[第4篇] 使用PNRP解决对等网络问题

PNRP是一个允许发布以及发现P2P资源信息的分布式名字解决协议。WCF使用PNRP来在一个网状网络中解析对等节点。这允许在一个对等网状网络中的参与者发现其他参与者以便于它们可以互相通信。这个协议在部分时候已经作为Windows XP一个可选的下载或者作为Windows XP SP2 的一部分。目前当你在Windows Vista中开启对IPv6的支持时会包含PNRP v2.0.PNRP在WCF中对对等通信是重要的,因为它是在一个网状网络中的邻居节点发现彼此的默认方式。

[第5篇] 使用PNRP注册名字

WCF可以使用PNRP在一个网状网络上寻找其他参与者。在它的实现,WCF对等信道从使用PNRP中抽象出来所以一个应用程序不需要直接与PNRP打交道。然而,一些对等应用程序可能想要在WCF对等信道外面自己发布并解决标识符(对等名字)。不幸的是,在.NET Framework3.5之前没有任何方式从托管代码中注册PNRP名字。.NET Framework3.5中添加了一个新的叫做System.Net.Peer命名空间来使用托管代码使用PNRP结构。

[第6篇] 实现一个自定义对等网解析器

对等传输信道允许开发人员通过确定一个自定义对等网解析器来实现他们自己的对等解决方案。有很多理由让你实现自己的对等网络解析器而不是使用默认的PNRP协议解析器。PNRP要求使用IPv6并需要为Windows XP SP2和Vista客户端下载额外补丁以使其可以一起使用。在这些情况下实现一个自定义对等网络解析器可以最大化使用现有的IPv4网络而且易于部署。有很多实现一个自定义对等网络解析器的例子。Windows SDK 显示了一个使用WCF服务的方案。我们将给出一个类似的使用一个服务的自定义对等网络解析器,但是需要有一个SQL Server 2005数据库支持。很多应用程序可以使用这个实现来在一个网络中获得一系列协作计算机。

[第7篇] 限制一条消息的跳数

基于消息洪水的对等网提供一个限制一条消息在网络上传输距离的方式。一条消息的传输距离通常是指这条消息在网络上传输过程中的跳数。中转点数目通过计算一条消息在邻近节点间传输的次数确定。对那些熟悉套接字编程的人来说,这类似于在TCP协议上设置活跃时间(Time-to-Live, TTL),确定了一个包可以在被丢弃前最大的传输路由器个数。

[第8篇] 使用Windows Vista 来进行合作

WCF提供创建在一个网状网络间通信的对等应用的架构。它不提供发现和临时协作能力。对这些能力我们依赖于Windows Vista和.NET Framework 3.5的新特性。包括我的邻居,Windows联系人和邀请人。这部分检查这些特性并描述如何引用新的System.Net.PeerToPeer命名空间来使用它们。

[第9篇] System.Net.PeerToPeer.Collaboration

我的邻居,Windows 联系人以及邀请人都允许一个应用程序开始一个合作性的活动。在.NET Framework 3.5 之前,开发人员需要调用非托管APIs来使用这些特性。这意味着他们需要使用C++开发或者至少创建互操作程序集(使用P/Invoke)在.NET Framework 3.5 中使用的经历已经通过引入可以使用内建于Windows Vista中的我的邻居,Windows 联系人以及邀请人架构的托管库而取代。这些库在一个成为System.Net.PeerToPeer的新的命名空间中提供。一个开发人员需要向System.Net程序集中添加一个引用来使用这些新库。我们将查看一个叫做对等会话的简单的示例程序来了解如何使用这些新特性。

[第10篇] 使用自定义绑定实现消息定向

当使用对等传输信道时会有一个常见的错误,就是认为它支持在一个对等网状网络间定向通信。消息定向意味着一条消息可以在一个对等网状网络中通过跨越一个网状网络将其传播到目的端(这就是路由的原理)来发送到特定节点。使用对等传输信道是不可能的。这限制了可以创建的对等应用程序的类型,因为所有的消息通信都假设消息将会被发送到每个节点。然而,只需要知道一点怎么做且付出一点努力,这些限制部分可以被淘汰。

[第11篇] 总结

点对点(P2P)应用程序是创建分布式应用程序的一种非常引人注目的方式。P2P应用程序假设没有中心节点,这意味着在客户端和服务端之间没有区分。如果设计的非常合适,P2P应用程序可以在可扩展性和可信赖性上提供明显的优势。对等应用程序的例子包括流行的因特网应用,比如即时通信,游戏以及使用P2P方案的文件共享。