【问题标题】:Factory pattern for test and live web services用于测试和实时 Web 服务的工厂模式
【发布时间】:2010-09-11 14:54:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: web-services factory-pattern


    【解决方案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/目标。显然,它必须具有相同的合约/参数/方法签名,否则调用将在运行时失败。
    • 拨打电话

    【讨论】:

    • 感谢您的回复,我不清楚在使用网络参考时这将如何工作。我是否创建 1 个 Web 引用并在运行时更改 URL?
    • @DaveC:是的,你只需要做一次网络参考。如果我们谈论的是 .NET,那实际上只是让代理类抽象 HTTP 细节。所以是的,只需一次,并在 webmethod 调用之前在运行时更改 URL 端点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2019-12-26
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多