Microsoft加载项框架与OSGi?

时间:2012-05-25 17:04:32

标签: c# java osgi mef maf

MAF与OSGi相比如何?

MAF不是我能轻易找到的东西,我在徘徊为什么人们不推荐它,比如MEF?它似乎与OSGi类似,至少从我第一眼就看出来了。

2 个答案:

答案 0 :(得分:9)

除了明显的差异外:

<强> MAF

  • 由Microsoft驱动,因此专有
  • 语言是C#

<强>的OSGi

  • 由一个财团驱动,打开
  • 语言是Java

还存在很多功能差异。例如,MAF更多地是关于主机&lt; - &gt;插件架构,其中你有一个主要主机,插件为它提供了附加功能; 而OSGi提供了一个框架,模块不仅可以与一个中央单元通信,而且可以相互通信。

为MAF编写插件非常繁重 - 您必须提供7个部分 - 主机,主机视图,主机适配器,合同,附加适配器,加载项视图,加载项 - 以便完成整个工作。 使用OSGi,您只需一个普通的Java JAR文件,其中包含一个清单文件,您可以在其中声明依赖关系,还可以选择提供用于处理IoC的标头(如果您更喜欢使用控制模式的反转)。

答案 1 :(得分:1)

它类似于OSGi。当然,有一些差异,因为MAF利用了AppDomains,AFAIK没有Java等价物(IIRC OSGi使用子JVM)。它有一些问题 - 微软没有大力推广,这可能解释了社区缺乏兴趣。

我唯一真正的抱怨是,它要求您以相当严格的方式构建项目,使主机和托管程序集有点“MAF感知”。它肯定有效,但我不确定那里有很多不能由一个好的开发者在相对较短的时间内自行种植。