我们可以在C#中动态添加删除命名空间引用(usings)

时间:2012-09-17 10:48:25

标签: c# asp.net wcf web-services

我需要根据运行时评估的某些条件调用WCF服务1或WCF服务2。这两种服务都很相似,但托管在不同的服务器上。

我添加了两个服务引用,NS1和NS2指向不同的URL。当前代码已使用NS1。考虑到NS1的实现已经在许多地方完成。什么是重构代码,动态选择必须调用哪些服务的最佳方法?

1 个答案:

答案 0 :(得分:1)

通常,直接针对svcutil.exe生成的代理进行编程被认为是一种不好的做法。

最好的方法是将它包装在您自己的类中,并在每次需要服务时引用此类。这还将允许您实现更高级的业务逻辑,例如路由(在您的情况下)和其他交叉问题。 例如:您现在可以从应用程序中抽象出用于连接服务的策略,即服务引用或ChannelFactory。您可以轻松地在不同程序集之间共享服务,而不会产生歧义。

您说您有很多代码直接针对NS1编写。磨牙并包裹它。这是很多肮脏的工作,但风险很低。

说完上面的内容后,我想知道需求本身,服务在另一台服务器上调用自己的另一个实例(如果我找到你的话)。这闻起来很有趣,你想解决的问题是什么?