2010-09-11 64 views
0

假设代码是自动生成的并且我不想改变它(例如添加一个基类),Web服务可以在工厂模式中使用吗?测试和实时Web服务的工厂模式

这样做的原因是,如果您有两个相同的Web服务,但一个用于测试数据,一个用于实时数据,并且您希望基于代码运行的环境在服务之间切换。

[编辑]
我使用C#3

回答

1

如果您正在使用C#和SOAP,你可以在运行时更改目的地:

var webSvc = new WebServerObjectName(); 
webSvc.Url = "http://examples/com/foo.asmx"; 

//or pull from .config, etc. 
webSvc.Url = ConfigurationManager.AppSettings["WebServiceUri"].ToString(); 

//make the call to the web method 
var custs = webSvc.GetCustomerList(); 

,流量为:

  • 在设计时,请使用Web引用。建立合同,并为其编写代码(输入&输出参数)。只要合同保持不变,您只需制作一次。
  • 在运行时,更改Web服务的URL/URI /目标。显然它必须具有相同的合同/参数/方法签名,否则调用将在运行时失败。
  • 拨打电话
+0

感谢您回复,我不是这将如何使用Web引用时工作明确。我是否创建1个Web引用并在运行时更改URL? – DaveC 2010-09-11 17:14:06

+0

@DaveC:是的,你只需要做一次网页参考。如果我们谈论.NET,那真的只是让代理类来抽象HTTP细节。所以是的,只需要一次,并在webmethod调用之前在运行时更改URL端点。 – 2010-09-11 18:32:06