【问题标题】:Plugin system with MVC3, Razor and C#带有 MVC3、Razor 和 C# 的插件系统
【发布时间】:2011-11-24 10:22:54
【问题描述】:

我对 MVC3 相当不错,并且喜欢用它来创建我的网站,但是,我还没有想出并实现一个体面的“插件”系统方法。

基本上,我的目标是拥有一个通用的“博客类型”CMS,我可以在我的网站上分发它,但可以选择将某些东西作为插件。

例如:

通用构建:

  • 用户区
  • 基本的博客/新闻编辑

插件:(可能一两个站点都需要,但不是全部)

  • 聊天室插件
  • 统计数据
  • 等等……

目前我只是通过配置文件完成所有操作并禁用某些东西,但是如果我可以将一个文件夹放入我的 FTP 并有一个 MVC 页面自动拾取它,那就太好了!

我假设我必须首先扫描目录“/plugins”并选择一个包含基本详细信息的“plugin.config”(或类似)文件。

但是我怎样才能让我的主系统拾取这些东西并实际使用它们呢?!

【问题讨论】:

  • 这怎么没有出现在我最初的搜索中!很棒的东西!
  • 制作插件架构是我尝试过使用 ASP.NET 以及后来使用 ASP.NET MVC - 它始终是 PITA - 小心行事并尝试感受在你花太长时间之前吃 PITA :)
  • 您是否考虑过使用已经支持插件的CMS?例如果园:orchardproject.net
  • 我做了,但由于系统的性质,定制现有的 CMS 需要更长的时间

标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor


【解决方案1】:
【解决方案2】:

尝试使用 StructureMap 依赖注入进行程序集扫描。

【讨论】:

    【解决方案3】:

    阅读这篇精彩的教程:ASP.NET MVC2 Plugin Architecture Tutorial

    它帮助我使用 MVC3 创建插件架构。

    【讨论】:

      【解决方案4】:

      如果您拥有原始项目/程序集中的所有内容,则可以为您解决问题。您可以编写插件系统以允许插件注册自己的区域,或者您可以在自定义 Razor 视图引擎中注册一些新的视图搜索路径。

      我为我最近编写的一个名为 Spruce 的操作系统项目选择了后者,它使用了一个完整的插件架构,您可能会发现它可以作为参考。

      您可以在启动时扫描 bin 目录中的所有程序集以通过反射检查插件。您通常检查实现接口或从类继承的类型,并将它们与 IoC 容器一起使用,例如 TinyIoc、NInject、StructureMap 或 Unity。我推荐 NancyFX 使用的 TinyIoC。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多