0

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

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

我们将使用具有数据库优先方法的实体框架。

我看到的两个选项是:

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

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

对于此类项目,哪些是“正确”的方法?还是有第三种选择?

更新:向我指出的另一种解决方案是,实际上将这个单一的应用程序托管在 Azure/AWS 上,并根据请求是来自美国还是欧盟的主机标头,使用一些条件逻辑。

4

1 回答 1

2

选项 2 将使应用增强变得更加困难。您必须在 2 个地方应用它。如果任一分支不兼容,情况会更糟,因此需要进行一些调整/修改。如果环境之间的差异很大,这将很有用。

选项1更好。请注意,您需要良好的计划来设计部分 CSS / javascript 代码。但是,使用这种设计,您将面临代码重复(这也发生在选项 2 中)。考虑这段代码:

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

这可能导致 和 中的retrieve data重复save data

有一些技巧可以处理这个问题,但我认为最干净的方法是使用Dependency Injection. 使用 DI 和像样的 DI Container(我对配置 DI Container 没有经验,所以我不能给你一些建议哪个好),你将受益:

  • 可以处理重复的代码,例如上面的示例
  • 可以定义一些配置文件以便于配置和接线,使维护更容易
  • 可测试
于 2013-07-08T05:44:09.650 回答