用于测试和实时 Web 服务的工厂模式

发布于 2024-09-18 12:22:23 字数 169 浏览 2 评论 0原文

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

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

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

Can web services be used in a factory pattern given that the code is auto-generated and I do not want to alter it (to add a base class for example)?

A reason to do this would be if you had 2 web services that were identical but one was for test data and one was for live data and you wanted to switch between the services based on the environment the code was runnig in.

[Edit]
I am using C# 3.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

擦肩而过的背影 2024-09-25 12:22:23

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

If you're using C# and SOAP, you can change the destination at runtime:

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();

The flow would be:

  • at design-time, make the web reference. Establish the contract, and code for it (input & output params). You'll only need to make it once, as long as the contract stays the same.
  • at run-time, change the URL/URI/target of the web service. Obviously it would have to have the same contract/params/method signature, otherwise the call would fail at runtime.
  • make the call
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文