替代服务参考

时间:2011-04-26 08:24:07

标签: .net wcf channelfactory service-reference

我正在努力帮助一个项目团队通过修复一些痛点来简化他们的工作。

他们在代码中遇到的一个难点是,他们通过服务引用(代理)使用WCF服务[即Visua Studio 2008中的“添加服务引用”。这会产生很多问题,包括部署开销,Souce Control获取更新代理等的最新相关问题。

为了处理服务引用的这些和其他相关问题,我正在寻找服务引用的一个很好的替代方案。我已经看过ChannelFactory而且我最倾向于那个。这似乎是一个很好的解决方案。

然而问题是,有很多代码消耗这些服务,比如

BatchClient client = new BatchClient(); //Batchclient is  a proxy
batchData = client.GetBatchData(batchNumber)

因此,如果我进入ChannelFactory路径,我需要在整个项目中更新所有代码片段。由于变化的数量,团队对此选项不太满意。

我的问题是,是否还有其他更好的替代“添加服务参考”,可以使用最少的代码更改?或者有什么方法可以使用ChannelFactory而不影响exsting代码片段?

2 个答案:

答案 0 :(得分:1)

首先,我相信您可以通过创建自己的代理BatchClient来轻松修复“必须替换大量代码”问题,这将代理通道。它的工作方式与当前使用的生成代码基本相同。

然而在转移到无代理,合同共享模式之前,我真的会考虑你想要移动的原因。我不再使用生成的代码选项,主要是因为熟悉WCF所以没有必要。但是我相信WCF初学者更容易使用'添加服务参考...'模式,而且它根本不需要花费你。

问自己以下问题(或者更确切地说,向我解释):

  • 什么是部署开销?我没有看到任何。您生成的代理将在部署后运行。您更改了服务地址&配置文件中的行为。
  • 源代码管理问题/获取最新消息?这也不应成为问题。只需获取最新信息,并使用最新版本。如果服务已更改 - 并且您希望利用这些更改 - 如果您正在使用共享合同文件并实例化您自己的渠道,则需要获取最新版本的服务合同。
  • 更新代理?缺乏对代理如何工作,它是什么以及它做什么的熟悉可能会导致这种情况,但是如果没有代理,这又不容易。真的,你只需右键单击选择“更新服务参考”,对吗?

您正在考虑的模型是 clean ,并且可能允许更多的灵活性,但这并不简单。如果您的团队在维护生成的服务代理方面遇到问题,那么我将解决这些问题,而不是通过删除代理将它们放入WCF的深层。

答案 1 :(得分:0)

有些文章建议使用类ClientBase来达到同样的目的。

请参阅 a)https://aturcarablog.wordpress.com/2016/08/07/alternative-way-to-consume-wcf-service/

b)http://www.codeproject.com/Articles/412363/How-to-Use-a-WCF-Service-without-Adding-a-Service

因此,您的代码可以重写为:

2016-05-23, True
2016-05-24, True
2016-05-25, False
2016-05-26, True
2016-05-27, False
2016-05-28, False
2016-05-29, True