在谈到MEF时,我们应该理解什么

mav*_*era 2 asp.net plugins webforms mef software-design

我已经研究了MEF(托管可扩展性框架)两天了.但是,我认为MEF不能给我我的期望.

我想要一个软件设计:将有核心应用程序,应用程序的所有模块将作为插件完成.例如,在电子商务应用程序订单模块中,广告系列模块等都应该作为插件添加.

问题是:我可以在Asp.NET webform上使用MEF进行这样的设计吗?

Mat*_*ott 6

我想要一个软件设计:将有核心应用程序,应用程序的所有模块将作为插件完成

正是 MEF启用的场景类型.MEF围绕构成一组未知类型(MEF中的部分)的概念而设计.这些部分是您的模块和插件.MEF负责发现这些部件,并将所有部件连接起来.MEF也不会限制您使用单一模型.MEF本身是可扩展的,这使它具有适应性.

将ASP.NET与MEF结合使用时,必须考虑应用程序的生命周期由IIS中的可用性决定.您还必须考虑Web应用程序的运行时模型与桌面应用程序的运行时模型有很大不同.

我花了很多时间在MEF和ASP.NET(特别是ASP.NET MVC)上,以下是我文章的一些链接:

  1. 模块化ASP.NET MVC使用托管可扩展性框架(MEF),第一部分
  2. 模块化ASP.NET MVC使用托管可扩展性框架(MEF),第二部分
  3. 模块化ASP.NET MVC使用托管可扩展性框架(MEF),第三部分
  4. MVC3和MEF
  5. 使用MEF和WCF进行即插即用服务

我想说实现一个不错的MEF + ASP.NET MVC集成可能比为WebForms做同样容易,因为MVC被架构为模块化和可扩展(特别是在MVC3中).WebForms您需要考虑页面事件和生命周期,以及如何将所有内容插入到一起.

如果你谷歌,网上有一些很好的资源,一些可靠的例子,好的技巧等,如Tim Robert的文章题为使用MEF定义Web范围的部分.StackOverflow上已经有很多问题(有答案),涵盖了这个主题.

您还可以使用IoC容器获得类似的结果,例如Castle Windsor,Ninject,Autofac等.