- 浏览: 1466037 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
本文介绍的是软件架构设计的三个唯独,分别是面向对象、面向方面、面向服务。希望对你有帮助,一起来看。
架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。
架构设计有三个维度,或者说是我们在考虑架构时需要思考三个方向。
这三个维度分别为面向对象、面向方面、面向服务。
这三个维度可以看作是正交的,但不同维度会互相印证,互相支撑,整个架构的示意图如图所示。
面向对象
面向对象技术最初是从面向对象的程序设计开始的,它的出现以上世纪60年代Simula语言为标志,并在Smalltalk语言的完善和标准化过程中得到更多的扩展和对以前思想的重新注解。
上世纪80年代中后期,面向对象程序设计逐渐成熟,被计算机界理解和接受,人们又开始进一步考虑面向对象的开发问题。直到现在,面向对象已经成为一种非常流行的编程方式,以及软件设计的架构。
面向对象提出有三个主要目标:重用性、灵活性和扩展性,强调对象的“抽象”、“封装”、“继承”和“多态”。它能让人们以更加接近于现实世界的方式来思考程序,这点可以说是面向对象最大的进步。
在OO思想的运用上,业界出现了很多好的经验与技巧,从而涌现出大量的设计模式,可以说面向对象是系统分析与设计时的一个很重要的方面。
面向方面
面向方面最初来源于hook技术,本质上就是满足扩展的需求,可以在程序中自由扩展功能。
面向方面不仅仅是一门编程技术,同样也是一种架构设计的思路。如果说OO是纵向地分析、切割整个系统,那么可以认为AOP是横向地对系统作切片。
简单地理解,OO与AOP分别从两个不同的角度给我们提供了分析系统的思路。面向方面可以弥补面向对象的缺陷,两种方式有机的结合在一起,可以更加有效地对系统进行分析。
我们认为OO是接近于人类认识自然的思维方式,但对于东方而言却并不一定是这样的。
当西方人看到一个复杂系统的时候,只会有一种思路,就是“分解”,将系统分解成一块一块,然后每个部分进行研究。
当东方人看到一个复杂系统的时候,更多地会关注系统中存在的关系,将系统作为一个有机的整体进行研究,这也是东方和西方在事物看法上存在的差异。
这两种思维方式都没有问题,如果结合起来分析问题,解决问题会更好。面向对象与面向方面也同样如此,都能对应到人类认识自然的思维方式上。
面向服务
面向服务可以说是最近炒得比较火热的概念。包括现在提到的SaaS(Software as a service),软件即服务。准确而言,面向服务不仅仅是软件行业的概念,这个要从社会的产业结构说起。
社会产业总共分为三个,第一产业农业,第二产业工业,第三产业服务业。最早社会的主要产业是第一产业农业,将近有几万年的历史。
十八世纪下半叶在英国开始的工业革命,对人们的生活产生了根本性的影响,社会的主要产业成了第二产业工业。
现在仍然属于工业时代,或者有人说的“后工业时代”。而在后工业时代,社会的经济体制必定要向第三产业服务业逐渐转型。面向服务其实是社会经济体制重心的一种迁移。
还是说回到软件行业,社会的主要产业将转变成服务业,自然软件行业也会出现对应的变化,那就是这里提到的面向服务。面向服务今后会影响到软件的交付模式,会对整个软件行业的体制产生影响。
而说到架构层面,面向服务是系统发布功能的一种方式。并且基于这种方式下不同的系统之间能有效地通信、协作。常见的实现技术就是Web Service。
软件全局观
软件架构设计的三个维度:面向对象、面向方面、面向服务。
最年长的一个维度就是面向对象,发展了好几十年,也是相对而言比较成熟的一个维度。它解决的问题是系统内部结构的设计。
面向方面思想的提出能够弥补面向对象的缺陷。面向对象的方式不能实现横切关注点的分离,而面向方面正是为了解决这个问题。面向方面与面向对象一样都是解决系统内部结构的设计。
面向服务更多的是涉及到系统的外部,简单地说就是发布功能。它并不关注系统内部结构的实现,所以说面向服务与面向对象或者面向方面并不冲突。
这三个维度并不是绝对孤立的,它们之间会互相影响、制约,相互发展的。我们在分析架构的时候需要同时考虑到这三个维度的问题,这样有助于我们设计出更加优秀的架构。
希望通过本文的介绍,能够给你带来帮助。
发表评论
-
LAMP网站架构方案分析
2011-09-21 11:09 1269LAMP(Linux-Apache-MySQL-PHP ... -
大流量网站的底层系统架构分析
2011-09-10 22:01 1161大流量、高并发的网站的底层系统架构 http://www.h ... -
十步构建大型网站架构(2)
2011-09-07 16:21 1398架构演变第六步:分库 享受了一段时间的系统访问量高速增长的幸 ... -
十步构建大型网站架构(1)
2011-09-07 16:20 1363今天我们来谈谈一个 ... -
架构、框架、设计模式之间的关系简述
2011-09-07 16:00 1633本文向您讲解架构、框 ... -
UML实践----用例图、顺序图、状态图、类图、包图、协作图
2011-09-07 10:01 1931面向对象的问题的处理 ... -
UML建模之时序图
2011-09-06 20:19 2974http://www.uml.org.cn/oobject/2 ... -
UML 活动图
2011-09-06 20:13 1419UML 活动图记录单个操作 ... -
UML 状态图
2011-09-06 20:04 1282http://www.uml.org.cn/oobject/2 ... -
三种模型
2011-09-06 19:22 1337《uml面向对象建模与设计》本书提出了一套面向对象的表示 ... -
5 款基于 Web 浏览器的建模工具
2011-09-05 10:29 1230http://www.oschina.net/news/209 ... -
UML用例图
2011-09-02 16:31 5015一、UML用例建模简介 ... -
深入浅出REST
2011-08-19 09:48 1131不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正 ... -
数据量非常大的照片分享社区网站架构设计
2011-07-21 21:31 9466数据库一向是网站架构中最具挑战性的,瓶颈通常出现在这里。又拍网 ... -
相关知识
2011-07-04 16:34 1237(二) 架构的分类 架构由于应用的不同而存在不同。大体而言, ... -
软件需求分析方法总结--轻巧建模之需求篇(二)
2011-06-27 23:07 1978http://hi.baidu.com/tdskee/blog ... -
软件需求分析方法总结--轻巧建模之需求篇(一)
2011-06-27 23:05 2207需求从哪儿来? 来自于项目甲方,还是直接或间接的用户、经 ... -
软件需求分析方法总结--撰写优秀的需求
2011-06-27 23:04 1595软件需求常常被写得很糟且难于遵循。清楚地阐明你的需求将使每位项 ... -
软件需求分析方法总结--如何分析问题和需求
2011-06-27 23:03 2260如何分析问题和需求 万事开头难,需求没有完全分析清楚,系 ... -
软件需求分析方法总结--如何进行软件需求分析(三)
2011-06-27 23:02 14278.需求分析的过程 需 ...
相关推荐
架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。
然后,提出了一种基于“三层和七功能分区”的软件定义载荷架构,设计了一种软件定义载荷设计和研制支撑数字化平台设计架构,同时提出了软件定义载荷业务软件设计流程;最后,结合在轨有效载荷研制经验,总结了基于...
, 全书主要内容从三个维度展开:首先是内部扩展的维度,深入探讨了高效B树索引、高效表设计、查询优化器等数据库架构设计与优化的核心技术,以及高并发Oracle数据库系统架构与设计的方法论和常见的高并发案例;...
人工智能技术驱动传媒业发展的三个维度.pdf
从设计、制造、封测三个维度去了解. 集成电路产业通常被分为芯片设计、芯片制造、封装测试三大领域带你了解半导体职业相关 半导体行业发展历程 中国半导体行业现状 认识半导体 基础概念 分类 半导体产业链 产业...
基于深度学习的议题设计的三个维度.pdf
高并发Oracle数据库系统的架构与设计主要内容从三个维度展开:首先是内部扩展的维度,深入探讨了高效B树索引、高效表设计、查询优化器等数据库架构设计与优化的核心技术,以及高并发Oracle数据库系统架构与设计的...
深入解析ace架构设计与实现原理》从构架模式、编程示例和源代码3个维度系统地对经典网络框架ace(adaptivemunicationenvironment)的架构设计和实现原理进行了深入分析,它能解决4个方面的问题:,帮助框架设计者...
比如:数据库的表 结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险;工程结构混乱导致后续 维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以 Java 开发者为中心 视角,划分为编程规约、异常日志、...
构建法治课堂深度学习的三个维度.pdf
通过这三个模块,掌握后台架构的共性技术后,不管业务形态如何变化,你都可以直接进行架构移植。 第五模块:通用架构模式。 除了以上三大类技术点之外,构建一个微服务系统必不可少的架构技能,包含对外 SDK 设计、...
另外本文还讨论了架构设计级别和领域、资源维度,以及架构如何与质量和设计相关联。在信息技术领域,架构在业务现代化、IT转型、软件开发和企业内的其他重要举措等方面发挥了重要作用。使用架构可以为业务问题提供...
白酒行业专题分析报告:三个维度看当下白酒资产的投资价值.pdf
家电行业2020年投资策略:竞争变革估值,三个维度看家电.pdf
第1篇,从演化、模式、要素三个维度描述网站整体架构。 第2篇,从性能、可用性、伸缩性、扩展性、安全这五个要素方面详细描述网站架构核心原理,其中重要的负载均衡、异步处理、分布式缓存等技术方案又在不同章节从...
《大数据架构详解:从数据获取到深度学习》从架构、业务、技术三个维度深入浅出地介绍了大数据处理领域端到端的知识。主要内容包括三部分:第一部分从数据的产生、采集、计算、存储、消费端到端的角度介绍大数据技术...
需要从各个不同的角度去权衡,主要包括实践背景、技术选型、架构设计,我们基于这三个方面进行了架构实践,下面分别从这三个方面进行详细分析讨论:该数据服务平台架构设计之初,实践的背景可以从三个维度来进行说明...