对OSGI的基础知识有了一点了解之后,我们进行第一个程序:Hello
World!
我们通过最简单的控制台代码来看一下OSGI实现的具体流程:
首先新建项目:
将生成路径修改一下:
添加引用:
添加类库文件,其实就是咱们要做的一个插件:
ps:要添加的控制台程序文件夹下的bin--Plugin文件夹下;
添加同样的引用,修改生成路径;
下面开始编写代码:
控制台程序program文件代码:
using UIShell.OSGi; namespace HelloWorld { class Program { static void Main(string[] args) { using (BundleRuntime bundleRuntime = new BundleRuntime()) { bundleRuntime.Start(); Console.WriteLine("Press enter to exit....."); Console.ReadLine(); } } } }
将HelloWorldOne下的class1重命名为:Activator,并让他实现接口IBundleActivator;
using UIShell.OSGi; namespace HelloWorldOut { public class Activator:IBundleActivator { public void Start(IBundleContext context) { Console.WriteLine("Hello World!!!"); } public void Stop(IBundleContext context) { //todo; } } }
最后一步,在类库中添加Manifest.xml文件;并进行如下书写:
<Bundle xmlns="urn:uiosp-bundle-manifest-2.0" SymbolicName="HelloWorldOut" Name="HelloWorldOut" Version="1.0.0.0" InitializedState="Active"> <Activator Type="HelloWorldOut.Activator"/> <Runtime> <Assembly Path="bin\HelloWorldOut.dll"/> </Runtime> </Bundle>
讲解一下,通过简单的HelloWorld,我们可以看出OSGI系统的流程,通过调用bundleRuntime的start方法,到Activator文件中;执行Start方法代码;最后执行完成之后,执行stop方法,OSGI整个流程完毕。
那么可能有人要问了,“如果我有好几个插件会同时启用吗?”这个可以设置,可以通过设置启动级别来控制插件启动顺序,或许还是有疑问“我有几个插件,我不需要同时全部启用,如果我能自定义启用最好了”,这个也是可以通过设置Policy来设置的,这些都是可以通过我们伟大的Manifest文件进行设置、修改(Manifest文件在之前的博客中有讲如何使用)。
以上就是我们OSGI的第一个小程序——HelloWorld!
下篇开始讲通过iopenwork制作界面插件,谢谢关注~~~