- 浏览: 1148347 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
OSGi到底给我们带来了什么[附PPT和Demo]
2011-01-10 14:23 by 道法自然, 1906 visits, 收藏 , 编辑
算算时间,接触OSGi已有2年半时间了,我一直在探索OSGi给我们 带来的变化,同时我们也在实施OSGi。回想起来,我对OSGi也算是一见钟情。在接触OSGi的这2年半时间里,我翻译了OSGi规范,并设计了面 向.NET的OSGi.NET规范,然后我们用了1年半的时间来实现OSGi.NET产品。之后,我们便开始体验OSGi到底给我们带来了什么。
从2005年开始,我一直在探索一种自组合的插件化框架,从而来构建一个UIShell平台。“UIShell”是我们的梦想,我们希望构建一个 SaaS应用商店,从而改变人们开发、购买、使用、销售软件的方式。这个梦想现在已经初步实现了,我们已经构建了第一个融合开发商、消费者和运营商的 SaaS应用商店平台。这个平台的构建完全是基于OSGi思想之上的。它实现了这样的一个功能:开发者通过SDK可以开发基于AppStoreSDK的应 用,AppStoreSDK是基于OSGi.NET来构建的;消费者通过SaaS应用商店平台来购买SaaS应用,然后下载或者在线使用应用,所有的应用 都是运行在AppStoreRuntime之上的,AppStoreRuntime是应用的虚拟运行时,基于OSGi.NET来构建。下图是这个平台的软 件体系结构。接下来我来介绍一下我们在OSGi.NET体验。
1 什么是OSGi
简而言之,OSGi是一个动态模块化框架的规范,提供了插件化、面向服务和插件扩展三大功能。这个规范体现非常重要的2点:“模块化”和“动态”。
(1)模块化
在OSGi规范中的模块是一种规范化的完全物理隔离的模块。每一个模块拥有独立的文件结构、独立的类型空间、独立的资源等,模块是重用的单元,不可再切割。模块间互不干扰和影响。
(2)动态
OSGi的动态体现在“面向服务架构支持”、“可扩展”和“生命周期”之上。
在OSGi中,模块是一个完全物理隔离的单元,模块间的通讯是基于面向服务架构思想来实现的。在这里,服务=接口 + 实现。此外,OSGi提供了一个服务注册表,模块可以向服务注册表注册其提供的服务,并且可以从服务注册表动态的查询和绑定服务。由于服务是动态可替换 的,我们无法确认我们需要的服务由谁来提供、什么时候提供、什么时候被替换成另一个服务实现。
OSGi构建的模块是完全可重用的模块,如果我们要更新模块的功能,我们有一种选择,那就是使用其提供的模块扩展功能。OSGi的模块扩展是基于 ExtensionPoint-Extension方式来实现扩展,提供扩展功能的模块定义一个ExtensionPoint,而实现扩展的模块则定义一 个Extension。当实现扩展的模块被启动或停止时,它会向提供扩展的模块注册扩展或者卸载扩展。
每一个模块具有一个确定的生命周期状态,OSGi中有四个持久状态和两个瞬时状态。持久状态分别为Installed、Resolved、 Active和Uninstalled,瞬时状态分别为Starting和Stopping。内核暴露了生命周期状态操作接口,从而,我们可以通过更改模 块的生命周期状态来改变其提供的功能。
此外,OSGi体现了一种更为灵活的软件体系结构,我把它归纳为“横向切割 + 纵向分层”。在下图中,一个应用系统由Movies模块和Logs功能组成,每一个功能都需要获取用户输入、验证、业务操作和数据访问。在这,应用系 统=Movies功能 + Logs功能 + 其它功能,即应用系统是功能的横向组成;然而,功能 = 获取用户输入代码 + 验证代码 + …,即每一个功能是代码的纵向组织而成的。一个应用系统中,功能间的交互一般很少,而功能内部的实现则非常的耦合。OSGi更是体现了这种行为,基于 OSGi,每一个应用系统按照功能被横向切割成不同模块,而每一个模块又根据不同的复杂度进行纵向分层架构,这种思想与软件工程的“高内聚、低耦合”非常 的吻合。因此,我非常喜欢OSGi提倡的软件体系结构。
目前,OSGi已经被以下公司应用在不同的软件系统。
ØIBM的Eclipse、WebSphere
ØOracle的Weblogic
ØParamus的Infiniflow Service Fabric
ØProSyst的ModuleFusion
ØRed Hat的JBoss
ØSpringSource的SpringSource应用平台
ØSun Microsystem的GlassFish企业服务器
ØBWM车载系统
Ø尤埃SaaS引擎云计算PaaS平台
2 OSGi解决了什么问题
在我看来,OSGi着重解决了以下三个问题:重用性、软件复杂度和可维护性。
(1)可重用性
重用已经是个老话题了,然而重用实施并没有那么简单,原因有:没有统一标准、需要合理的设计与科学的方法、习惯于代码级的低层次重用等。在OSGi 里面,重用的粒度为模块。每一个物理隔离的模块为重用的基本单元,其重用的方法可以为:(1)在一个OSGi内核中安装一个模块从而来重用该模块的功能; (2)建立一个模块仓库,实现仓库级重用;(3)直接将一个模块拷贝过来。标准的重用方式,不需要修改任何的代码,不对其它模块产生任何的影响。
(2)软件复杂度
一个复杂的软件系统一般都需要一个架构完整的团队来实施,这样的系统也更需要一个灵活的软件体系架构。我经常听到用户给我的抱怨说,他们的应用系统 构建和维护都非常的痛苦。目前RUP、MOF的提出都是要从一定程度上解决软件复杂度问题。我曾在Sybase工作,我们公司也构建了一个框架来保证复杂 系统的构建。一个复杂软件系统通常需要几个部分配合来实施。没有一个灵活、符合团队配合的架构,想要实施这种应用系统,其复杂度是可以想象的。OSGi提 供了一个模块化组合的思想,由架构师团队对整个系统进行模块化拆分,每一个模块再由不同的团队来实施,这样能够确保团队间不会太多的影响与干扰,也同时降 低了模块实施的复杂度。
(3)可维护性
软件维护是一件非常痛苦的事情,通常在修改一个Bug或者添加一个新的功能时,我们都可能会引入新的Bug,这是因为软件内部的依赖比较复杂,从而 “牵一发,动全身”。在维护过程中,我们最担心的就是引入Regression,Regression就是“回退”,即我们修改Bug时让以前可以工作的 功能不能够再工作了。OSGi通过模块化分割、面向服务通讯方式来降低模块间的依赖与影响,也使得模块维护负担减轻,从而能够改善我们维护的负担。另外, 软件升级也是一个问题,没有一个良好的模块化组织,我们并不能通过局部更新来更少的影响整个软件系统。
我们在维护的过程中,也常碰到另一个问题,就是经常需要到客户所在地进行维护。OSGi能够支持动态部署,我们可以远程的动态增加与禁止某项功能、更新某个模块,甚至建立一个统一更新的模块仓库,这样我们不再需要到客户那里实施更新,减少我们的成本。
附件是我上个周末实施的一次关于OSGi.NET的培训和示例,大家可以看一下,以后多多交流。
/Files/baihmpgy/体验OSGi.NET.pdf
/Files/baihmpgy/MovieStore.zip
要运行示例,你需要下载UIOSP安装包,尤埃开放服务平台试用版下载
转自:道法自然
http://www.cnblogs.com/baihmpgy/archive/2011/01/10/1931945.html
- 体验OSGi.NET.pdf (542.7 KB)
- 下载次数: 12
- MovieStore.zip (507.8 KB)
- 下载次数: 14
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1566OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20304.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2487摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1422随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1409随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1633OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12481、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1057不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1227registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1361在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1305osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1164软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3537将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1329Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11541、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1420Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13291、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1207一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1155当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1558OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
OSGI(Open Service Gateway Initiative)是一个开放的中间件平台,旨在为各种嵌入式设备提供通用的软件运行环境,能够消除设备操作系统和硬件之间的差异。这个平台的核心是它的模块化系统,允许应用程序和服务动态...
OSGI的PPT教程,写得很不错,重点都在里面,如果把这个PPT搞懂了,那OSGI基本也全会了。
标题中的“乱凑的一个osgi的demo”表明这是一个关于OSGi(Open Service Gateway Initiative)的示例项目,可能是一个简单的实现或演示了OSGi框架的基本功能。OSGi是一种Java模块化系统,它允许动态地发现、加载和...
在这个“osgi数据库连接demo”中,我们将探讨如何在OSGi环境中配置C3P0作为Oracle数据库连接池,并集成iBATIS作为数据访问层。 首先,C3P0是一个开源的JDBC连接池,它提供了一些额外的功能,如自动管理数据库连接、...
本示例“osgi自定义控制台命令demo”将向我们展示如何创建和实现自己的控制台命令,以增强OSGi的交互性。 首先,理解OSGi中的bundle至关重要。Bundle是OSGi的核心构建块,类似于Java中的jar文件,但包含了元数据,...
NULL 博文链接:https://chinasxhz.iteye.com/blog/256689
在标题“osgi-ds对应的demo”中,我们可以推测这是一个关于OSGi Declarative Services的示例项目。这个项目可能包含了两个部分:“1..1”和“1..n”,这可能代表了两种不同的服务关系或服务配置模式。"1..1"可能表示...
很基础全面的OSGI ppt教程,讲解的很详细。
在这个“osgi基础demo-搭建servlet”项目中,我们将探讨如何在OSGi环境中创建并运行一个简单的Servlet应用程序。 首先,我们需要理解OSGi的核心概念。OSGi基于服务导向架构,每个模块称为一个Bundle,每个Bundle...
在IT行业中,构建高效、可扩展的Web应用程序是至关重要的,而OSGi(Open Services Gateway Initiative)和Spring框架的结合提供了这样的解决方案。本篇将详细探讨如何基于OSGi和Spring来开发Web应用,并通过提供的...
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ; charset=UTF-8"> <title>a test page <body>Hello, This is a test page! </html>
【OSGi介绍.ppt】 OSGi,全称为Open Services Gateway Initiative,中文译为开放服务网关倡议,是一种针对Java平台的动态模块系统。OSGi旨在解决软件开发中的复杂性问题,提供了一种模块化、可扩展且动态化的系统...
在"OSGi in Action"的PPT中,内容主要围绕如何利用OSGi与流行框架集成、将现有系统迁移到OSGi,以及OSGi应用的设计和开发最佳实践。 1. 使用OSGi与流行框架集成: - Hibernate:演示了如何在OSGi环境中使用...
《OSGi原理与最佳实践》这本书是学习OSGI的好资料,它深入浅出地介绍了OSGI的核心概念和实际应用,对于理解OSGI的工作原理和掌握其最佳实践非常有帮助。此外,可以通过访问博客链接...
OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个JVM上运行多个版本的相同库或服务,从而解决了不同版本jar包冲突的问题。本示例通过一个名为“myself”的工程,展示了如何...
OSGi(Open Services Gateway Initiative)和Spring是两个在Java开发中广泛应用的技术框架。OSGi是一种模块化系统,它允许开发者创建可热插拔的模块,称为"bundles",以实现更灵活、可维护的软件架构。Spring则是一...
OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为一系列可独立部署、更新和交互的服务。林昊所著的《OSGI实战》与《OSGI进阶》是深入理解OSGI技术的重要参考资料,适合...