1

我正在尝试使用单个代码库运行多个站点,并且代码库由以下模块(即类)组成

  • 用户模块
  • 问答模块
  • 常见问题模块

并且每个类都适用于 MVC 模式,即它包括

  • 实体类
  • 助手类(即静态类)
  • 视图(即页面和控件)

假设我有 2 个站点site1.comsite2.com。我正在尝试实现以下功能

  • site1.com 可以启动并运行用户、问答和常见问题模块
  • site2.com 可以在 Faq 模块关闭时启用用户和问答模块,但如果需要可以打开它,所以我在这里的查询是实现此类功能的最佳方法是什么

我是否引入了一个标志位,我检查每个页面和属于该模块的控件?它更像 CMS,您可以在其中打开/关闭不同的功能。我正在努力解决这个问题,请给我一个例子或指出我是否采取了错误的方法。

4

2 回答 2

2

您可能想查看便携式区域。您可以设计代码库,使每个模块都是一个区域,然后在需要时将它们部署到站点中。

于 2012-10-17T13:14:56.023 回答
2

在查看了一些示例和广泛的研究之后,我得出一个结论,它取决于两种情况:

场景 1: 如果只有十个可能的模块被编写一次并且如果需要更新它们需要整个应用程序的整个更新,那么您可以轻松地使用将通过模型传播并被使用的检查用于调整用户界面的视图(例如,通过在 Web 应用程序菜单中显示或不显示适当的链接)。

场景 2: 相反,如果有许多开发人员开发的许多模块的情况,并且要求更新整个 Web 应用程序以更新任何此类模块是不可接受的,则查找插件模型,例如FogBugz中使用的一种。

为了做出选择,请考虑以下按重要性排序的元素:

  • 可维护性:是否可以通过修改 Web 应用程序的通用代码来更改任何模块?

  • 依赖关系:某些模块是否依赖于其他模块?

  • 性能:由于我们不知道确切的上下文,因此很难尝试预测每个解决方案的影响。如果你使用重的、设计巧妙的缓存,也许不会有。

  • 整体架构:如果有理由做一些单一的事情(因为相互依赖),第一个解决方案似乎更合适;如果每个模块都与其他模块严格分开,则情况并非如此。

于 2012-10-28T07:58:52.670 回答