`
benniaolk
  • 浏览: 36779 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

    ——题记
    这段时间由于工作的关系,一直在研究OSGi相关的东西,想了想,跑到这来,特意开通了自己的博客,把自己的一些心得写下来,算是对前段时间学习的总结,也把自己的学到的东西拿出来和大家一起分享,并希望能引发一些讨论,共同探讨,一起进步,那就更好了。我打算把以前弄过的东西都总结一下,放到博客上来,感觉这是个不错的习惯,共勉之。

    OSGi诞生初期,其目的主要是能够灵活方便并远程管理互联的网络嵌入设备,OSGi联盟上对于OSGi service platform有这样一句解释:The OSGi service platform delivers an open, common architecture for service providers, developers, software vendors, gateway operators and equipment vendors to develop, deploy and manage services in a coordinated fashion.(OSGi service platform是一个开放并且提供通用接口标准的体系框架,基于这个体系框架,服务提供商,程序开发人员,软件提供商,服务网管运营商,设备提供商能够协调地联合起来开发,部署以及管理向用户提供的各种服务)。随着OSGi的发展,逐渐被引入到企业应用领域。
    目前,OSGi规范的最新版本为R4,有关该规范的详细情况请阅读OSGi实战的第7节——深入OSGi。OSGi框架主要分为四部分:运行环境(executionenvironment)、模块(Modules)、生命周期管理(Life Cycle)、服务注册(Service Registry)。运行在OSGi环境中的是一个个的Bundle,也就是Modules的具体实现。
    对于每个bundle,都有各自的ClassLoader,在这一点上和传统的Web应用有相似之处,在传统的Web应用开发完成之后,都会将其部署在Tomcat、Jboss等服务器上,这些Web应用都有着各自的ClassLoader环境,而两者之间的区别在于,传统的Web应用无法做到资源的共享,因为它们是完全独立、隔离的。OSGi框架为bundle之间的协作提供了底层支持,通过在bundle的MANIFEST.MF文件中Import-Package、Export-Package等项,bundle之间就能相互共享资源及服务,在以后的博文中,我将给出一个具体的示例。
    由于OSGi具有良好的模块化结构,我个人认为这将为将来的软件开发方式带来很大的冲击,将更进一步推进模块化开发。目前Web应用的开发一般采用SSH框架,将整个应用大致分为Web(负责前台展现)、Service(负责业务逻辑处理)、DAO(负责数据持久化)、Domain(全局实体类)几个模块,而发布的时候,将被一起打成WAR包,部署至服务器上。如果采取bundle的形式,每个模块可以做为独立的bundle进行开发和部署,bundle之间的协作可以通过上述的方式进行,而这样带来的好处就是,一旦需要对某个模块进行更改,在保证依赖接口不变的前提下,就可以单独更改相应的bundle,再进行热部署即可,这样一来,好处是显而易见的,有效的分离了各个模块,减少了维护成本。
    由于采用bundle的形式,也增强了模块的复用性。这也是得益于OSGi良好的模块化方式。
    另外一个很重要的点就是OSGi具备热拔插特性,bundle的安装、启动、停止、卸载都可以在运行时指定,并且可以随时更改。这样一来,我们就可以做到无需重启整个应用,而只对需要更改的部分进行升级或打补丁即可。Bundl的状态图转换如下图所示: 
    OSGi bundle状态转换图

1 OSGi bundle状态转换图

以上将OSGi的一些基本的,但也是很重要的东西大概介绍了一下,在以后的博文中逐步深入吧。以上都是关于OSGi原理性的东西,那么实现该规范的有哪些产品呢?最有名的应该要数EclipseEquinox框架了,在网上查资料见有人说过,Eclipse3.0的那一次升级把自身的构架做了一次非常大的调整,其主要原因就是采用了OSGi框架,更好的支持了Eclipse的插件体系。另外还有Felixknopflerfish等。

不过话说回来,尽管OSGi有很多好处,但是现在主要还是应用在服务器端,如现在的应用服务器基本上都采用OSGi的框架,而真正的应用市场仍处于起步阶段,因为OSGi的生态环境还不成熟,可喜的是Spring推出了Spring DMSpringSource DM Server,前者能够很方便发布和引用服务,并且与Spring Framework平台相融合,将OSGibundle contextSpring  applicationContext融合在一起,大大方便了OSGi的应用。后者是OSGi bundle的运行环境,是一个将EquinoxTomcat融合在一起的服务器。在以后的博文中将详细介绍这些内容。

 

题外话:第一次写博客,以前也零星写过一些总结,但那都是写给自己看的,所以都比较粗糙,而这里就不一样了,必须要保证所有人都能基本看懂,这样才能起到讨论的作用,有什么写的不好的地方,请大家见谅,也请多提意见,大家一起进步,谢谢!

 

 

  • 大小: 18.5 KB
分享到:
评论

相关推荐

    osgi介绍osgi介绍

    osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍

    OSGI原理与最佳实践

    资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...

    利用R-OSGi实现分布式OSGi应用

    利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...

    OSGI合集 OSGi原理与最佳实践

    网上收集的OSGI资料. 包括: OSGi原理与最佳实践(精选版).pdf OSGI实战和源码.rar osgi进阶.pdf Introduce.OSGi.ppt OSGi.in.action.ppt r4.cmpn.pdf r4.core.pdf r4.enterprise.pdf

    《OSGi实战》完整中文版

    《 OSGi实战》是学习OSGi的全面指导,利用与架构和开发人员相关的示例清楚地讲解OSGi概念,同时探讨了很多实践场景和技术,阐述了开发人员有多需要OSGi,怎么将OSGi嵌入其他容器中,将遗留系统移入OSGi的最佳实践,...

    OSGI 实例eclipse插件开发

    OSGI 实例 eclipse 插件开发

    OSGI进阶.pdf

    讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的

    OSGi入门教程(OSGi Introduce)

    OSGi的入门教程,帮助初学者快速了解OSGi的定义、用途及组成。

    OSGI 入门资料PDF

    OSGI 入门资料PDF,包括OSGI实战、OSGI进阶、OSGI 入门和整合Spring、OSGI原理与最佳实践

    osgi,林昊写的osgi实战和进阶

    osgi,林昊写的osgi实战和进阶,学习osgi的好东西,入门的首选。

    OSGI进阶--OSGi开发指南

    OSGi开发文档和实践指南,描述了OSGI的开发流程

    OSGi入门资料-初探OSGi 的全文

    OSGi的入门资料,网上找的,初探OSGi 的全文

    OSGi原理与最佳实践

    本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入的知识体系,从OSGi的简介开题,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后...

    OSGI进阶实战教程

    OSGi学习不错的材料 OSGi学习不错的材料 OSGi学习不错的材料 OSGi学习不错的材料

    OSGi规范(r4)中文版

    OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文

    OSGI组件编程(osgi.component.programming)

    介绍OSGI组件编程,详细介绍用eclipse和Equinox开发OSGI程序

    OSGi.NET框架 Documentation

    本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...

    osgi重要文档--osgi核心规范文档,osgi服务文档,osgi-最佳原理与实践(王昊编著,共79页)

    osgi核心规范文档,osgi服务文档,osgi-最佳原理与实践(王昊编著,共79页)

    Equinox OSGI ServletBridge 原理与实践.rar

    OSGI 在 J2EE 环境下的应用越来越广泛,目前在 Servlet 应用中使用 OSGI 有两种方式:Servlet Container in OSGI 和 OSGI in Servlet Container. 前一种:和普通的 OSGI bundle 开发差不多,而后一种:Equinox 提供...

    OSGi原理与最佳实践pdf下载(完整版)

    OSGI原理与最佳实践的完整版,共12章 第1 章OSGi 简介 第2 章OSGi 框架简介 第3 章基于Spring-DM 实现Petstore 第4 章基于Apache CXF 实现分布式Petstore 第5 章构建OSGI Bundle Repositor'y 第6 章OSGi 规范解读 ...

Global site tag (gtag.js) - Google Analytics