2013-07-16 207 views
2

作爲分離生產環境和開發環境的最佳實踐,您會推薦什麼,但是從代碼本身的角度來看。區分生產和開發環境

示例:想象使用Active Directory的應用程序,該應用程序應僅基於域控制器進行身份驗證,而不考慮Windows中的本地用戶和組設置。 對於生產環境,代碼應忽略本地用戶和組,以避免出現安全漏洞。對於開發環境(開發機器,構建機器...),應該允許這些本地設置更容易開發/測試(可以說爲測試設置域控制器有點昂貴,並且本地組參與可以很容易地進行更改,以便開發人員可以測試不同的測試用例)。

我在這裏陳述的具體例子並不重要,因爲任何類似的應該在實際生產中啓用/禁用的情況可能發生的情況是重要的。另外,請記住,我不是在討論爲應用程序提供不同的配置文件,因此開發環境的設置應該以某種方式完全隱藏,因爲這會導致一些非常嚴重的安全問題)。

+1

我建議使用編譯器指令(#if ... #endif)的醜陋但安全的想法,併爲開發/生產構建使用適當的編譯符號。 –

+0

在我的場景中,我有一個web.config文件和兩個轉換文件,一個用於發佈,一個用於調試。在調試文件內部,認證模式被設置爲表單,在發佈文件中,它被設置爲windows認證。 – gustavodidomenico

+0

你可以檢查身份驗證模式:http://stackoverflow.com/questions/91831/detecting-web-config-authentication-mode – gustavodidomenico

回答

1

一個明顯的選擇將是通過IoC pattern - 這樣一來,可以替代真實身份驗證的模擬一個,在適當時候這樣做(同樣,使用真實的,根據需要)

+0

是的,但是在哪裏配置(註冊)我們想要使用哪個實現;我的意思是在這種情況下如何區分生產和發展環境? –

+1

爲什麼不在你的app.config中定義它?沒有必要將包含「開發者使用」模塊的程序集部署到您的客戶。 –