使用 OSGi 作为插件化平台
OSGi(The Open Services Gateway Initiative)是一个开放的框架标准,OSGi定义了一个开放的、普适的标准和平台,为服务提供者、开发人员、软件供应商、最终用户提供一个开发、部署、管理服务的统一的标准。
在OSGi中,最重要的概念是Bundle和Service,一个Bundle就是一个独立部署的单元,任何符合OSGi规范的Bundle可以发布到OSGi框架之上,并实现与其他Bundle的协作和共处。基于OSGi规范,我们的产品开发可以按照其依赖性、功能分布来组织成为多个不同的Bundle,各个Bundle相对独立,可以独立的进行软件的分析、设计、开发、测试,并最终发布到一个统一的框架平台之上。
一个OSGi中的Bundle与下面的概念具有相似性:
l Eclipse中的Plugin。(实际上,eclipse 3中的插件其本身就是一个OSGi Bundle)
l Netbeans中的Module。
在OSGi中,Service是一个良好定义的服务,一个Service包括接口定义(一般的,是一个Java接口),接口的实现(Implementation),在一个Bundle中可以提供1个或多个的服务,也可以使用由其他Bundle提供的服务,OSGi提供了一种注册、发现服务的统一的框架和机制。同时,OSGi也预定义了一些通用的、标准化的服务,包括Preference服务、Package Admin服务、Log服务等,OSGi的Bundle可以使用这些标准的服务。
1.1. OSGi的特点
以下是使用OSGi框架的一些特性和优点:
1、 OSGi是一个开放的标准,已有非常多的厂商对其进行支持。在www.osgi.org上可以获得丰富的文档和帮助。
2、 OSGi框架已经具有open source的实现,oscar(oscar.objectweb.org)就是一个稳定的、opensource的OSGi实现。我们可以直接使用。
3、 OSGi标准已经成熟,并且有可用的opensource实现,我们可以马上在此基础上开展工作。部分通用的Bundle可以马上开始进行开发。
4、 各个Bundle可以独立的规划、分析、设计、开发、测试,并且可以相对灵活的组合称为一个新的产品,这可以支持我们并行的进行多个功能的开发,并尽可能的避免各个子团队之间的依赖性。
5、 各个Bundle可以发布在我们的网站上,用户可以直接升级下载新的Bundle,使用产品提供的新的功能。可以解决我们现在的升级模式。在一个客户处发现的BUG,我们在修改该BUG后,只需发布该Bundle的一个新版本,让客户直接下载(或者自动升级)即可。
6、 在企业应用中,我们可以把Bundle部署在服务器上,前端应用只需要安装好JVM、及oscar等基础平台(约400K)后,从服务器上下载所有的Bundle到本地运行,从而也免除了桌面端的安装、升级的烦扰。
7、 OSGi可以同时作为我们桌面端、Server端的框架,便于我们内部的开发技术统一。很多的Bundle可以直接在Server/Client中共享。从而使得我们在产品开发中可以更一致的进行功能的分解,重用代码。
0 Comments:
张贴评论
<< Home