CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > WinSystem子站 > 技巧

利用Vista和WCF中强大P2P通信功能

作者: Justin Smith,  出处:微软, 责任编辑: 韩博颖, 
2008-05-23 11:02
  Windows Vista 中的 P2P 开发是一个极其广泛的主题。因此,我不会去尝试完成这样一个不可能的任务,而是会介绍 Windows Vista 中一些不同的 P2P 技术。

  对等名称解析协议

  顾名思义,PNRP 旨在基于网格名等要素来解析物理地址。PNRP 可供带有 Advanced Networking Pack 的 Windows XP Service Pack 1 (SP1) 以及 Windows XP SP2 和 Windows XP Professional x64 Edition 使用。Windows Vista 也将附带 PNRP 版本 2。从最简单的层次看,PNRP 本身就是一个采用 Windows 服务形式的 P2P 应用程序,并且 PNRP 节点的网格专用于发现加入到其他网格中的节点的物理地址。

  PNRP 和 IPv6 PNRP 构建于 Internet 协议版本 6 (IPv6) 之上。由于 IPv6 对于多数开发人员而言还相当陌生,因此在讨论 PNRP 机制之前,非常有必要提及 IPv6 的至少一个重要方面。在 IPv6 中,地址是一个 128 位的值(这可能产生约 3.4×1038 种地址组合)。这种大小的 IPv6 地址池使 IPv6 的最重要功能之一 - 端对端寻址变为可能,即使这些地址被分割为多个子网并隐藏在 NAT 之后。

  PNRP 示例 PNRP 功能的原型、结构、错误代码均在 Windows SDK 的 p2p.h 头文件中定义。如果某应用程序想要向 PNRP 注册一个网格名,它必须用非托管代码通过 Windows API 实现,或用托管代码通过公共语言运行库 (CLR) 的 P/Invoke 工具实现。目前,在 Windows API 的 PNRP 部分的 .NET Framework 中未包含托管包装。但您可以通过使用 netsh 命令行实用程序来访问 PRNP。通过 netsh,您可以按以下所示向 PNRP 注册一个新的 PNRP 名:

 

      c:\temp>netsh
  netsh>p2p pnrp peer
  netsh p2p pnrp peer>add 0.justinsmith
  Ok.
  命令行参数 0.justinsmith 即是 P2P 名。当此命令执行时,PNRP 基础结构会生成一个 PNRP ID,将该 PNRP ID 与 P2P 名相关联,并为该 PNRP ID 分配一个 IPv6 和 IPv4 地址。如果您访问另一台已安装 PNRP 并已将其启动的计算机,则可以用以下 netsh 命令解析网格名 0.justinsmith:

  

      netsh p2p pnrp peer>resolve 0.justinsmith
  Resolve started...
  Found: Comment: gonzo
  Addresses: [0000:0000:0000:0000:0000:0000:0000:0001]:8350 udp
  192.168.42.100:8350 tcp
  现在需要解释一下该解析命令的输出。首先,Comment 字段代表注册了 0.justinsmith 的计算机名称(我在 Muppets 的基础上为我的计算机命名)。该字段从 netsh 自动填充,并且不能用作解析进程的一部分。其次,注意一下分配给该节点的 IPv6 和 IPv4 地址。这是 netsh 和允许通过 IPv4 网络传送 IPv6 通信量的 Teredo 转移技术共同具备的一个功能。诚然,我只是浅显地阐述了 PNRP,但我已经表明了 PNRP 使我可以用 P2P 名来解析 IP 地址。

  PeerChannel

  Windows Communication Foundation 的主要优点之一就是,它为许多不同类型的分布式应用程序提供了一个通用的编程模型。例如,编写一个基于 TCP/IP 通过二进制编码消息进行通信的分布式应用程序所需的代码与编写一个基于 HTTP 通过符合 WS-* 的可互操作的消息进行通信的分布式应用程序所需的代码惊人地相似。Windows Communication Foundation 的一个鲜为人知的功能就是它支持使用这同一个通用编程模型来构建 P2P 应用程序。由于 Windows Communication Foundation 对 P2P 应用程序的支持,可能会有人将其视为一种网格技术,但实际上,只有 PeerChannel Windows Communication Foundation 模块才专用于构建 P2P 应用程序。因此,PeerChannel 这个术语通常用于指代 Windows Communication Foundation 的 P2P 功能。无论 Windows Communication Foundation 中的 PeerChannel 指代的是什么,它实际上消除了通常与 P2P 应用程序开发相伴的所有复杂性,并且在我看来,它是 P2P 应用程序开发领的一个创新性突破。

  PeerChannel 网格 PeerChannel 网格是专为消息扩散而设计。但 PeerChannel 包含了可将消息传播到网格的一部分而不是整个网格的机制。因此,更准确地说,PeerChannel 网格是专为多方消息传送而设计。

  PeerChannel 网格的结构由每个节点所连接的邻居数量所控制。为此,PeerChannel 网格会主动维护网格的结构。这种维护的作用就是使网格性能稳健并且分布均匀。更具体点说,网格中的节点会设法将连接的邻居数保持在两到七个之间。这些阈值可使对本地节点的资源需求与保持网格稳健性之间取得平衡。

  如果某节点在进入网格时带有三个邻居,然后其中两个邻居离开网格,则该节点将开始一个维护周期以试图获取新的邻居连接。同样,如果一个节点连接的邻居少于七个,则它将接受新连接,直到它具有七个邻居连接时为止。当一个 PeerChannel 节点连有三个邻居时,则认为它处于理想的连接状态,但一个节点将接受多达七个邻居,以便低于邻居数最低阈值的节点可以迅速获得新的邻居。应注意的是,您的应用程序代码不能更改这些阈值或对网格的维护实施任何控制,这一点很重要。这些细节问题完全由 PeerChannel 基础结构逐个节点地处理。

?8?? 9 1 2 3 4 5 6 7 8 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i