Bar*_*art 11 wcf caching channel
我一直在网上阅读很多WCF文章,似乎大多数人都会缓存ChannelFactory对象而不是频道本身.看起来大多数人都害怕使用频道缓存,因为他们不想处理可能导致缓存频道无法使用的网络故障.但是,通过在方法上捕获CommunicationException,重新创建通道并使用Reflection重放方法,可以很容易地解决这个问题.
然后有人认为进行频道缓存是不好的,因为所有通信都将通过单一频道进行.见以下文章.
http://social.msdn.microsoft.com/Forums/is/wcf/thread/9cbdf92a-a749-40ce-9ebe-3f2622cd78ee
这一定是件坏事吗?你能跨线程分享频道吗?性能是否会受到影响,因为对此单个通道的多个方法调用将被串行处理?
我没有发现共享渠道会降低性能的证据.我发现使用缓存通道比使用非缓存通道快约5倍,即使这意味着必须使用Reflection来对缓存通道进行方法调用.
另一个优点是不必用try/catch/finally语句包围所有WCF调用,以便在完成后调用通道上的Close(),Abort()或Dispose().对我而言,似乎WCF通过强迫开发人员必须管理WCF频道资源而向错误的方向迈出了一步.在.NET Remoting中,您使用Activator类创建了代理,并且您无需执行任何操作来清理它..NET Framework为您处理了所有这些.
Dar*_*rov 10
2个主要原因:
这是一篇很好的文章,进一步详细介绍.
| 归档时间: |
|
| 查看次数: |
3535 次 |
| 最近记录: |