Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保持WCF服务的活力?_Wcf_C# 4.0_Service_Channel_Fault - Fatal编程技术网

如何保持WCF服务的活力?

如何保持WCF服务的活力?,wcf,c#-4.0,service,channel,fault,Wcf,C# 4.0,Service,Channel,Fault,我有两个程序(一个exe和一个dll加载到另一个第三方exe的进程空间)使用本地机器wcf服务(使用网络命名管道绑定)相互通信请求的情况。有第三个主机exe开始托管服务。这一切都很好(到目前为止……我还在学习),但我开始思考如果频道出现故障或服务超时会发生什么。检查和处理故障以及保持通道活动的最佳实践是什么 在我的情况下,将由用户决定是否打开或关闭应用程序,我们确实有一些用户倾向于在夜间、周末等时间打开应用程序。。。在我看来,这可能导致故障或服务中断,我不知道如何恢复。任何帮助都将不胜感激。首先

我有两个程序(一个exe和一个dll加载到另一个第三方exe的进程空间)使用本地机器wcf服务(使用网络命名管道绑定)相互通信请求的情况。有第三个主机exe开始托管服务。这一切都很好(到目前为止……我还在学习),但我开始思考如果频道出现故障或服务超时会发生什么。检查和处理故障以及保持通道活动的最佳实践是什么


在我的情况下,将由用户决定是否打开或关闭应用程序,我们确实有一些用户倾向于在夜间、周末等时间打开应用程序。。。在我看来,这可能导致故障或服务中断,我不知道如何恢复。任何帮助都将不胜感激。

首先,您为什么要让频道无限期地保持活力

假设您正在连接到一个数据库,您希望在一天的时间内从中读取数据。您会在早上创建数据库连接,然后在晚上关闭它吗

在WCF中为每个调用构造一个通道相对便宜,除非您知道您将在几秒钟内进行多个调用,在这种情况下,您应该重用该通道

编辑

这篇文章解释了如何做到这一点。这相当复杂,只需在代码中为绑定设置一个巨大的超时值可能更容易(如本文末尾所建议的):

编辑


谷歌上有很多关于这一点的信息:

对于双工频道,如果它关闭了,是否会阻止回调工作?是的,对于双工,你需要保持频道打开。在WCF中不使用双工通道的原因之一。在我的情况下,我没有选择。。。由于我当前的需求和环境,我基本上是在创建一个自行开发的消息传递/请求服务,以便在dll和exe之间运行。所以在ServiceHost和通道之间。。。处理故障并使其保持活动状态的最佳方法是什么?好吧,我不知道对于故障和其他潜在的通信结束事件和/或问题,答案是否不仅仅是调整超时。。。例如,DuplexChannelFactory对象具有故障事件。这是否值得监视。。。如果是,请使用中止和重置?另外,我看到的大部分内容似乎都与频道有关,但是ServiceHost呢?那里有值得监视的事件吗?或者采用特殊的处理方式来确保服务和渠道保持活力?我只是想有人以前来过这里,不是我。我使用双工wcf调用构建了一个拍卖服务和客户机-如果任一通道出现故障,用户只需重新启动客户机,一切正常。