重复使用WCF服务客户端还是每次创建一个新的?

13

我听到(并阅读)了很多关于哪种方式更好的意见:重用WCF服务客户端还是每次创建一个新的。但我从未真正理解在这些情况下发生了什么。除了意见之外,我也没有找到一些“官方”的东西(比如msdn页面说明哪种更好,为什么以及何时使用)。

在开发自己的应用程序时,我很少遇到创建(和关闭)每个客户端的问题(创建和关闭过程甚至不会增加处理时间的一毫秒)。但在一些情况下,重用WCF服务客户端确实产生了好的效果。这些都是我在实践中观察到的,没有真正的逻辑动机。

所以,有人能够准确地解释哪种方法更好吗?在什么情况下?这取决于客户端的负载吗?在IIS上使用Web Garden会影响选择吗?

1个回答

8
微软建议使用缓存来创建客户端:http://msdn.microsoft.com/en-us/library/aa738757.aspx (请查看“需要考虑的问题”部分)。
在最初版本的WCF中,创建通道工厂存在性能问题,因此每次创建客户端都会导致性能问题。我们不得不创建和缓存通道工厂。微软通过更新(.NET Framework SP1?)解决了这个问题,现在不再需要缓存。
基本上,在修复后的性能差异是可以忽略不计的,尤其是考虑到您正在进行网络调用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接