OSGI(四)Hello World

本文是OSGI入门系列的第四部分,通过一个简单的Hello World程序,介绍了OSGI的执行流程。首先创建项目,配置生成路径并添加引用。接着编写控制台程序,重命名Activator类并实现IBundleActivator接口。最后,在类库中添加Manifest.xml文件,描述启动流程。文章指出,通过Manifest文件可以控制插件的启动顺序和是否启用,为后续的界面插件制作奠定基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       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系统的流程,通过调用bundleRuntimestart方法,到Activator文件中;执行Start方法代码;最后执行完成之后,执行stop方法,OSGI整个流程完毕。

     那么可能有人要问了,“如果我有好几个插件会同时启用吗?”这个可以设置,可以通过设置启动级别来控制插件启动顺序,或许还是有疑问“我有几个插件,我不需要同时全部启用,如果我能自定义启用最好了”,这个也是可以通过设置Policy来设置的,这些都是可以通过我们伟大的Manifest文件进行设置、修改(Manifest文件在之前的博客中有讲如何使用)。

       以上就是我们OSGI的第一个小程序——HelloWorld


    下篇开始讲通过iopenwork制作界面插件,谢谢关注~~~



评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值