MAF 与 OSGi 相比如何?
MAF 不是我能轻易找到的东西,我想知道为什么人们不像 MEF 那样推荐它?它似乎类似于 OSGi,至少从我的第一眼看是这样。
除了明显的区别:
MAF
操作系统
还有很多功能上的差异。例如,MAF 更多的是关于主机<->插件架构,其中您有一个主主机,并且插件为其提供了附加功能;而 OSGi 提供了一个框架,其中模块不仅与一个中央单元对话,而且还与彼此对话。
为 MAF 编写插件非常繁重 - 您必须提供 7 个部分 - 主机、主机视图、主机适配器、合同、插件适配器、插件视图、插件 - 才能完成整个工作。使用 OSGi,您只需一个普通的 Java JAR 文件和一个清单文件,您可以在其中声明依赖关系,并且还可以选择提供用于处理 IoC 的标头(如果您更喜欢使用控制反转模式)。
它类似于 OSGi。当然,存在一些差异,因为 MAF 利用 AppDomains,AFAIK 没有 Java 等效项(IIRC OSGi 使用子 JVM)。它存在一些问题——微软没有大力推广它,这可能解释了社区缺乏兴趣的原因。
我唯一真正的抱怨是,它要求您以相当严格的方式构建项目,使宿主程序集和托管程序集都有些“MAF-aware”。它确实有效,尽管我不确定那里有很多东西不能由一个好的开发人员在相对较短的时间内自行开发。