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

ASP.NET MVC 3-处理多个域并共享单个代码库,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,multi-tenant,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,Multi Tenant,这几天我一直在想最好的方法是什么,想知道其他人是怎么想的 我们希望重建和升级所有公司网站到ASP.NET MVC 3,并在所有网站上使用通用模板(大部分);我们已经在MVC 3中有一个站点,它将是其他站点的捐赠站点 起初,我打算复制/粘贴项目,用与每个网站相关的内容替换所有内容,然后用它来完成,但这将使将来更新模板/样式表/帮助程序更加困难-我们只有少数几个网站,所以这不是一个大问题 想法1 我想我想做的是有一个包含所有网站的单一项目,可能按区域分开,使它们分开,并使用路由将请求发送到各个域到正

这几天我一直在想最好的方法是什么,想知道其他人是怎么想的

我们希望重建和升级所有公司网站到ASP.NET MVC 3,并在所有网站上使用通用模板(大部分);我们已经在MVC 3中有一个站点,它将是其他站点的捐赠站点

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

想法1

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

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

这就是问题所在,因为我需要在域级别进行路由,而不是路由到当前域上的company2控制器(例如
http://www.groupcompany.ex/company2
)我想将请求路由到公司2自己的域-
http://www.company2.ex/{controller}/{action}/{id}

创意2

或者,我可以在单个解决方案中为每个站点创建项目,并拥有一个公共项目,该项目承载任何助手、CSS和JavaScript等


我该怎么做,我的建议是否完全疯狂?(很可能是这样)。

这是一个常见的请求。你所问的是所谓的多租户。到目前为止,我还不知道如何在MVC中实现多租户。解决方案的数量可能与被问到的问题数量一样多

我也没有把这个问题解决得令我满意。然而,有许多博客文章都涉及到这一点。例子包括:


这是我认为需要在某个时候构建到框架中的东西。希望这会发生,或者至少有人提出了一个优雅的解决方案。

谢谢你的回答-当我一直在寻找这个问题时,多租户出现了很多。从阅读您的第二个链接来看,它似乎几乎解决了我们的问题,但我不确定它是否完全解决了问题-它似乎主要集中在为不同的用户定制单个产品,而我们主要希望有一个完全独立的网站,为他们提供不同的视图和控制器(除了常见功能,如联系人表单等)。我在子域级别上看到了很多关于路由的问题,但在完整域级别上看到的问题并不多。。搜索还在继续。@akiller你的“搜索”有什么好结果吗?第一个链接有点旧(重点是MVC1/MVC2——尽管我怀疑转换为MVC3并不困难)。博客作者似乎放弃了另一个框架的第二个链接(这让我怀疑他的解决方案和/或需求不起作用)。@REMESQ我最终放弃了,只是为实用程序功能添加了一个通用MVC助手项目,并在我们的主域中添加了共享CSS/图像文件,并从我们的每个站点布局页面链接到它们。布局文件等仍然有相当多的重复,但需要大量的维护。也许看看施密特在我最初的问题下的评论?@akiller我认为你的解决方案是解决这个问题的最好办法。不是真正的“多租户”或路由到子域,但可能是处理布局/css的最简单方法。这些领域似乎真的适合这项任务,但我没有任何运气。我有带有助手函数/扩展的项目,因此导入名称空间很容易。我很难弄清楚如何使用公共css(base.css),然后我可以使用特定的.css来创建一个站点,以及如何使用公共布局。现在我的搜索继续…:)此多租户体系结构能够支持多少子域?假设我们有一个子域,它将访问特定于该子域的数据库,但只访问单个代码库。这是一个可行的解决方案,其中我们有大约2K的子域,将从单个代码库提供服务?请提供指导和建议。我们在这里有一套特定的约束条件: