0

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

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

4

1 回答 1

1

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

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

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

说了上面的话,我想知道需求本身,服务在另一台服务器上调用它自己的另一个实例(如果我没听错的话)。这闻起来很有趣,您要解决的问题是什么?

于 2012-09-17T10:59:44.217 回答