- 浏览: 1156794 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
先引出几个问题。首先,对于分层,如何来分层?仅仅纵向分层是否够用了?什么是“二维分层”呢?一提到模块化,很多人会说“我们的系统就是基于模块化来构建”,稍微一多问,要么和分层差不多,要么就说我们是基于一个又一个的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 1582OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20514.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2523摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1433随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1423随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1645OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12591、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1069不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1246registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1376在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1316osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1181软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3551将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1341Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11611、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1434Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13411、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1213一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1169当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1573OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
智慧建筑可视化运维管理平台解决方案是一种集成GIS(地理信息系统)、BIM(建筑信息模型)和FM(设施管理)技术的高效管理系统,旨在提升楼宇的运营效率和维护质量。该方案结合了现代信息技术与建筑行业的专业知识,...
答:主要的软件开发方法有:结构化开发方法、Jackson(JSP、JSD)方法、原型化开发方 法、维也纳开发方法(VDM)和面向对象的开发方法。 6. 软件生命期各阶段的任务是什么? 答:软件生命期瀑布模型分为六个阶段: ...
### 智慧管廊大数据云平台建设和运营整体解决方案 #### 一、智慧管廊概述 **1.1 设计依据** 智慧管廊的设计依据主要包括国家相关法律法规、行业标准以及地方性规定等。这些依据为智慧管廊项目的规划、设计、建设...
- **典型体系结构**: 分层架构、微服务架构等。 - **设计方法**: 包括组件化设计、模块化设计等。 - **分析与评估**: 对体系结构进行性能、安全性等方面的评估。 - **软件中间件**: 提供通用服务的软件层。 **4.4 ...
这样的设计结构有助于系统更加模块化,方便了设计师根据需要快速构建和修改模具设计。 工作流程遵循自顶向下的策略,整个设计过程包括以下几个步骤: 1. 产品建模:建立产品全息模型,包括结构形体特征、材料属性...
系统的体系结构是分层的,由上至下,每一层实现对下一层的控制。这种设计使得系统在功能上具有良好的模块化,便于维护和扩展。同时,系统提供了一个开放的扩充接口,意味着可以根据未来的发展和需求不断引入新的组件...
多媒体技术的综合应用,如文字、图形、图像、声音、视频影像以及二维三维动画等,使得教育课件更加生动、直观,极大地提高了教学效果和学习者的兴趣。 《数据结构》是计算机科学与技术专业中一门重要的基础课程,它...
Symbian 9.1的体系架构图详细地描绘了该系统的分层结构和模块划分,为开发者提供了清晰的开发指导和技术支持。 #### 二、Symbian 9.1体系架构分析 ##### 1. Java 运行环境及应用框架 Symbian 9.1支持Java应用程序...
这里所说的Lego机器人主要指的是Lego MindStorms EV3系列产品,该系列产品具有模块化设计,可组装成不同形态的机器人,并且支持各种传感器和执行器,非常适合教育和研究使用。 文章介绍的SLAM实现方法采用LeJOS软件...
1. **静态设计维**:通过模块化的方式对代码进行组织,使得各个模块之间既相互独立又紧密相连。 - **模块划分**:根据功能模块的不同,将代码划分为多个子模块,便于后续的并行开发和维护。 2. **动态设计维**:...
- **投影坐标系统**:通过数学变换将地球表面的三维坐标转换为二维平面坐标的过程。投影坐标系统广泛应用于地图制作,因为它能够将地球表面的信息准确地展示在平面上。 **4. 地理实体和地理目标** - **地理实体**...
- **3D扫掠网格:** 通过沿着特定路径复制二维网格来生成三维网格。 - **通过壳产生的实体单元:** 介绍了一种特殊的三维网格生成方法,主要用于壳体结构。 #### 二维网格划分 - **2D网格概要:** 对二维网格的概念...
本书的核心之一是结构运动与三维重建,它详细讲解了二维和三维特征对齐、姿态估计、几何相机校准、三视图结构运动、光束平差法以及结构运动的约束。此外,还涉及了稠密运动估计、参数运动、基于样条的运动、光流法和...
14.1. 计算机体系结构对矩阵算法的影响 14.2 一种基于分解的方法 14.3 一个简单版本 14.4 LINPACK库中的DGEFA子程序 14.5 LAPACK DGETRF 14.6递归LU 14.7 ScaLAPACK PDGETRF 14.8 针对多核系统的多线程设计 14.9 ...
它是《出版物“整个产后和成年小鼠大脑中三维血管网络体系的分层成像和计算分析”中使用的处理管线的一部分。 它收集有关分叉,节段,血管体积和血管外距离的信息。 该信息存储为每个主题的CSV文件,可用于创建...