可以为多个站点的子域使用一个代码库吗?

时间:2012-03-30 13:01:16

标签: asp.net-mvc-3 subdomain codebase

我甚至不知道这是否可能,但我想我会问。

我正在创建一个小型CRUD应用程序,但我有多个站点。每个站点都将使用CRUD。该应用程序将具有常见的CRUD方法和样式,但每个单独的站点将应用不同的表单。我想避免创建多个仅在特定内容(只是不同形式)中变化的CRUD应用程序。

我希望有这样的东西:

mycrud.website1.com
mycrud.website2.com
mycrud.website3.com

我可以为每个网站创建一个子域名没问题。但是将所有子域指向一个MVC应用程序目录是否可行?如果可能有任何关于我如何限制来自website1的用户看到website2或website3内容的建议?这是“角色”可以处理的事情(在验证用户之后)吗?

感谢。

2 个答案:

答案 0 :(得分:1)

有很多网站都是这样做的,而不仅仅是MVC。某些内容服务器场将* .mydomain.com指向单个IP,并在IIS中具有通配符映射。

从那里,您的应用程序应该查看URL以确定它应该做什么。一些CMS系统以这种方式运行,使用域作为决定加载哪些页面的关键。

我已经构建了一个私有的可应用SAS应用程序(软件即服务),它允许我们在一个应用程序中托管所有客户端。某些客户端具有页面或功能的自定义。我们可以通过为每个客户端创建自定义插件来解决这个问题,这些插件可以在需要时覆盖控制器或视图。

所有客户共享一个公共代码库,除了每个客户端自定义主题/模板外,它们都是相同的。只有当客户让我们自定义一个功能时,我们才需要构建他们的插件DLL。现在,这是高级的东西,因此它需要对您的代码库进行大量修改,但最终如果它是您的应用程序需要它是100%可能。

答案 1 :(得分:0)

首先 - 简单的部分是为所有三个域提供一个网站。您只需使用DNS条目即可完成此操作。没问题。所有三个域都应指向相同的IP。

就内容而言,您可以通过多种方式实现这一目标。我认为你对角色的看法非常可靠。如果有必要,它还会打开给定用户查看site1和site2内容的可能性。

如果您不想强制用户进行身份验证,您应该查看其他选项。您可以将CRUD逻辑和数据访问逻辑包装到单独的库中,并在IIS中的三个不同站点中使用它们。您可以拥有一个站点并根据请求URL显示内容。可能还有很多其他选择。