我已经研究了MEF(托管可扩展性框架)两天了。但是,我认为MEF不能给我我的期望。
我想要一个软件设计:将有核心应用程序,应用程序的所有模块将作为插件完成。例如,在电子商务应用程序订单模块中,广告系列模块等都应该作为插件添加。
问题是:我可以在Asp.NET webform上使用MEF进行这样的设计吗?
答案 0 :(得分:6)
我想要一个软件设计:将有核心应用程序,应用程序的所有模块将作为插件完成
这是完全 MEF启用的方案类型。 MEF围绕构成一组未知类型(MEF中的部分)的概念而设计。这些部分是您的模块和插件。 MEF负责发现这些部件,并将所有部件连接起来。 MEF也不会限制您使用单一模型。 MEF本身是可扩展的,这使它具有适应性。
将ASP.NET与MEF结合使用时,必须考虑应用程序的生命周期由其在IIS中的可用性决定。您还必须考虑Web应用程序的运行时模型与桌面应用程序的运行时模型有很大不同。
我花了很多时间在MEF和ASP.NET(特别是ASP.NET MVC)上,以下是我文章的一些链接:
我认为实现一个好的MEF + ASP.NET MVC集成可能比为WebForms做同样容易,因为MVC被架构为模块化和可扩展的(特别是在MVC3中)。 WebForms你需要考虑页面事件和生命周期,以及如何将它们整合在一起。
如果你谷歌,网上有一些很好的资源,一些可靠的例子,好的技巧等,比如Tim Robert的文章名为Defining Web-scoped parts with MEF。 StackOverflow上已经有很多问题(有答案),涵盖了这个主题。
使用IoC容器也可以获得类似的结果,例如Castle Windsor,Ninject,Autofac等。