使用WCF制作客户端/服务器式应用程序,但是我找不到任何解释NetTcpBinding是否提供持久连接的文档?
我希望我的客户端连接并保持连接到服务器几个星期. (是的,我知道我需要处理断线等…)
NetTcpBinding是否允许这样的长连接?如果有,我需要指定什么或这是默认行为?
解决方法
只要您保持服务主机和客户端代理处于活动状态并打开,WCF中的基础连接也应保持打开状态.即便如此,看起来绑定使用来自TCP连接池的连接,如
NetTcpBinding MSDN page所示:
The NetTcpBinding uses TCP connection pooling based on the service’s host DNS name and the port number the service is listening on.
我不是TCP连接池如何工作的专家,你可能想尝试一个姐妹网站,如ServerFault更多细节.
如果你想要控制所有这些,那么我能看到的唯一属性可以调整为开箱即用的NetTcpBinding是MaxConnections
.但是,如果你真的愿意深入了解你也可以建立你自己的自定义与TcpTransportBindingElement绑定,使您在TcpConnectionPoolSettings上获得更细粒度的控制.
在任何情况下,如果我冒险猜测我认为构建服务主机和客户端代理将花费比从池中获取连接所花费的任何时间(相对)更多的时间,因此保持这两个打开可能就足够了你的要求.
我在评论中询问为什么你希望连接保持开放的原因是因为这本身就不是一个要求.速度和响应时间是一个真正的要求,因此最好的建议可能是明确这些要求(量化/限定您对速度的需求)并运行一些测试来确定您的情况最佳/需要什么.