2008-09-19 50 views
3

我們要保持3個Web服務部署的不同步驟分開的web服務,但我們如何在我們的應用程序,它的服務使用定義?我們只是維護3個Web引用,並且如果以某種方式使用它們?你如何保持開發/臺/生產

回答

4

正如其他人所提到的,您希望將這些信息存儲在配置文件中。事實上,我建議爲每個環境使用不同的配置文件。這將解決針對每個環境具有多個設置的不可避免的問題,例如,您可能有單獨的Web服務URL和Web服務端口設置,或者有一些額外的設置來處理https /安全性。

一切都表示,一定要解決這些潛在的問題:

如果Web服務做任何事情的應用尤其重要,你可能希望在每個環境嫁給應用到Web服務(即有一個版本的你的應用程序在每個環境中)。當然,當你這樣做時,對界面的任何更改都會更容易。

確保它是有目共睹的人哪個版本與您通話的網絡服務。

10

不要維護代碼中的差異,而是通過配置文件。這樣,它們都運行相同的代碼,只是用不同的配置值(即端口綁定到,主機名來回答,等)

+0

或運行在不同的主機上。 sys-dev.company.com sys-test.company.com等 – Aaron 2008-09-19 20:48:36

3

我的建議是保持配置文件信息的應用。更好的做法是在構建過程中將給定環境的適當值注入到配置中,假設構建過程具有某種宏替換功能。通過這種方式,您可以爲給定環境創建目標版本,而不必在每次爲不同環境構建時更改配置。

0

將服務地址和端口放入應用程序的配置中。在服務配置中至少對端口執行相同的操作可能是一個好主意,以便您的開發服務在正確的端口上進行偵聽。這樣你不必修改你的代碼就可以改變你正在訪問的服務器/端口。

使用配置,而不是代碼開發,階段之間的切換,以及生產測試非常有價值的。當您部署到生產環境時,您需要確保您部署的是相同的測試代碼,而不是稍有不同。你應該在開發和生產之間切換的是配置。

1

所有可以從dev切換到測試的東西都必須是可配置的。如果你有能力建立一個在你的產品安裝過程中更新這些變量的過程 - 那就做吧。 (烘烤定製到構建似乎是一種劣質的想法 - 你結束了一羣不同的不相容的建立爲同一版本的源代碼)

0

而是使用Web引用,生成基於Web服務使用WSDL的wsdl.exe代理類。生成的類將具有一個Url屬性,可以根據部署步驟(dev,qa,production等)進行設置。

2

當我在與Web服務器的一個項目最後的工作中,我們處理了這個問題,如下所示:

  • msbuild /t:deploy將建立&部署到部分被團隊共享的測試環境,並部分開發-具體。 $(SERVER)的默認值是$(USERNAME)
  • msbuild /t:deploy /p:server=test將部署到共享測試環境,非開發人員可以查看。
  • msbuild /t:deploy /p:server=live將部署到活服務器。我想我加了一個額外的握手,就像一個錯誤,除非你有/p:secret=foo,只是爲了確保你不會偶然這樣做。