我听到(并阅读)了很多与之相关的意见更好:重用WCF服务客户端或每次创建一个。但我从未理解在这些情况下到底发生了什么。除了意见之外,我真的没有找到“官方”的东西(比如msdn页面说哪个更好,为什么以及何时)。
在开发我自己的应用程序时,我很少遇到每次创建(和关闭)一个问题(创建和关闭过程没有在处理时间中添加甚至不是毫秒)。但在少数情况下,重用WCF服务客户端确实做了一个改变(以一种好的方式)。这些都是我在实践中观察到的,没有真正的逻辑动机。
那么,任何人都能解释我究竟哪条路更好吗? 在哪种情况下?这取决于客户端加载?在IIS上使用Web Garden会影响选择吗?
答案 0 :(得分:6)
Microsoft建议对客户端创建进行缓存:http://msdn.microsoft.com/en-us/library/aa738757.aspx(查看“需要考虑的问题”部分)
在WCF的初始版本中,创建Channel Factory会出现性能问题,因此每次创建客户端都会导致性能问题。我们必须创建并缓存通道工厂。 Microsoft通过更新(.NET Framework SP1?)修复了此问题,并且不再需要缓存。
基本上,修复后的性能差异可以忽略不计,特别是考虑到您是通过网络进行呼叫。