我正在努力帮助一个项目团队通过修复一些痛点来简化他们的工作。
他们在代码中遇到的一个难点是,他们通过服务引用(代理)使用WCF服务[即Visua Studio 2008中的“添加服务引用”。这会产生很多问题,包括部署开销,Souce Control获取更新代理等的最新相关问题。
为了处理服务引用的这些和其他相关问题,我正在寻找服务引用的一个很好的替代方案。我已经看过ChannelFactory而且我最倾向于那个。这似乎是一个很好的解决方案。
然而问题是,有很多代码消耗这些服务,比如
BatchClient client = new BatchClient(); //Batchclient is a proxy
batchData = client.GetBatchData(batchNumber)
因此,如果我进入ChannelFactory路径,我需要在整个项目中更新所有代码片段。由于变化的数量,团队对此选项不太满意。
我的问题是,是否还有其他更好的替代“添加服务参考”,可以使用最少的代码更改?或者有什么方法可以使用ChannelFactory而不影响exsting代码片段?
答案 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