ASP.NET MVC 3 - 处理多个域并共享单个代码库

时间:2011-07-30 23:31:40

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing multi-tenant

我一直想知道几天来做这件事的最好方法,并想知道其他人的想法。

我们希望将所有公司网站重建并升级到ASP.NET MVC 3并使用通用模板(大多数);我们已经在MVC 3中有一个站点,它将成为其他站点的供应站点。

起初我只是复制/粘贴项目,用与每个站点相关的内容替换所有内容并完成它,但这将使更新模板/样式表/帮助器在以后更加困难 - 我们只有少数几个网站,所以这不是一个大问题。

创意1

我认为我想做的是拥有一个包含所有网站的单个项目,可能会按区域分开以保持它们分离,并使用路由将请求发送到各个域到正确的位置并构建链接指向正确的域。

这符合我们计划将所有网站链接在一起的方式 - 基本上是列出各个公司的所有网站共有的菜单,这些链接到包含与该特定公司相关的项目的子菜单的公司域

这是变得棘手的地方,因为我需要在域级别进行路由 - 所以不要路由到当前域上的company2控制器(例如http://www.groupcompany.ex/company2)我想路由请求company2自己的域 - http://www.company2.ex/{controller}/{action}/{id}

创意2

或者,我可以在一个解决方案中为每个站点创建项目,并拥有一个包含任何帮助程序,CSS和JavaScript等的公共项目。

关于我应该采取哪种方式,以及我的建议是否完全疯狂的任何想法? (可能就是这种情况)。

1 个答案:

答案 0 :(得分:7)

这是一个常见的请求。您所询问的是多租户。到目前为止,我不知道如何在MVC中实现多租户。可能有很多解决方案,因为有人问到这个问题。

我也没有解决这个问题。但是,有很多博客条目涉及到这一点。例子包括:

http://weblogs.asp.net/zowens/archive/2010/05/26/multi-tenant-asp-net-mvc-introduction.aspx

http://codeofrob.com/archive/2010/02/01/multi-tenancy-in-asp.net-mvc-why-do-we-want-to.aspx

我认为这在某种程度上需要构建到框架中。希望这种情况发生,或者至少有人想出一个优雅的解决方案。