我們有一系列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。
爲什麼在不同的環境下,您的Web服務中有不同的命名空間?是不是在dev和qa和生產上部署了相同的二進制文件? – 2009-10-15 17:25:21
不同的名稱空間是如何指定不同的URL。 Dev,QA和Production通常有不同的二進制文件,因爲任何變更都必須在Dev中開發,然後轉移到QA進行測試,最後推送到Production。所有三個二進制文件可能不同。 – 2009-10-15 18:12:16
名稱空間不應該改變。這是一個重大錯誤。 – 2009-10-19 14:25:10