通过编译标志寻找合适的设计,两种不同的Web服务

时间:2011-05-27 07:26:18

标签: c# .net web-services design-patterns

我有两个Web服务,例如:

void LOG(string , string ,out int)
int LOG(string ,string)

其中一个用于生产,一个用于测试。

在这种情况下最好的做法是什么,如何在代码中写得更漂亮...... 而不是在我的主要代码中发表丑陋的#IF #ELSE语句。

第一个是生产一个,第二个是测试版。 两个版本的功能相同。 我从原始Web服务获得WSDL文件之间的区别,我使用了wsdl.exe yourFile.wsdl /l:CS /serverInterface并获得了我的测试服务,但是当我添加它作为我的应用程序的参考时,我有一个不同的代理和函数签名有点不同。不明白为什么。

1 个答案:

答案 0 :(得分:2)

  

但是当我把它作为参考添加到我的   应用程序我有一个不同的   代理和功能签名   有点不同。不知道为什么

我认为这是为了避免Web服务客户端类中具有相同签名的两种方法。 如果我说得对,那么你有两个带有一个界面的webservice实例。那么您不需要为项目添加两个引用。 只需将web-service的位置指定为实例化的参数,而不是使用无参数构造函数。

<强>更新 从技术上讲(因为你用“设计模式”标记它)你可以使用策略模式进行调用以及依赖注入。 但是如果这些w / s实例完全相同,我建议你找出这些WSDL或生成的客户端代码有什么问题。问题在于生成存根,而不是代码优雅。