WCF:在不关闭ChannelFactory与不断重新创建ChannelFactory并关闭它之间进行比较

时间:2010-06-17 17:04:03

标签: .net wcf channelfactory

我有一个WCF服务,我在我的代码中使用并生成为ChannelFactory类。我知道使用WCF的正确方法是创建ChannelFactory(让我们调用这个AwesomeClient),完成工作,然后调用它上面的Close()。 这是我的片段:

    public static void DoSomething()
    {
        var client = new AwesomeClient();
        client.DoSomethingAwesome();
        client.Close();
    }

但是,我期待DoSomething会被频繁调用(比如说每分钟10次?),所以我得到的建议是将ChannelFactory实例化为一个静态实例,并且总是重用同一个实例,并且永远不会关闭它(因为这比总是重新创建ChannelFactory然后关闭它更便宜)。

我在这里提出第二意见,有人可以告诉我为什么不调用Close并重用静态实例是一个好主意?或者我应该坚持重新创建ChannelFactory和Close() - 每次调用它?

1 个答案:

答案 0 :(得分:3)

每分钟10次并不常见。每秒10次我肯​​定至少会考虑重用频道。

你的案子中有很多未知数要做出正确的决定。有多少客户将连接到该服务?这有什么样的联系(它有可能会在几分之一秒内停止),是否有负载均衡器?代理?

顺便说一下,如果您决定每次都打开和关闭频道,则无需重新创建ChannelFactory。保持静态,每次只打开和关闭一个新频道。大多数时候创建工厂会消耗更多资源。