• OSGI.NET 学习笔记(一)


    1. 关于OSGI.NET

    在介绍 OSGI.NET 前先介绍下OSGi, OSGI全称为Open Service Gateway Initiative,它一方面指由IBM、Oracle、BEA、SAP等国际IT巨头组成的OSGi联盟组织;另一方面指该组织制定的一个基于Java语言的服务规范——OSGi服务平台。而OSGi.NET是OSGi R4.2规范移植到.NET平台的实现,是一个动态模块化框架的规范。OSGi.NET规范定义了面向组件、面向服务的编程方法。

    基于OSGi.NET的插件框架提供了模块化与插件化、面向服务架构和模块扩展三大功能,适用于控制台、WinForm、Windows服务、WPF、ASP.NET和移动平台等任意.NET应用环境。

    2. OSGi.NET的优势 

    •  模块间零耦合

        在OSGi.NET规范里,插件具有热插拔、物理隔离和动态特性,所以模块间是0耦合,可快速进行模块或软件复用,同时能很好解决团队间的协作问题,使各个团队或成员间独立进行开发,在软件或模块的后期维护中表现出更多的优势,由于插件是互相隔离,并且其依赖是通过可管理的服务来实现的,依赖粒度小,模块间的依赖可视为0。不同的插件可以有不同的版本,独立开发、部署和测试。对组件的更改不会影响到其他组件的行为。

    •  快速响应需求变化

       OSGi.NET框架实现了一个微内核,能够快速响应用户的需求,定制或修改一个组件.

    •  易管理、易部署、易更新

      由于OSGi.NET的插件具备物理隔离、热插拔和动态的特性,使持续部署、更新变为可能,并且让您可以非常方便的管理内核。

    •  OSGI.NET平台的开放性

      OSGi.NET是一个开放的平台,在此构建的应用程序,天生就具备了开放性。你可以通过服务向开发者提供API,通过扩展点向开发者提供功能扩展,并且可以构建私有的插件仓库。

    3.OSGI.NET 运行机制

     在OSGi.NET插件框架中,插件即Bundle,它具备物理隔离、热插拔和动态特性。每一个插件都是完全可复用的,可以被动态的安装、启动、停止、卸载或更新。

    插件运行时即BundleRuntime,则是插件的运行容器,它负责从插件目录中加载和启动插件。

    4.面向服务

     在OSGi.NET插件框架中,插件具备高内聚、低耦合特性,也就是说插件间耦合度非常低。服务即Service,是插件通讯的方式。在这里,“服务=接口 + 实现”。接口是服务的契约,服务提供商实现了服务的接口并将服务注册到服务总线,服务消费者则通过服务契约从服务总线搜索服务并绑定使用。这里,服务是动态,可以被动态注册、卸载和更新,一个服务契约也可能有多个服务实现。

    5.插件扩展

     在OSGi.NET插件框架,插件具备可扩展性,可以在不变更插件代码情况下,更改或者扩展插件的行为。这个扩展机制是通过一对基于XML格式的“扩展点 + 扩展”来实现的。一个插件可以通过定义“扩展点”来实现可扩展,而其它插件则通过定义对应的“扩展”来注册/更新功能。扩展/扩展点在插件启动时注册到插件运行时,相反,在卸载时,则从插件运行时卸载。

    6.片段插件

     在OSGi.NET,有一种特殊的插件,称为片段插件,即Fragment Bundle。片段插件相当于子插件,其作用是为了扩充其它插件的类型空间、扩展信息。除了片段插件的插件,都是宿主插件(Host Bundle)。与宿主插件不同的是,片段插件不能被启动、停止,没有类加载器,不允许从片段插件加载类型。当宿主插件被启动后,片段插件会自动附加到宿主插件,即将片段插件的类型空间、扩展信息合并到宿主插件。

    7.相关名词解释

    •  扩展点:通过标准XML节点<ExtensionPoint>来定义一个模块向其它模块暴露的扩展点。暴露扩展点的模块会监听并处理其它模块对其的扩展。
    •  扩展:通过标准XML节点<Extension>来定义一个模块对暴露扩展点的模块的扩展。这个XML节点会通过扩展点变更事件传递到暴露扩展点的模块。
    •  动态扩展:模块在启动和停止时,会分别向平台注册和卸载相应的扩展点及扩展,该平台通过模块上下文暴露扩展点变更事件来处理动态的扩展信息。
    •  零耦合:模块的扩展没有任何的耦合,仅通过标准XML来配置。

    相关文章:

     http://osgi.com.cn/article/7289226  OSGI.NET

      http://www.cnblogs.com/baihmpgy/archive/2010/05/05/1727626.html OSGI.NET 开放工厂--博客文章

     http://www.verydemo.com/demo_c89_i4770.html  OSGI.NET 入门笔记

     http://osgi.codeplex.com/discussions OSGI.NET 官网(英文版 )

     http://www.iopenworks.com/  OSGI.NET开放工厂

      http://osgi.com.cn/account/signin?next=http://osgi.com.cn/article/7289228 OSGI 中文社区

  • 相关阅读:
    小学四则运算
    浏览后感想
    组员名单
    软件工程--第五次作业--(1、2、3、4(1))
    第四次作业
    《软件工程》第二次作业
    现代软件工程 第一次作业
    软件工程问题
    第五次作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/wisdo/p/4984713.html
Copyright © 2020-2023  润新知