3

我有一个 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() 吗?

4

1 回答 1

3

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

你的情况有很多未知数来做出一个好的决定。有多少客户将连接到该服务?这是什么类型的连接(有可能会在几分之一秒内断开),是否有负载均衡器?代理人?

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

于 2010-06-17T21:15:16.837 回答