使用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出来后,生成的代码也总是很痛苦

    09-17 02:15