我注意到,当在 VS2010 中使用“添加服务引用”时,会创建大量文件。其中一个文件是 Reference.cs,它为服务合同创建一个 ClientBase。
因此,我想知道 VS 创建的大量额外文件是否有任何优势,或者我可以自己使用 ClientBase 并跳过“添加服务引用”选项。
我应该指出,就我而言,双方都在我的控制之下。
从我的角度来看,以下是对不同方法的优缺点的概述:
使用 Visual Studio 生成的服务代理
Pros
- 只需最少的努力即可开始
- 每当服务合同发生变化时能够快速更新代理
- 无需维护自定义代码
Cons
- 使消费者难以使用任何流行的 .NET 隔离框架进行单元测试,例如犀牛模拟 or Moq,由于通过以下方式与 WCF 基础设施高度耦合客户端库 class
- 创建不必要的额外文件
使用 WCF 通道 API
Pros
- 得益于任何隔离框架提供的解耦,具有高可测试性IChannelFactory界面
- 更好地控制服务的调用方式
Cons
- 需要一些初步努力才能开始
- 一些需要维护的自定义代码
总结一下使用代理提供更少的摩擦使用WCF服务时同时放弃一些控制和可测试性. Using Channel API 需要更多代码以换取一个更高程度的灵活性,这会很方便,特别是当您想要将组件与它们通信的 WCF 服务分开进行单元测试时。
相关资源:
- 如何以编程方式将客户端连接到 WCF 服务
- 在 WCF 中使用通道工厂与代理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)