WCF NetTcpBinding是否提供持久连接?

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

我希望我的客户端连接并保持连接到服务器数周。 (是的,我知道我需要处理断线等…)

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

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

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

我不是TCP连接池如何工作的专家,您可能想尝试一个姐妹站点,如ServerFault,以获取更多详细信息。

如果你想控制所有这些,那么我可以看到的唯一属性可以调整为开箱即用的NetTcpBinding是MaxConnections 。 但是,如果您真的愿意深入了解,您还可以使用TcpTransportBindingElement构建自己的自定义绑定,这样您就可以对TcpConnectionPoolSettings进行更细粒度的控制。

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

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