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>