我想创建的是一个银光应用程序,具有几个选项卡/模块,这些都将是单独的DLL。
我看到PRISM具有Shell / Module概念,似乎是针对UI设计的,并找到了一个不错的演示(展示如何搜索digg / twitter)。
但听起来MEF将包含在VS2010中,因此我想选择该选项。
有人能够清楚地解释这些差异吗?(我不是高级程序员)
MEF和Prism有两个非常不同的目标。
Prism基本上是一个设计复合应用程序的指南——其中您拥有一个外壳和动态分配、集成的“区域”。它包括一个IoC容器(Unity),用于注入。
MEF是一个依赖项注入框架,其主要目标是在运行时为应用程序“填充”依赖项。在这方面,它正在完成Prism中Unity的相同目标(实际上,您可以相当容易地重新设计Prism以使用MEF代替Unity)。
在某些方面,Prism填补了更广泛的范围,但也受到GUI应用程序的限制。MEF只做一件事情(依赖项注入),但旨在成为任何类型应用程序的通用目的。
至于这些产品的生命周期-这里没有答案,但它们的开发方式如下:
Prism由Patterns and Practices团队开发。目标并不一定是制作软件,而是提供指导。因此,他们会更新(尽管不是很频繁)Prism库和示例,但Prism不是由Microsoft提供的框架的核心部分。它实际上是第三方库(即使微软资助了很多,大多数P&P人员不是微软全职员工)。
根据博客文章,MEF似乎计划集成到框架中,并直接用于MS项目。因此,它正在直接得到来自Microsoft的重点开发,并在他们的产品中使用。
我个人已经阅读了Prism文档(并有这本书),并且已经浏览了示例。它非常有助于了解如何拆分应用程序,但它确实只是指导,而不是一个完整的、可用的框架。这些示例非常擅长完成它们设计完成的任务——教育架构师如何设计复合应用程序。
如果您的目标仅是在Silverlight应用程序中保持清晰的责任分离,那么我会更关注学习MVVM,而不仅仅是使用Prism。
如果你想使用MEF,还有其他不错的选择。例如,WPF 应用程序框架是一个完整的MVVM框架,构建在使用MEF的基础之上,并且非常好用。所以MEF和Unity基本上是一样的...
嗯,并不完全相同。MEF更专注于在编译时未知的扩展,而IOC容器通常专注于在编译时已知的依赖项。 这个问题的最佳答案给出了这些差异的很好解释。