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

时间:2011-08-25 06:32:39

标签: asp.net plugins mef webforms software-design

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

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

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

1 个答案:

答案 0 :(得分:6)

  

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

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

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

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

  1. Modular ASP.NET MVC using the Managed Extensibility Framework (MEF), Part One
  2. Modular ASP.NET MVC using the Managed Extensibility Framework (MEF), Part Two
  3. Modular ASP.NET MVC using the Managed Extensibility Framework (MEF), Part Three
  4. MVC3 and MEF
  5. Plug and Play Services with MEF and WCF
  6. 我认为实现一个好的MEF + ASP.NET MVC集成可能比为WebForms做同样容易,因为MVC被架构为模块化和可扩展的(特别是在MVC3中)。 WebForms你需要考虑页面事件和生命周期,以及如何将它们整合在一起。

    如果你谷歌,网上有一些很好的资源,一些可靠的例子,好的技巧等,比如Tim Robert的文章名为Defining Web-scoped parts with MEF。 StackOverflow上已经有很多问题(有答案),涵盖了这个主题。

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