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>