代码改变世界

WCF 第十二章 对等网 创建P2P应用程序

2011-04-20 15:03  DanielWise  阅读(2929)  评论(1编辑  收藏  举报
WCF支持使用netPeerTcpBinding绑定创建P2P应用程序。这个绑定允许多个部分在一个对等传输协议上通信。它也定义了节点用来在网状网络中解析邻近节点的方式。对等传输信道默认使用的解析协议是PNRP。这个技术是Windows 操作系统的一部分且从Windows XP SP2就已经有了。我们会在本章的”使用PNRP解析对等网络问题”部分详细讨论有关PNRP内容.
netPeerTcpBinding
netPeerTcpBinding绑定对WCF中的对等通信提供支持。对等通信使用PeerTransportBindingElement实现。这种传输使用TCP和二进制作为默认的传输协议和消息编码。
  下面的代码显示了netPeerTcpBinding绑定的地址格式:
  net.tcp://{meshname}[:port]/{service location}
默认端口设置为0.这意味着对等传输将随机选取一个端口用来通信。如果端口选择了非0值那么就会使用特定端口。
  表12.1列出了netPeerTcpBinding绑定的默认绑定属性。
表12.1 netPeerTcpBinding绑定属性
属性名 描述 默认值
closeTimeout 等待连接关闭的最大超时时间。 00:01:00
listenIPAddress 对等传输监听的IP地址。 n/a
port 对等传输的监听端口。如果是0则意味着将会使用一个随机端口。 0
maxBufferSize 用来在内存中存储消息的最大内存大小。 65,536
maxConnections 入站或出站连接的最大数量。入站和出站连接分别计数。 10
maxReceivedMessageSize 一条入站消息的最大值。 65,536
name 绑定名字 n/a
openTimeout 等待一个打开连接操作完成的最大超时时间。 00:01:00
readerQuotas 确定可以处理(比如大小)的消息的复杂度。 n/a
receiveTimeout 等待一个接收操作完成的最大超时时间。 00:01:00
security 确定绑定的安全设置。 n/a
sendTimeout 等待一个发送操作完成的最大超时时间。 00:01:00
resolver 在一个网状网络上用来注册及解决其他参与者的对等网络处理方。 n/a
  使用netPeerTcpBinding绑定暴露一个服务的最小配置在列表12.1中显示。
列表12.1 netPeerTcpBinding宿主配置
<configuration>
  <system.serviceModel>
    <services>
      <service name="EssentialWCF.HelloWorld">
        <endpoint binding ="netPeerTcpBinding" 
                  contract="EssentialWCF.IHelloWorld" 
                  address="net.peer://MyMeshName/HelloWorld"/>
      </service>
    </services>
  </system.serviceModel>
</configuration>
  使用netPeerTcpBinding绑定调用一个服务的最小配置在列表12.2中显示。
列表12.2 netPeerTcpBinding客户端配置
<configuration>
  <system.serviceModel>
    <client>
      <endpoint binding ="netPeerTcpBinding"
          contract="EssentialWCF.IHelloWorld"
          address="net.peer://MyMeshName/HelloWorld"/>
    </client>
  </system.serviceModel>
</configuration>