C# Microsoft插件框架与OSGi?

C# Microsoft插件框架与OSGi?,c#,java,osgi,mef,maf,C#,Java,Osgi,Mef,Maf,MAF与OSGi相比如何 MAF不是我能轻易找到的东西,我想知道为什么人们不推荐它,比如说,MEF?至少从我的第一眼看,它似乎与OSGi相似。它与OSGi相似。当然,有一些区别,因为MAF利用AppDomains,而AFAIK没有Java等价物(IIRC OSGi使用子JVM)。它有一些问题——微软没有大力推广,这可能是社区缺乏兴趣的原因 我唯一真正的抱怨是,它要求您以一种相当严格的方式构造项目,使宿主程序集和宿主程序集都具有某种“MAF意识”。它确实有效,尽管我不确定有多少东西不能在相对较短的

MAF与OSGi相比如何


MAF不是我能轻易找到的东西,我想知道为什么人们不推荐它,比如说,MEF?至少从我的第一眼看,它似乎与OSGi相似。

它与OSGi相似。当然,有一些区别,因为MAF利用AppDomains,而AFAIK没有Java等价物(IIRC OSGi使用子JVM)。它有一些问题——微软没有大力推广,这可能是社区缺乏兴趣的原因


我唯一真正的抱怨是,它要求您以一种相当严格的方式构造项目,使宿主程序集和宿主程序集都具有某种“MAF意识”。它确实有效,尽管我不确定有多少东西不能在相对较短的时间内由一个好的开发人员自行种植。

除了明显的区别:

MAF

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

  • 由财团驱动,开放
  • 语言是Java
还有很多功能上的差异。例如,MAF更多的是关于hostplugins体系结构,其中您有一个主主机,插件为其提供附加功能; 而OSGi提供了一个框架,其中模块不仅与一个中央单元通信,还与其他单元通信

为MAF编写插件相当繁重——为了完成整个工作,您必须提供7个部分——主机、主机视图、主机适配器、契约、外接程序适配器、外接程序视图、外接程序。
有了OSGi,您只需要一个普通的Java JAR文件和一个清单文件,在清单文件中声明依赖项,还可以选择提供用于处理IoC的头文件(如果您更喜欢使用控制反转模式)。

我认为OSGi不使用子JVM,只是隐藏了类加载器的魔力。哇,谢谢!很少有人同时了解Java和.NET技术。你能提供一些关于MEF和OSGi问题的见解吗?所有的答案都不是很全面:对于任何未来的OSGi访问者来说,FYI是MAF基本工作原理的极好概述。可以看出,它实际上与OSGi不同,但更倾向于创建多个(外接程序)-一对一(主机)。在MAF中编写“bundle”(某种意义上)仍然是可能的,但每个bundle需要大约六类样板文件。每个都必须在自己的目录中。读这本书。