应用程序插件系统

时间:2010-10-10 15:41:32

标签: c# asp.net-mvc reflection plugins

我正在编写一个ASP.NET MVC 2应用程序,开发人员可以使用插件扩展它。我开始考虑如何创建一个插件系统。 (例如像Joomla的那样)

我对如何做到这一点有些怀疑。我在网上搜索过,发现有两种可能的解决方案。

  • 使用接口或抽象类来实现方法和插件结构,加载程序集,将对象强制转换为接口,并在需要挂钩系统时调用插件应该具有的方法。

  • 使用C#事件加载程序集并引发我需要挂钩系统的事件。构造函数中的插件将使用我的应用程序提供的事件注册该函数。

什么是最佳解决方案?有什么性能考虑因素?还有什么其他方法?

2 个答案:

答案 0 :(得分:4)

不应该编写自己的插件系统,而应该考虑Managed Extensibility Framework(MEF),这是微软自己的插件框架。

答案 1 :(得分:1)

查看Codeplex上的Orchard项目。 Microsoft开发人员已经构建了一个类似于您所描述的插件机制。它非常复杂......