我有一个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() - 每次调用它?
答案 0 :(得分:3)
你的案子中有很多未知数要做出正确的决定。有多少客户将连接到该服务?这有什么样的联系(它有可能会在几分之一秒内停止),是否有负载均衡器?代理?
顺便说一下,如果您决定每次都打开和关闭频道,则无需重新创建ChannelFactory。保持静态,每次只打开和关闭一个新频道。大多数时候创建工厂会消耗更多资源。