我正在计划一个MVC应用程序,其中将有两个变体;一个用于美国,一个用于欧洲。我无法预见第三次(或第n次)部署会发生。
这两个应用程序将共享几乎相同的功能,但在模型,视图和控制器中有一些(合理的)小变化。
我们将使用Entity Framework和数据库优先方法。
我看到的两个选项是:
使用基础MVC解决方案,以及针对每个部署细节的解决方案 - 扩展基础模型,Controller事件处理程序,一些经过仔细考虑的部分视图和捆绑的CSS& JS。
对整个项目使用单一解决方案,但为单独部署使用两个版本控制(SVN)分支
这类项目中的哪一种是“正确的”方法?或者有第三种选择吗?
更新:已向我指出的一个替代解决方案是实际在Azure / AWS上托管这个单一应用程序,并根据请求是否已制定一些条件逻辑来自美国或欧盟的主机头。
答案 0 :(得分: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容器(我在配置DI容器方面缺乏经验,所以我不能给你一些建议哪个好),你将获益: