使用 WCF 制作客户端/服务器样式的应用程序,但我找不到任何说明 NetTcpBinding 是否提供持久连接的文档?
我希望我的客户一次连接并保持连接到服务器数周。(是的,我知道我需要处理断开连接等。)
NetTcpBinding 是否允许这样的长连接?如果是这样,我需要指定什么或者这是默认行为吗?
只要您保持服务主机和客户端代理处于活动状态并处于打开状态,WCF 中的底层连接也应该保持打开状态。即使低于此,绑定似乎使用来自 TCP 连接池的连接,如NetTcpBinding MSDN 页面上所示:
NetTcpBinding使用基于服务的主机 DNS 名称和服务正在侦听的端口号的 TCP 连接池。
我不是 TCP 连接池如何工作的专家,您可能想尝试一个姊妹站点,例如ServerFault,以获取更多详细信息。
如果您想控制所有这些,那么我可以看到的唯一可以为开箱即用的 NetTcpBinding 调整的属性是MaxConnections
. 但是,如果您真的愿意深入研究,您还可以使用 TcpTransportBindingElement 构建您自己的自定义绑定,这可以让您对TcpConnectionPoolSettings进行更细粒度的控制。
无论如何,如果我冒险猜测,我认为构建服务主机和客户端代理将花费更多的时间(相对),而不是从池中获取连接所花费的时间,因此保持这两个打开可能就足够了你的要求。
我在评论中问您为什么希望连接保持打开的原因是因为这本身几乎不是一个要求。不过,速度和响应时间是一个真正的要求,因此最好的建议可能是明确这些要求(量化/限定您对速度的需求)并运行一些测试以确定最适合您的情况/需要什么。