我在代码中使用了一个WCF服务,并将其作为ChannelFactory类生成。我知道使用WCF的正确方法是创建ChannelFactory (让我们称之为AwesomeClient),完成工作,然后对其调用Close()。下面是我的代码片段:
public static void DoSomething()
{
var client = new AwesomeClient();
client.DoSomethingAwesome();
client.Close();
}但是,我预计DoSomething会被频繁调用(比如一分钟调用10次?),所以我得到的建议是将ChannelFactory实例化为静态实例,并且始终重用相同的实例,并且永远不需要关闭它(因为这比总是重新创建ChannelFactory然后关闭它“更便宜”)。
我在这里寻求另一种意见,谁能告诉我为什么不调用Close并重用静态实例是一个好主意?或者我应该继续重新创建ChannelFactory,并在每次调用时使用-ing()?
发布于 2010-06-18 05:15:17
一分钟10次并不是那么频繁。每秒10次,我肯定会考虑重用这个通道。
在你的情况下,要做出一个好的决定有很多未知数。有多少客户端将连接到该服务?这是一种什么样的连接(有没有可能会停机一小段时间),有没有负载均衡器?代理?
顺便说一句,如果您决定每次都打开和关闭通道,则不需要重新创建ChannelFactory。保持静态,每次只需打开和关闭一个新的通道。大多数情况下,创建工厂会消耗更多的资源。
https://stackoverflow.com/questions/3063849
复制相似问题