使用wcf服务的这两种方法中哪一种更好?为什么?
使用ChannelFactory的
前任。
ChannelFactory<IMyContract> factory = new ChannelFactory<IMyContract>();
IMyContract proxy1 = factory.CreateChannel();
proxy1.MyMethod();
调用像so这样的wcf服务有点无聊
IMyContract proxy1 = null;
try
{
proxy1 = factory.CreateChannel();
proxy1.MyMethod();
((ICommunicationObject)proxy1).Close();
}
catch
{
((ICommunicationObject)proxy1).Abort();
}
我们是否应该为每个代理调用重复此代码段?还是有通用的方法来创建用于关闭和中止代理的包装器类?
编写此类类似于
ServiceExecution.Execute(proxy=>proxy.MyMethod());
的类来创建代理,然后关闭或中止它是执行此操作的好方法吗? 最佳答案
Here是MSDN上的一篇文章,建议不要在.Net 3中使用生成的代理,因为每次缓存.Net 3.5 ChanelFactory时,它都会创建ChanelFactory。
但是我个人更喜欢自己使用ChanelFactory,即使partials
出来后,生成的代码也总是很痛苦