【问题标题】:How to create a modul system for a cms?如何为 cms 创建模块系统?
【发布时间】:2010-02-15 15:16:49
【问题描述】:

我正在构建一个 CMS (ASP.NET C#),我目前正在研究如何实现一个模块系统。网络上的大多数模块化系统是如何完成的?最重要的是我不希望模块与任何核心文件发生冲突。

案例示例: 我有一个使用名为 Search 的 web 服务方法的 ajax 搜索方法;模块如何将其搜索结果“添加”到结果列表中?如果核心搜索只搜索网页,我希望搜索也搜索电子商务模块中的产品,它如何将产品搜索及其内容添加到原始搜索方法的返回列表中?这可能吗?

我一直在研究反射,它似乎对在内核中运行模块代码很有用,对吗?

我对这类东西没有经验,因此非常感谢您朝正确的方向推进,和/或链接/指南/提示。

【问题讨论】:

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


    【解决方案1】:

    您正在寻找的内容听起来很像基于插件的架构。我会研究一些不同的开源项目,看看他们是如何做到的,找到与您想做的最相似的项目,然后使用他们的方法来设计您的 CMS。

    最大的基于插件的开源项目之一是Eclipse,但我也会看看其他一些。

    您也可以在 Google 上搜索“组件模式”、“模块模式”和“插件模式”。

    【讨论】:

    • 我有一种轻微的感觉,如果我在像 eclipse 这样的大型项目中环顾四周,我会在黑暗中蹒跚而行:) 谷歌搜索确实为我提供了一些起点,ty :)
    【解决方案2】:

    我总体上同意 Topher。

    在 ASP.NET 的上下文和您提供的示例中,我认为最好的方法是让您的所有模块实现自己的搜索逻辑,并通过方法公开它。然后搜索结果会调用该方法从系统中所有实现搜索的组件/模块中获取结果。

    通常,您应该为核心系统提供某种框架,并且应该抽象组件(通用功能的接口)。一个简单的经验法则是“组件被调用,而框架调用组件”。

    由于搜索的实现会因组件而异,因此实现它是组件的工作,而调用实现则是框架的工作。

    作为结束说明,我认为您应该在开始考虑具体示例之前为整个系统建立一个架构,正如 Topher 所说。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2013-11-24
      相关资源
      最近更新 更多