我一直在使用Windsor IoC Container作为基于Web的应用程序,以解决应用程序应该使用的数据访问层实现.
Web应用程序的UI将由页面组成,每个页面由称为portlet的小单元组成.(它们的概念有点类似于小部件.)这些所谓的portlet基本上是Web控件,可以在运行时为每个页面进行静态配置.
该应用程序将附带一些内置的,但我希望能够轻松扩展它.
我发现这个机制正是MEF的构建方式.所以我决定以这样的方式实现系统,即它使用MEF发现portlet.然后,我意识到它也可以做我目前使用温莎的东西,所以我决定放弃温莎而不是MEF.
显然,我将不得不使用DirectoryCatalog,它会扫描应用程序bin文件夹中的.dll并返回我需要的所有内容.
我在StackOverflow中阅读了一些有关MEF的教程,示例和所有问题.我认为使用MEF最简单的方法是通过Glenn Block在他的教程中提到的PartInitializer,但我意识到它不在MEF中.实际上,它是在我从CodePlex下载的代码中,但是在一个单独的程序集中,并且只在源代码中,而不是以二进制形式.(这是否意味着它不是MEF的一部分?或者将它放到一个单独的项目中有什么意义?)然后,我意识到它适用于Silverlight,所以它并没有真正帮助我.(或者我应该只针对.NET 3.5进行编译,还是将其包含在我的项目中,我很高兴?)
所以现在我遇到了以下问题:我应该将CompositionContainer放在我的应用程序中?
还有一件事我想考虑一下:我应该在应用程序的生命周期中只使用一个CompositionContainer,或者我最好在每次需要时创建一个容器?