我目前需要提供一种在我的应用程序中添加可扩展性的方法。我目前正在研究 MEF 和 MAF。
MEF 提供了一个更简单的编程模型,也更适合我们的使用场景,因为我们只想将插件加载到单个 AppDomain 中——这是由于系统的架构方式造成的。同样的事情也可以用 MAF 用几行代码来实现。
但是,鉴于 MEF 处于预览状态,我想知道是否应该在生产系统中使用 MEF?
MEF已经经历了几次迭代,我认为它现在非常接近稳定的 API(也许除了它的 Silverlight 支持之外)。请记住,MEF 将成为 .NET 4.0 的一部分,并且 VS2010 计划将 MEF 用于其可扩展性模型,因此在这个后期阶段大幅更改 API 的动力很大。
FWIW,我对 MEF 的稳定性没有任何问题,在生产系统中使用它也不会出现问题。只需像对待任何其他开源组件一样谨慎对待它。
我目前正在编写一个基于 MEF 的“真实”应用程序。我的第一步是构建一个通用的可扩展应用程序框架(带有可扩展的菜单、工具栏、状态栏、可停靠窗口等)。我们将其开源为SoapBox Core。我还发布了一个演示,解释它是如何工作的。
我当然认为它已经准备好在实际应用中使用。
我认为您不必担心 MEF 的新版本或更改。MEF 是一个库程序集。在您的生产应用程序中,您可以将 MEF 库添加到您的项目中,并始终将程序集复制到您的本地部署目标。这样,您的生产应用程序将保留该版本。
我用过很多开源库。只要您将库文件放在部署应用程序的同一文件夹中,就可以了。最好获取原始开源项目的源代码或将它们添加到您的解决方案中。如果您需要调试到库中,它将为您提供帮助。