如何组织我的新项目我处于两难境地。
目前,我有一个以MVC C#编码的杂志风格网站,其中每个页面都有一个带有一组视图的自己的控制器。在控制器后面,我们有一个服务层(作为一个单独的项目)来访问数据库。大多数业务逻辑都在服务层中,其中包含控制器中的一些业务逻辑
我们计划推出一个新网站,该网站将使用第一个网站数据库的副本,95%的功能与第一个网站相同,但视图/ css完全不同。
我们有一个非常紧迫的截止日期,我们希望尽可能多地重用现有代码,并使两个网站都易于维护。
据我所知,我们有两种选择:
要为第二个网站创建一个新项目,我们需要从头开始重新编写所有控制器
向现有网站添加一组新视图,并根据配置开关显示基于第一或第二站点网址的不同视图。
第一种方法更清洁,但也会产生大量重复代码,可能是维护噩梦。
第二种方法将使用相同的控制器(对于5%的不同功能,可能使用双倍方法)。
这样做有三分吗?
感谢
答案 0 :(得分:2)
最后,我决定通过DisplayMode实现自定义视图
DisplayModeProvider.Instance.Modes.Insert(0, new NewSiteDisplayMode()
{
ContextCondition = context => IshkaDisplayMode.IsNewSite(context.Request)
});
现在,如果我需要新网站的自定义视图,我只需创建现有视图的副本,将NewSite添加到名称中并将特定HTML放入其中。
干杯
答案 1 :(得分:1)
如果对业务逻辑的更改很小并且可以保持兼容,我会使用方法2.
实际上有第三种方法,即为v2创建源控制分支。您可以继续维护v1并在必要时将更改集成到v2。然而,随着时间的推移,随着您的网站的漂移,这些集成将变得更加困难。因此,只有在你有明确的截止值来摆脱v1时,这种方法才适用。
根据对数据模型的更改,您可能还需要能够对数据访问代码进行版本控制。
答案 2 :(得分:1)
詹姆斯
您可以使用软件分支,基于主干的开发。
您的第二种方法很聪明,您只需创建新视图和网站的其余部分(包括业务逻辑),服务器验证就像魅力一样。
事实上,这是MVC开发的纯粹本质。