每个方法调用的WCF CreateChannel

时间:2010-10-26 13:46:37

标签: wcf

在我当前的Web项目中,我们为远程服务的每个方法调用执行ClientFactory.CreateChannel。

这真的有必要吗? 什么是最佳做法?

2 个答案:

答案 0 :(得分:2)

这在某种程度上取决于您的要求。相对而言,开通频道是昂贵的。最佳做法是让正在进行远程调用的类实现IDisposable,它应该调用ClientFactory.CreateChannel一次,在所有方法调用中使用通道,并在调用Dispose方法时关闭通道。也就是说,如果调用远程服务的方法之间的时间很长(比通道上的默认空闲超时长10分钟),那么执行ClientFactory.CreateChannel并不是特别有害,但我会说使用IDisposable路线并使用'using'关键字封装类的使用仍然会更好

答案 1 :(得分:0)

为每个方法调用创建一个新的频道,这通常是一种不好的做法。

对于双工WCF服务

创建单个频道并使用它直到不再需要与服务器通信/或该频道被关闭。

创建频道后,在对服务器进行任何调用之前,建议检查频道的状态(错误,打开,关闭)。

注册频道关闭/错误事件建议在发生时了解immmediatley。这样您就可以采取必要的操作或/并使用相同的对象通道对象引用再次创建通道。

适用于普通WCF服务

创建代理模式,创建频道/重新使用/重新创建,错误处理和处置。设置适当的非活动超时以及最适合您的解决方案的WCF客户端代理适当配置。

始终加载测试!!!!