OSGI 二

2018/01/17 OSGI

OSGI 二

OSGI架构概览

OSGI 服务平台有两部分组成:OSGI框架和OSGI标准服务。OSGI框架是实现并提供OSGI功能的运行环境,OSGI标准服务定义了很多用于执行常见任务的可重用API。 如图所示: 图一

OSGI 框架

OSGI 联盟再OSGI框架规范中定义了框架的正确行为。这样就可以基于一个定义清晰的API进行编程。有一些知名的开源项目,如apache felix,eclipse equinox和knopflerfish 实现了该标准。 多种应用场景表明OSGI框架具有很高的价值和灵活性,这个框架是根据OSGI规范中定义的三个概念层设计的:

  • 模块层 专注于打包和共享代码
  • 生命周期层 关注于提供执行时模块管理和对底层OSGI框架的访问
  • 服务层 专注于模块,特别是模块内的组件间的交互和通信 如下图: 图二

OSGI每一层都依赖下层。

模块层

模块层定义了OSGI模块的概念,成为Bundle。Bundle是一个包含元数据的JAR,有类和资源文件组成。Bundle通常并不是打包到一个JAR中的整个应用程序,它们是构成特定应用程序的多个逻辑模块。Bundle比标准的JAR文件更加强大,因为你可以明确的生命哪些包对外可见。 如下图所示: 图三

对比标准的JAR文件,Bundle的另一个重要优势是可以明确声明依赖哪些外部包,明确声明Bundle的导入包和导出包的主要好处是,OSGI框架可以管理和验证它们的一致性:这个过程成为Bundle解析,似的导入导出包相匹配。Bundle解析确保Bundle版本和其它方面约束的一致性。

生命周期层

定义了OSGI框架中是如何动态安装和管理的。
生命周期层的存在有两个目的,再应用程序的外部,生命周期曾精确的定义了Bundle生命周期的操作(安装,更新,启动和卸载)。这些生命周期的操作是的你可以用一种定义明确的方式动态的提供,管理和改进你的应用程序。这以为着可以安全地在框架中安装和卸载Bundle,而不需要重启应用进程。

服务层

服务层支持和构建了一个灵活的应用应用编程模型。该模型包含了一些因面向服务的计算而流行起来的概念。主要的概念设计面向服务的发布,查找和绑定交互模式:服务提供者将服务发布到服务注册中心,然后服务客户端通过搜索服务注册中心,查找可供使用的服务。当今这种面向服务的架构(SOA)大部分都与Web服务有关;但是OSGI服务属于VM的一部门,因此又称为VM中的SOA。

图三

OSGI 提倡一种基于接口的开发方式,改方式是一种工人的优秀编程实践。它提倡接口与服务之间的分离。OSGI服务是Java接口,表示服务提供者和服务客户端之间的一种概念上的合约。服务层很轻量,因为服务提供者只是一些通过直接的方法调用来访问的Java对象。服务层通过基于服务的动态性来拓展生命周期层基于Bundle的动态性。结果是产生了一种支持模块化和灵活性的编程模型。

OSGI 程序通用方法

创建OSGI应用程序的通用方法:

  1. 设计应用,将它分解为一些服务接口(普通的基于接口的编程)和这些接口的客户端。
  2. 使用你选定的工具和方法来实现服务提供者和客户端组件。
  3. 将服务提供者和客户端组件打包为独立的JAR文件,然后用合适的OSGI元数据拓展每个JAR文件。
  4. 启动OSGI框架。
  5. 安装和启动所有来自步骤3的JAR文件。
Show Disqus Comments

Search

    Table of Contents