2009-10-15 31 views
0

我們有一系列Web服務,它們位於從Web應用程序,Web站點和其他服務訪問的不同環境(dev/qa/staging/production)中。還有幾個不同的服務領域。因此對於生產,我們在四個不同的盒子上提供服務。在不同環境中使用Web服務

我們通過檢查global.asax中的主機名並根據該主機名設置一些應用程序範圍設置來征服db連接字符串問題。在源代碼控制中有一個config.xml,它列出了各種主機名以及他們應該得到的設置。

但是,我們還沒有找到一個優雅的Web服務解決方案。到目前爲止,我們所做的是爲項目添加對所有環境的引用,並向使用這些服務的文件添加幾個使用語句。當我們籤的項目,我們取消對using語句適合我們的環境

它看起來是這樣的:

// Development 
// using com.tracking-services.dev 
// using com.upload-services.dev 

// QA 
// using com.tracking-services.qa 
// using com.upload-services.qa 

// Production 
// using com.tracking-services.www 
// using com.upload-services.www 

顯然爲我們使用網絡服務越來越多的這種技術將得到越來越繁重。

我曾考慮將名稱空間放入web.config.dev,web.config.qa等,並在global.asax中將應用程序啓動時換出。我不認爲這會起作用,因爲在global.asax運行時編譯已經完成,並且web.config更改不會有太大影響。

由於「最佳實踐」包括使用Web服務進行數據訪問,我希望這不是一個獨特的問題,而且有人已經想出了一個解決方案。

或者我們正在討論這個問題嗎?

編輯: 這些是asmx網絡服務。我可以找到web.config中沒有引用的url。

+0

爲什麼在不同的環境下,您的Web服務中有不同的命名空間?是不是在dev和qa和生產上部署了相同的二進制文件? – 2009-10-15 17:25:21

+0

不同的名稱空間是如何指定不同的URL。 Dev,QA和Production通常有不同的二進制文件,因爲任何變更都必須在Dev中開發,然後轉移到QA進行測試,最後推送到Production。所有三個二進制文件可能不同。 – 2009-10-15 18:12:16

+0

名稱空間不應該改變。這是一個重大錯誤。 – 2009-10-19 14:25:10

回答

1

製作一個參考並使用配置根據需要切換目標網址。沒有理由有獨立的代理。

+1

這聽起來像個好主意。呃...我該怎麼做? – 2009-10-15 18:13:21

+0

究竟如何取決於您正在使用哪種代理(ASMX vs WCF)。無論哪種情況,在創建代理時都會生成應用程序配置中的一些內容。根據需要調整網址。您可能必須將代理的動態屬性設置爲true並重新生成。如果你想這樣做,或者有自己的配置基礎設施,你通常也可以用代碼提供配置信息。 – 2009-10-15 18:43:25

相關問題