具有MVC3,Razor和C#的插件系统

时间:2011-11-24 10:22:55

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

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

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

例如:

通用构建:

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

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

  • 聊天室插件
  • 统计
  • 等......

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

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

但是我如何让我的主系统选择这些东西并实际使用它们?!

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

我选择后者用于我最近写的一个名为Spruce的操作系统项目,它使用了一个你可能会觉得有用的整个插件架构。

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