WCF NetTcpBinding 是否提供持久连接?



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

我希望我的客户端一次连接并保持与服务器的连接数周。(是的,我知道我需要处理断开连接等。

NetTcpBinding 是否允许这样的长连接?如果是这样,我需要指定任何内容还是默认行为?

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

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

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

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

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

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

最新更新