VS2010添加服务引用优于直接ClientBase <>的优点

Tel*_*ian 1 wcf visual-studio-2010

我注意到在VS2010中使用"添加服务引用"时会创建大量文件.其中一个文件是Reference.cs,它为服务契约创建一个ClientBase.

因此,我想知道VS创建的大量额外文件是否有任何优势,或者我可以自己使用ClientBase并跳过"添加服务引用"选项.

我应该注意到,在我的情况下,双方都在我的控制之下.

Enr*_*lio 5

以下是我个人观点中不同方法的优缺点概述:

使用Visual Studio生成的服务代理

优点

  • 入门所需的努力最少
  • 能够在服务合同发生变化时快速更新代理
  • 没有自定义代码可以维护

缺点

  • 由于通过ClientBase <TChannel>类与WCF基础架构高度耦合,使得消费者难以使用任何流行的.NET隔离框架进行单元测试,例如Rhino MocksMoq
  • 创建了不必要的额外文件

使用WCF Channels API

优点

  • 由于IChannelFactory <TChannel>接口提供的解耦,任何隔离框架都具有高可测试性
  • 更好地控制如何调用服务

缺点

  • 需要一些初步的努力才能开始
  • 一些自定义代码要维护

总结使用代理在消耗WCF服务提供较少的摩擦,同时放弃一些控制和可测试性.使用Channel API需要更多代码以换取更高程度的灵活性,这非常方便,特别是如果您希望将测试组件与它们通信的WCF服务分开进行单元化.

相关资源: