如何打开/关闭代码模块?

时间:2012-10-17 13:10:16

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

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

  • 用户模块
  • Q&一个模块
  • 常见问题模块

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

组成
  • 实体类
  • 助手类(即静态类)
  • 查看(即页面和控件)

假设我有2个网站 site1.com site2.com 。我正在努力实现以下功能

  • site1.com可以拥有用户,Q& A和Faq模块启动并运行
  • site2.com可以拥有用户和Q& Faq模块关闭时模块正常运行,但如果需要可以打开,所以我的查询是实现这种功能的最佳方式

我是否会在每个页面上引入一个标志位并控制属于该模块的控件?它更像CMS,你可以打开/关闭不同的功能。我试图了解它,请提供一个例子,或指出我是否采取了错误的方法。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

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

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

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

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

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

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