【问题标题】:WCF: Comparisons between not closing ChannelFactory vs. constantly recreating the ChannelFactory and closing itWCF:不关闭 ChannelFactory 与不断重新创建 ChannelFactory 并关闭它之间的比较
【发布时间】:2011-03-05 01:53:58
【问题描述】:

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

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

但是,我希望 DoSomething 会被非常频繁地调用(比如说每分钟 10 次?),所以我得到的建议是将 ChannelFactory 实例化为静态实例,并始终重用相同的实例,并且永远不会关闭它(因为这比总是重新创建 ChannelFactory 然后关闭它“便宜”)。

我在这里征求第二意见,谁能告诉我为什么不调用 Close 并重用静态实例是个好主意?还是我应该坚持为每次调用重新创建 ChannelFactory 和 Close()-ing?

【问题讨论】:

    标签: .net wcf channelfactory


    【解决方案1】:

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

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

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

    【讨论】:

    • 我决定为每次通话打开和关闭一个新频道。谢谢指点。
    猜你喜欢
    • 2012-03-07
    • 2013-01-10
    • 2013-02-19
    • 2012-10-25
    • 1970-01-01
    • 2011-06-30
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多