WCF NetTcpBinding是否提供持久连接?

时间:2012-10-19 20:31:40

标签: c# wcf

使用WCF创建客户端/服务器样式的应用程序,但是我找不到任何解释NetTcpBinding是否提供持久连接的文档?

我希望我的客户端连接几个星期并连接到服务器几周。 (是的,我知道我需要处理断开连接等。)

NetTcpBinding是否允许这样的长连接?如果有,我需要指定什么或这是默认行为吗?

1 个答案:

答案 0 :(得分:7)

只要您保持服务主机和客户端代理处于活动状态并打开,WCF中的基础连接也应保持打开状态。即便如此,似乎绑定使用来自TCP连接池的连接,如NetTcpBinding MSDN page上所示:

  

NetTcpBinding 根据服务的主机DNS名称和服务正在侦听的端口号使用TCP连接池。

我不是TCP连接池如何工作的专家,您可能想尝试使用ServerFault之类的姐妹网站了解更多相关信息。

如果你想要控制所有这些,那么我能看到的唯一一个可以为开箱即用的NetTcpBinding调整的属性是MaxConnections。但是,如果您真的愿意深入挖掘,那么您也可以使用TcpTransportBindingElement构建自己的自定义绑定,从而为TcpConnectionPoolSettings提供更细粒度的控制。

在任何情况下,如果我想冒险,我认为构建服务主机和客户端代理将花费比从池中获取连接所花费的任何时间(相对)更多的时间,因此保持这两个打开可能足以满足您的要求。

我在评论为什么中要求连接保持打开的原因是因为这本身并不是一个要求。速度和响应时间 是一个真正的要求,所以最好的建议可能是明确这些要求(量化/限定你对速度的需求)并运行一些测试来确定你的情况最好/需要什么