gpt4 book ai didi

c# - WCF - 长时间打开 channel 是不好的做法吗?

转载 作者:太空狗 更新时间:2023-10-29 17:34:35 25 4
gpt4 key购买 nike

我刚刚开始了解 WCF。我打算做的是使用 NetTcpBinding 在客户端和服务器之间打开一个双工 channel ,并无限期地保持该 channel 打开,以便服务器可以向客户端发起请求。

然后我偶然发现了这个blog by Jesse Ezell ,这似乎表明无限期地保持 channel 打开是一件坏事,因为您无法捕获错误,这会导致各种不稳定性。

这样对吗?如果我使用 NetTcpBinding 并在关系的任何一方保留对开放 channel 的引用,如果出现通信故障会怎样?如何捕获失败事件?还有哪些陷阱?您使用的 .NET 框架有什么不同吗? (我在 4.0。)

最佳答案

我不同意 Jesse 的观点(作为旁注:他还建议您默认使用 WCF 服务类作为单例,在我看来这是最糟糕的想法)... .

只要您小心地捕捉服务器上的异常(例如,通过在您的服务类中实现 IErrorHandler 接口(interface)),就没有必要继续关闭您的 channel ……尤其是不在使用 netTcpBinding 的公司 LAN 环境中。

与例如相反数据库连接通常会产生许可费用,保持与服务机器的网络连接打开应该不会造成任何问题。它通常也不是有限的资源,因此不断打开和关闭它似乎毫无意义。

如果您确实要让您的服务 channel 保持较长时间的开放,您需要在客户端处理故障 - 例如您需要能够从 channel 出现故障的情况中恢复,毕竟发生了异常(例如网络中断或类似情况)。

但如果你这样做,那么我看不出在每次通话后不断关闭你的 channel 并为下一个...重新打开有任何好处......

关于c# - WCF - 长时间打开 channel 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com