上篇博客中,我们介绍了如何制作插件,那么插件为什么可以显示在界面菜单呢?通过何种方法显示?
如果大家下载过插件,一定注意到了这个文件:Manifest.xml;打开它可以看到如下:
那么这个文件是什么?包含什么?如何写?下面我们一一解释:
首先,Manifest.xml文件属于模块层文件,在OSGI里称作模块清单文件;包含以下节点:
- 基本信息——<Bundle>XML节点
- 激活器信息——<Activator>XML节点
- 运行时描述——<Runtime>XML节点
- 服务信息——<Services>XML节点
- 扩展信息——<ExtensionPoint>和<Extension>XML节点
- 详细信息——<BundleInfo>XML节点
< Bundle>xml节点:Name是Bundle的名称;SymbolicName标记名称;InitializeState初始化状态;一般Name和SymbolicName是需要修改的;
<Runtime>——运行时描述,配置模块本地程序集,模块依赖的程序集;<Assembly Path>XML配置节点声明本地程序集;
<Dependency >XML配置节点声明依赖,包括:依赖其它模块的程序集,依赖其它模块(所有程序集);
<ExtensionPoint>XML节点:拓展信息;<Application>节点里面是对显示名称、底层类的一些设置。
定义可扩展点,动态实现了扩展:
- 使用XML Schema定义了扩展信息的格式
- 使用IBundleContext的GetExtensionPoints、GetExtensions等方法获取扩展信息
- 使用IBundleContext.ExtensionChanged事件监听是否有模块对其进行扩展
- 模块在启动时添加扩展,停止时卸载扩展
其实Manifest文件,类似于插件目录,程序调用的时候通过Manifest读取信息,才能调用插件;Manifest存的是插件可配置修改的信息,需要 把Manifest文件写正确,因为程序读每个插件的时读的是Manifest文件中配置的信息,通过Manifest文件才能加载正确的插件。
现在,插件如何做如何使用通过小例子差不多都可以了,下篇博客会介绍OSGI.NET体系结构。
不足之处,敬请指正!