- 浏览: 1123394 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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>tru ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
先引出几个问题。首先,对于分层,如何来分层?仅仅纵向分层是否够用了?什么是“二维分层”呢?一提到模块化,很多人会说“我们的系统就是基于模块化来构建”,稍微一多问,要么和分层差不多,要么就说我们是基于一个又一个的dll文件来实现模块化的,那应该怎样才算模块化呢?“开放平台”怎么回事?
关于“二维分层”软件体系结构的提法比较少见。不过,对于分层软件体系结构,估计是个傻子都知道。“模块化”也是傻子都知道的一个词,软件工程最经典之一的词莫过于“高内聚、低耦合”。
在我个人看来,软件体系结构不是套路,而是根据实际应用系统的需求来确认的,甚至有时候需要根据实际情况来组合使用经典的“三层”、“管道”等软件体系结构风格。但不管怎样,从最最抽象的角度来看待一个软件系统时,软件系统就可以抽象成如下的结构,即应用系统总是由一个又一个功能构成的,而每一个功能总是由一段又一段的代码来构成的。
在这里每一个功能的代码段并不完全一致,当我们应用传统的分层软件体系结构来设计应用系统时,我们总是需要预想整个应用系统大致的代码,然后为大致的代码做一个归类,从而制定每一个层次大致的功能及其规范,每一层次一般也就包含了相应功能的代码段,理想状态下,这样的体系结构可能如下。
聪明的你肯定看出来,为了使用统一的分层架构来设计所有功能,那么在一个层次都必须包含了不同模块相似逻辑代码,那就有可能出现一种情况,就是一个层次在不同模块的编码实现复杂度也不一定相同,比如在上图的层N设计中,功能2的代码段N要比其它两个模块的代码段简单的多得多,如果这种异常情况在一个应用系统出现多次的话(特别是在大规模应用系统,这将是很常见的事情,就像原来我在Sybase工作时,数据管理、数据监控、数据复制等功能的复杂度都不一样),为应用系统统一设计的分层在异常情况下就显得特别的别扭。因此,我觉得在这种情况下,仅关注代码纵向行为而设计的分层软件体系结构是不够的。除了考虑纵向代码行为,我们还需要关注软件系统的整体功能。从“二维”的角度分解软件,“二维”的核心就是:从横向维度考虑软件系统的功能组成,从纵向维度来考虑每一个功能的代码行为,将若干个功能组合在一起作为纵向分层的单元,即“将若干功能横向切割成不同的模块,对每一个模块进行统一的分层架构”。
关注“二维”的分层软件体系结构会使架构的设计更加适合实际应用系统,不过,需要注意的是,横向维度关注的是应用系统的功能,因此,横向切割必须以功能为单元来组织,这也就意味着,模块是由若干个功能构成的。这样,构建的模块间的依赖也比较小。这话的意思,就是要强调,模块不是以纵向层次来划分的,因为纵向层次具有很强的代码依赖关系,一般而言,上层是完全依赖于下层的。
关于分层的话题,本文就描述到这里,欢迎大家能围绕这个问题继续展开。接下来,我们再来谈一下模块化。
在我给客户推荐OSGi模块化的优点时,很多客户会说“我们的应用系统就是基于模块化来构建的”,好,那我们来交流一下模块化。一旦深入讨论之后,就会发现不少客户的模块化就是所谓的分层,或者所谓的程序集就是模块化。而一旦再深入讨论模块的可复用性、隔离性、可维护性和隔离性时,客户会简单的说,我们拷贝代码或者拷贝dll过来就复用了。如果再深入问下去的话,会发现并不仅仅拷贝就解决了复用的问题,在拷贝的同时需要大量的修改。呵呵,这非常的有意思,:)。关于模块化,我非常推荐OSGi规范(我们也实现了OSGi.NET规范)提倡的模块化。在这里的模块,是一个完全物理隔离,可以动态部署、动态更新、动态卸载、动态启动与停止,所有的模块都可以躺在模块仓库中,以备我们真正使用“搭积木”的方式构建系统。从OSGi的角度来看,我们可以为应用系统设计一个大致通用的企业级总体架构,如下所示。这个架构实际上,还可以设计的更加开放一些,可以适合于传统软件和目前流行的云计算软件以及开放平台软件的构建。
在这个系统架构图中,一个应用系统由客户端、服务端、模块仓库三部分构成。客户端和服务端基于模块化构建,相应的模块称为功能模块和服务模块,这里面的模块均从模块化仓库获取,可以实现自动更新、远程动态管理与部署、模块多版本并存。每一个功能模块按照要实现的功能复杂度进行个性化的模块体系结构设计。这是一种理想化的状态,正如《未来10年:OSGi、Spring DM》作者罗时飞描述的OSGi提倡理念一样。事实上,我的老雇主Sybase也是基于这样的思路来构建Sybase Central和Sybase Control Centre产品的。
目前我团队也在致力于在.NET平台上实现这么一个理想化的模块化平台,并基于这个模块化平台实现一个“大和”的统一开放平台,目前已经取得了不错的进展,该平台的体系结构如下所示。
我们希望通过这个平台来集中广泛的开发者们的聪明才智,构建一个庞大的插件仓库,让不同的开发者、不同的最终软件客户都可以从这个统一开放平台受益。这样构建的软件系统才是我心目中最理想的真正的“模块化”!
当然,很多事情都是说起来容易,做起来困难,不过,这并不代表不可能,至少我们已经通过一点一滴实践了这样的模式。文中的描述也可能疯狂或者有偏差,欢迎任何指正。
转自:道法自然 http://www.cnblogs.com/baihmpgy/archive/2011/05/22/2053742.html
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1514OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 19904.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2374摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1375随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1365随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1569OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12091、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1018不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1191registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1324在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1266osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1117软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3485将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1291Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11071、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1372Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 12971、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1179一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1125当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1499OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
二维数组的初始化 学习目标 课程导入 1 熟记二维数组元素访问的方法; 2 掌握二维数组初始化的简写方法; 学习目标 课程导入 3 掌握使用双重循环遍历二维数组的方法; 4 了解使用输入值给二维数组初始化的方法 5 ...
自己之前写过的kinect V2的坐标映射的通用性太差,所以这次写了一个节点,利用深度相机ROS节点发布的深度与彩色对齐的图像话题和图像信息内外参话题,将二维坐标映射到三维坐标系。 - 我挂上来的这个节点是将鼠标...
Array: 一维和二维初始化,常用易混淆的语义接口!
小波分析实验:二维离散小波变换(Mallat快速算法,很不错的资料,分享给大家
目前主要有美国Rebis 公司的AUTOPLANT(主要包括二维管道绘制软件DRAWPIPE、三维模型软件DESIGNER),美国INTERGRAPH公司的PDS(PLANT DESIGN SYSTEM)以及国内开发的一些三维设计软件。其中DESIGNER、PDS是三维设计软件...
通常所说的Bethe / Gauge对应关系在五个维度上定义不明确,需要“非扰动”完成。 一个相关的问题也出现在三个方面。 已经提出,如果考虑紧凑的S... Faddeev的模块化双重结构是关键要素,它由S 5和S 3几何形状自然实现。
可用于二维设计,标准件有现成模块,直接调取。
二维数组基本操作的编程实现(2学时,验证型),掌握数组的建立、读取数据、压缩存储等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序...
特点:二三维叠加是AlaGIS的主要特点,AlaGIS平台采用的合理的二三维映射使二维图形和三维图形的数据一一对应,从而实现了二维图形和三维图形的有效结合,通过二三维的切换或者透明度变化来达到所期望的图形效果。...
二维名片生成软件,输入相关数据生成二维名片,微信QQ一扫就识别,无需第三方平台和站点。快速简单有效。
欧拉FV 二维非结构化有限体积Euler方程求解器
大地电磁MT二维正演模拟软件 含使用教程和例子数据,陈小斌开发。
二维小波变换,不断分层,依次类推,形成卷积数组
科明德:德国高精度二维直线电机平台选型手册pdf,科明德:德国高精度二维直线电机平台选型手册
matlab 二维 正态 概率密度 二维概率分布
SDL 封装 代码 SDL是一个二维图形类库,它跨平台,在LINUX和WINDOWS都能使用
下面将详细介绍二维数组初始化的相关知识和代码示例。 二维数组的概念 二维数组本质上是一个数组的数组,即数组中的每个元素都是一个数组。它可以用来表示表格、矩阵等具有两个维度的数据结构。二维数组由行和列...
基于Qt的二维图像三维化代码,本人经过3个月的努力终于写出来了,现在跟大家共同分享一下
基于结构网格二维Euler方程的Jameson求解方法
水环境预测软件,水质预测模型,包含河流、湖库的一维水质模型、二维水质模型。内置各种模型公式和解释。针对环境影响评价、环评预测、饮用水水源保护区划分预测具有很好的帮助。