【问题标题】:How to turn on/off code modules?如何打开/关闭代码模块?
【发布时间】:2012-10-07 18:08:56
【问题描述】:

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

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

每个类都适用于 MVC 模式,即它由

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

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

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

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

【问题讨论】:

    标签: c# asp.net-mvc module content-management-system code-reuse


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在查看了一些示例和广泛的研究后,我得出一个结论,它取决于 2 个场景:

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

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 2020-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多