0

鉴于代码是自动生成的并且我不想更改它(例如添加基类),是否可以在工厂模式中使用 Web 服务?

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

[编辑]
我正在使用 C# 3。

4

1 回答 1

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 服务的 URL/URI/目标。显然,它必须具有相同的合约/参数/方法签名,否则调用将在运行时失败。
  • 打电话
于 2010-09-11T14:58:12.187 回答