如何保持WCF服务活着?

时间:2013-05-15 17:09:01

标签: wcf c#-4.0 service channel fault

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

在我的情况下,用户应该保持应用程序打开或关闭它们,我们确实有那些倾向于让他们在一夜之间,周末等等开放的用户......在我看来这可能会打开发生故障或丢失服务的可能性,我不知道如何恢复。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

想象一下,您正在连接到您希望在一天内阅读的数据库。你会在早上创建数据库连接,然后在晚上关闭它吗?

在WCF中为每个呼叫构建一个频道相对便宜,除非您知道您将在几秒钟之内进行多次呼叫,在这种情况下您应该重用该频道。

修改

这篇文章解释了如何做到这一点。它非常复杂,可能更容易为代码中的绑定设置一个巨大的超时值(如帖子末尾所示):

Do WCF Callbacks TimeOut

修改

Google上有很多关于此事的内容:http://bit.ly/10ZPWE2