托管扩展性框架 (MEF) 和托管外接程序框架(MAF,又名 System.AddIn)似乎完成非常相似的任务。根据这个堆栈溢出问题,MEF 是 System.Addin 的替代品吗? https://stackoverflow.com/questions/124040/is-mef-a-replacement-for-system-addin,您甚至可以同时使用两者。
您什么时候会选择使用其中一种而不是另一种?什么情况下你会选择两者一起使用?
我一直在评估这些选项,这是我得出的结论。
MAF 是一个真正的插件框架。您可以完全分离您的插件,甚至可以在单独的应用程序域中运行它们,这样如果插件崩溃,它不会关闭您的应用程序。它还提供了一种非常完整的方法,使插件不再依赖任何东西,除了你给他们的合同。事实上,您可以在升级主应用程序时对合同适配器进行版本化,以提供对旧插件的向后兼容性。虽然这听起来不错,但为了跨应用程序域,您必须付出沉重的代价。您付出的代价是速度以及可来回发送的类型的灵活性。
MEF 更像是依赖注入,具有一些额外的好处,例如可发现性和......(在这一点上画一个空白)。 MEF 中不存在 MAF 所具有的隔离程度。它们是针对两种不同事物的两种不同框架。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)