- 浏览: 1140391 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
软件体系解构是一个比较抽象的概念,按我的理解,可以将其比作一个书架。书架的产生过程大概如下:(1)没有太多的书,想怎么摆都行,不至于太乱、难以分类和查找;(2)越来越多的书籍,你需要考虑是横着排列,还是竖着排列呢?横着排列的话,很容易倒不说,而且很难找到自己想要的且书籍;竖着排列的话,容易找到自己需要的书籍,但是太占地方,而且如果把书竖着摆条长龙的话,拿出几本书后,需要重新整理;(3)因此,我们考虑使用一个架子,这个架子分成几层,每层竖放一排书;(4)在书更多的情况下,需要对每一层加上一个格子,并且为每一本书和每一个格子打上标签;(5)随着时间推移,书架就组成一个图书馆了。软件体系结构对于软件系统构建的作用类似于书架对图书馆的作用了,同时对它的探索也类似人类对图书馆架构优化的探索。这段比喻只是让人初步理解一下它的概念,对其理论在此不作讨论,如果有兴趣的话,可以直接看点书。本文接下来将讨论一下笔者喜欢的一个体系结构。
一个软件系统向用户提供了若干功能,用户使用的每一个功能,我认为,是一种软件纵向代码执行的过程。换句话说,即软件系统是由横向的功能组成,每一个功能的应用是一种纵向代码执行的过程。举个例子,当用户想查询某个股票的行情的话,它会输入一些信息到软件系统,软件系统获取用户输入、执行校验、查询业务逻辑处理、路由到网络某个终端、运行查询服务、执行数据库访问、返回服务结果、经过业务逻辑处理、呈现到用户界面,这种行为从软件系统代码的执行角度来看,可以说是纵向的行为。这种纵向行为中的每一个活动都与前后活动相互关联,在代码中也呈现出直接的依赖。可以这么说,经典的分层体系结构是对横向软件功能的纵向代码的分类,从而划分层次。最初的分层结构是3层体系结构,即根据软件系统各个功能的纵向行为,划分为业务层、逻辑层和数据访问层,随着软件系统日益复杂,开发人员为软件系统抽象了更多类别(层次)的活动,出现了另一7层经典的分层结构。
单从软件系统本身而言,其复杂性由横向(系统功能)复杂度和纵向(涉及的业务逻辑和技术)复杂度组成。分层结构的出现,容易让人只是关注软件的纵向复杂度,对于越复杂的软件系统,我们需要划分成更多的层次。然而越多的层次,意味着更多、更复杂的层间依赖,也使开发、调试变得越来越复杂,在我看来,有点违背了“KISS”原则。当然,有人会说,这已经是最优方案了,也就是面对复杂系统,无奈的最优方案。幸运的是,人们已经发现了这些问题,并衍生了一系列的经典的开发框架,如MVC/MVP/MVVM,IOC,AOP,ORM。这些框架的出现大大降低了复杂系统的复杂性。不过,框架的大量应用,降低系统复杂性的同时,也意味着我们首先需要再付出相应的代价来使用这些框架,引入了更多的编程规则,从另一角度来看,也相应的增加了复杂性。举个例子,一个对象直接依赖另一个对象,肯定要比一个对象通过IOC容器依赖另一个对象来的简单,因为后者不直观而且还应用了新的框架。因此,这种只关注软件纵向活动的分层体系结构是有很大缺陷的。(PS:对于IOC框架,对于我来说,则是能不用最好不用。我想它对我们最大吸引力的地方,就是我们在开发项目的过程中,可以根据需求变化,而直接修改配置文件或者更改少量的代码,避免陷入用户无休止的变更中。当然,IOC的应用也提高了代码的可测性。但是,利用IOC真正有价值的部分只有一点点,因此,我只是觉得按需即可。我以前喜欢追求有艺术的代码,什么是有艺术的代码呢?那就是要有技术含量,殊不知,简单就是艺术!)。
因此,我想换一个角度,从横向复杂度入手,对系统进行模块化切割,从而使得每一个模块尽量的独立且简单。一个纵向复杂度很低的模块,我们甚至什么框架都不需要用到,而且我们可以根据模块的纵向复杂度对每一个模块划分层次。不过,引入模块化进行系统架构,我们不得不解决:(1)如何组装模块?(2)如何解决模块的依赖关系?(3)如何确保模块的独立性,从而降低模块间相互影响?(4)如何开发、调试和部署模块?
OSGi规范的提出,为我们解决了模块化应用的所有问题。对于(1),在OSGi中,每一个模块被称为Bundle,即服务包,由Bundle清单文件、代码文件和资源文件组成。OSGi框架可以从一个文件、文件夹、URL中加载模块。OSGi完整定义了模块化应用系统的单元。对于(2),OSGi提供了2种方法来解决模块依赖:1)是在模块编码的时候,一个模块重用了另一个模块的功能,它通过模块清单的Import、Export、DynamicImport和 Require配置来解决;或者是一个模块继承或在方法、字段的定义上使用了另一个模块的类,它将通过USE指令来定义。2)模块使用了另一个模块提供的服务,这种依赖只能在模块运行的过程中才能体现出来。对于(3),OSGi规范严格定义了框架类加载机制,由Java的ClassLoader代理网络,确保OSGi能够为每一个模块创建独立的类型空间,避免模块间类型的相互影响。对于(4),在开发和部署环节,IDE和OSGi规范已经提供简单、完美的支持,而对于本地调试和远程调试,IDE和运行时虚拟机也都完美支持。
总结:我喜欢的软件体系结构就是模块化(插件化) + SOA!通过模块化思路切割复杂应用系统,通过可管理的服务来解决模块依赖,尽量减少框架的使用和模块的层次,从而使得一切变得简单,达到“简单就是艺术”。
转自: 道法自然 http://www.cnblogs.com/baihmpgy/archive/2009/11/15/1603566.html
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1550OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20194.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2437摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1410随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1398随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1615OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12361、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1040不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1217registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1351在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1289osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1151软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3528将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1321Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11421、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1403Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13211、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1201一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1146当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1542OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
Java应用架构设计中,模块化模式与OSGi是两个关键概念,它们对于构建大型、可扩展且易于维护的系统至关重要。模块化模式使得代码组织更加有序,而OSGi(Open Services Gateway Initiative)则是一种实现模块化的动态...
Java应用架构设计中,模块化模式与OSGi是两种重要的技术,它们对于构建大型、可扩展且易于维护的系统起着关键作用。本篇将深入探讨这两个概念,以及它们如何协同工作来提升Java应用程序的效率和灵活性。 首先,模块...
### OSGi——Java模块化框架的实现与进化 #### OSGi概述 OSGi(Open Service Gateway Initiative)是一项面向Java的技术,旨在提供一个动态模型系统来支持Java平台上的模块化开发。随着软件系统的日益复杂,模块化...
标签"“c#osgi osgi osgi.net_github 模块化" 是对主题的关键词提炼,强调了C#语言、OSGi技术、OSGi.NET实现、代码托管于GitHub的事实,以及框架的主要特性——模块化。 **压缩包子文件的文件名称列表:** 由于只...
OSGi(Open Service Gateway Initiative)是一项由OSGi联盟发起的技术标准,它定义了一个动态的模块化网络,可以在Java应用程序中安装、启动、停止和卸载服务。OSGi技术主要用于构建动态化、模块化的应用程序和服务...
Java应用架构设计、 如何进行模块化模式、与OSGi有什么联系?
《Java应用架构设计-模块化模式与OSGi》是一本由Kirk著、张卫滨翻译的书籍,它深入探讨了在Java环境中如何构建可扩展、可维护的大型应用程序。书中的源码提供了丰富的实例,帮助读者理解并实践模块化模式和OSGi...
在"OSGi与Equinox 创建高度模块化的Java系统 第5章 源码"中,我们可以深入学习如何利用OSGi和Equinox构建模块化系统。这一章节可能涵盖了以下几个核心知识点: 1. **模块系统**:OSGi的核心是模块系统,它定义了...
总结来说,本教程结合了Java应用的模块化设计与OSGi技术,以及ArcGIS API for JavaScript的开发实践,为IT专业人士提供了深入理解和应用这些技术的全面指南。通过学习,开发者不仅可以提升Java应用的架构设计能力,...
Java应用架构设计:模块化模式与OSGi 英文版 中文版介绍: 全球资深Java技术专家的力作,系统、全面地讲解如何将模块化设计思想引入开发中,涵盖18个有助于实现模块化软件架构的模式 中文目录: 第一部分 模块化...
在本章中,我们将深入探讨如何使用OSGi(Open Service Gateway Initiative)框架,特别是Equinox实现高度模块化的Java系统。Equinox是Eclipse基金会提供的一个OSGi实现,它允许开发者构建可热插拔的组件,使得系统...
OSGi的模块结构是基于bundle的,每个bundle是一个独立的模块,能够动态地加载和卸载。 OSGi的模块结构包括三个层次: * OSGi Module Layer:提供了模块的管理和加载 * OSGi Life Cycle Layer:提供了模块的生命...
OSGi与Equinox 创建高度模块化的Java系统 This first part of the book introduces OSGi and Equinox, Eclipse’s implementation of the OSGi standard. Chapter 1outlines the history and context of OSGi. Its ...
在IT领域,OSGi是一种模块化系统和Java服务平台,它提供了一种动态管理软件组件的能力。本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和灵活的Java应用程序。 首先,我们需要了解OSGi的核心概念...
OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它为开发人员提供了一种动态、模块化的运行时环境。在OSGi中,应用程序被分解为称为“bundle”的独立单元,这些bundle可以相互依赖并独立地加载、...
读书笔记:《Java应用架构设计模块化模式与OSGi》源代码
OSGi(Open Services Gateway Initiative)是一种Java平台的模块化系统,它允许开发人员将应用程序分解为独立、可重用的模块,称为服务。Equinox是IBM贡献给Eclipse基金会的一个OSGi实现,它是Eclipse IDE的基础,...
OSGi(Open Services Gateway Initiative)是Java平台上的一个模块化系统和动态服务框架,它为构建可升级、可管理、可复用的软件组件提供了一种标准方式。这个框架允许开发者将应用程序分解成一系列独立的模块,每个...
OSGi模块层是框架中最基础的部分,它实现了Java的模块化特性,但又与Java现有的模块化特性有所不同。 首先,文章介绍了模块化的概念。模块化是将大型系统分解为多个较小的逻辑单元,通过设定模块间的逻辑边界来改善...
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...