Microsoft加载项框架与OSGi?

And*_*yuk 5 c# java osgi mef maf

MAF与OSGi相比如何?

MAF不是我能轻易找到的东西,而且我在徘徊为什么人们不会像MEF那样推荐它?它似乎与OSGi相似,至少从我第一眼就看出来了.

小智 9

除了明显的差异:

MAF

  • 由微软驱动,因此是专有的
  • 语言是C#

OSGi的

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

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

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


Chr*_*ain 1

它与 OSGi 类似。当然,存在一些差异,因为 MAF 利用 AppDomain,而 AFAIK 没有 Java 等效项(IIRC OSGi 使用子 JVM)。它有一些问题——微软没有大力推广它,这可能解释了社区缺乏兴趣的原因。

我唯一真正的抱怨是,它要求您以相当严格的方式构建项目,使主机和托管程序集都具有一定的“MAF 意识”。它绝对有效,尽管我不确定是否有很多东西不能由优秀的开发人员在相对较短的时间内自行开发。

  • 我不认为 OSGi 使用子 JVM,只是在幕后使用类加载器魔法。 (13认同)