MVC - 基础解决方案Vs Branched源代码控制

时间:2013-07-05 12:22:55

标签: asp.net-mvc visual-studio design-patterns version-control

我正在计划一个MVC应用程序,其中将有两个变体;一个用于美国,一个用于欧洲。我无法预见第三次(或第n次)部署会发生。

这两个应用程序将共享几乎相同的功能,但在模型,视图和控制器中有一些(合理的)小变化。

我们将使用Entity Framework和数据库优先方法。

我看到的两个选项是:

  1. 使用基础MVC解决方案,以及针对每个部署细节的解决方案 - 扩展基础模型,Controller事件处理程序,一些经过仔细考虑的部分视图和捆绑的CSS& JS。

  2. 对整个项目使用单一解决方案,但为单独部署使用两个版本控制(SVN)分支

  3. 这类项目中的哪一种是“正确的”方法?或者有第三种选择吗?

    更新:已向我指出的一个替代解决方案是实际在Azure / AWS上托管这个单一应用程序,并根据请求是否已制定一些条件逻辑来自美国或欧盟的主机头。

1 个答案:

答案 0 :(得分:2)

选项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容器方面缺乏经验,所以我不能给你一些建议哪个好),你将获益:

  • 可以处理重复的代码,例如上面的例子
  • 可以定义一些配置文件,以便于配置和布线,使维护更容易
  • 可测试