0

我正在計劃一個MVC應用程序,其中將有兩個變體;一個用於美國,一個用於歐洲。我無法預見到第三次(或第n次)部署會發生。MVC - 基礎解決方案VS分支源代碼控制

這兩個應用程序將共享幾乎相同的功能,但在模型,視圖和控制器中會有一些(相當)小的變化。

我們將使用實體框架和數據庫優先方法。

兩個選項我看到的是:

  1. 使用基本MVC解決方案,沿着每個部署的具體解決方案 - 擴展的基本模型,控制器的事件處理程序,有的仔細考慮局部視圖和捆綁的CSS & JS。

  2. 使用一個單一的解決方案對整個項目,但使用兩個版本控制(SVN)分支爲獨立部署

哪一個是這種類型項目的「適當」的做法?還是有第三種選擇?

UPDATE:一種替代解決方案,已經向我指出,將真正讓託管在Azure上/ AWS這一個單一的應用程序,並與根據該請求是否一些有條件的邏輯是從美國或製成EU主機頭。

回答

2

選項2將使應用增強更難。你必須在兩個地方使用它。如果任何一個分支不兼容,將會更糟,所以需要進行一些調整/修改。如果環境之間的差異很大,這將是有用的。

選項1更好。請注意,您將需要很好的計劃來設計部分CSS/JavaScript代碼。但是,通過這種設計,您將面臨代碼複製(這也發生在選項2中)。考慮以下代碼:

public void DoSomething(){ 
    // retrieve data 
    // specific code for EU/NA 
    // save data 
} 

這可以在retrieve datasave data導致重複。

有一些技巧可以解決這個問題,但我認爲最簡潔的方法是使用Dependency Injection。隨着DI和體面的DI容器(我在配置DI容器沒有經驗,所以我不能給你一些建議,其中之一是好的),你將有益處:

  • 可以處理重複的代碼,比如上面的例子
  • 可以定義一些配置文件更方便的配置和佈線,使維護更加方便
  • 可測試
+0

謝謝,我會記住這個裸露。 – Phil

相關問題