C# MVC项目-两个站点相同的控制器
如何组织我的新项目,我左右为难 目前,我有一个杂志风格的网站,用MVC编码,每个页面都有一个自己的控制器和一组视图。在控制器后面,我们有一个用于访问数据库的服务层(作为一个单独的项目)。大多数业务逻辑位于服务层,一些业务逻辑位位于控制器中 我们计划推出一个新网站,该网站将使用第一个网站数据库的副本,其95%的功能与第一个网站相同,但视图/css完全不同 我们有一个非常紧迫的最后期限,我们希望尽可能地重用现有的代码,并使这两个网站超级容易维护 据我所知,我们有两种选择:C# MVC项目-两个站点相同的控制器,c#,asp.net-mvc,C#,Asp.net Mvc,如何组织我的新项目,我左右为难 目前,我有一个杂志风格的网站,用MVC编码,每个页面都有一个自己的控制器和一组视图。在控制器后面,我们有一个用于访问数据库的服务层(作为一个单独的项目)。大多数业务逻辑位于服务层,一些业务逻辑位位于控制器中 我们计划推出一个新网站,该网站将使用第一个网站数据库的副本,其95%的功能与第一个网站相同,但视图/css完全不同 我们有一个非常紧迫的最后期限,我们希望尽可能地重用现有的代码,并使这两个网站超级容易维护 据我所知,我们有两种选择: 要为第二个网站创建一个新项
谢谢如果对业务逻辑的更改很小,并且您可以保持它的兼容性,我将使用方法2 实际上还有第三种方法,那就是为v2创建一个源代码管理分支。您可以继续维护v1,并在必要时将更改集成到v2。然而,随着时间的推移,随着站点的漂移,这些集成将变得更加困难。因此,只有当您有一个明确的截止点来摆脱v1时,这种方法才适用 根据对数据模型的更改,您可能还需要能够对数据访问代码进行版本设置。 您可以使用基于主干的软件分支开发 你的第二种方法是聪明的,你只需要创建新的视图和网站的其他部分,包括业务逻辑,服务器验证就会像魅力一样工作
事实上,这是MVC开发的精髓。最后,我决定通过DisplayMode实现自定义视图
DisplayModeProvider.Instance.Modes.Insert(0, new NewSiteDisplayMode()
{
ContextCondition = context => IshkaDisplayMode.IsNewSite(context.Request)
});
现在,如果我需要一个新网站的自定义视图,我只需创建一个现有视图的副本,将NewSite添加到名称中,并将特定的HTML放入其中
干杯