2010-09-11 68 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