到底如何区分什么是架构-框架-模式-平台

余年寄山水
958次浏览
2020年08月04日 00:22
最佳经验
本文由作者推荐

襄阳教研网-肉麻的话


到底如何区分什么是架构、框架、模式和平台?
2010-12-09 11:58 by 时空印记, 20490 阅读, 7 评论, 收藏, 编辑

区分什么是架构、框架 、模式和平台,一直都感觉这几个词过于抽象和模糊,今天大家来说
说到底什么是架构、框架、模式和平 台?

收集了的一些来自网上各自的定义和区分如下:

来自 冬眠的蛤蟆 概念:
设计模式<框架<架构<平台,从复用角度讲,设计模式是代码级复用、框架是 模块级复用、
架构是系统级复用、平台是企业应用级复用。

1、设计模式 为什么要先说设计模式?因为设计模式在这些概念中是最基本的,而且也比较简单。那么什
么是设计 模式呢?说的直白点,设计模式就是告诉你针对特定问题如何组织类、对象和接口
之间的关系,是前人总 结的经验。比如我要在代码中实现一个全局唯一的配置类,那么就使
用Singleton模式。设计模 式在实际编码工作和设计框架时会被使用到,而更高层的架构和
平台则不会太关注它。
2、框架
做WEB开发接触到最多的框架可数ORM框架,ORM框架只是所有数据关系映射 框架的
统称,具体的如NHibernate、ActiveRecord等,框架是为了解决特定问题 而存在的,其它
诸如模板框架、缓存框架,框架不能直接使用,需要二次开发。
3、架构 < br>从大的层面来说,比如针对公司业务的B2C网站系统架构,里面可能会用到多种解决各方
面问题 的框架,关注的是技术整合、扩展、可维护性。换个角度,在框架中也会涉及到架构
问题,比如开发NH ibernate框架,也需要考虑如何进行设计。
4、平台
平台的概念类似框架,但又结 合的架构的考虑,它是更高层面上的“框架”,准确说是一种应
用。它是针对企业用户,为解决企业业务 需要而形成的产品。

来自 http: 网的定义:
什么是架构?
软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,
对于其定义, 学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的
不同理解,以下是一些主流 的标准观点。


ANSIIEEE 610.12-1990软件工程标准词汇对于 体系结构定义是:“体系架构是以构件、
构件之间的关系、构件与环境之间的关系为内容的某一系统的基 本组织结构以及知道上述内
容设计与演化的原理(principle)”。
Mary Shaw和David Garlan认为软件体系结构是软件设计过程中,超越计算中的算
法设计和数 据结构设计的一个层次。体系结构问题包括各个方面的组织和全局控制结构,通
信协议、同步,数据存储 ,给设计元素分配特定功能,设计元素的组织,规模和性能,在各
设计方案之间进行选择。Garlan & Shaw模型[1]的基本思想是:软件体系结构={构件(comp
onent),连接件(co nnector),约束(constrain)}.其中构件可以是一组代码,如程序的模块;
也可以 是一个独立的程序,如数据库服务器。连接件可以是过程调用、管道、远程过程调用
(RPC)等,用于 表示构件之间的相互作用。约束一般为对象连接时的规则,或指明构件连接
的形式和条件,例如,上层构 件可要求下层构件的服务,反之不行;两对象不得递规地发送
消息;代码复制迁移的一致性约束;什么条 件下此种连接无效等。
关于架构的定义还有很多其他观点,比如Bass定义、Booch&Ru mbaugh&Jacobson
定义、Perry & Wolf模型[7]、Boehm模型等等, 虽然各种定义关键架构的角度不同,研
究对象也略有侧重,但其核心的内容都是软件系统的结构,其中以 Garlan& Shaw模型为
代表,强调了体系结构的基本要素是构件、连接件及其约束(或者连接 语义),这些定义大
部分是从构造的角度来甚至软件体系结构,而IEEE的定义不仅强调了系统的基本 组成,同
时强调了体系结构的环境即和外界的交互。
什么是模式?
模式(Pattern)的概念最早由建筑大师Christopher Alexander于二十世纪七十年代提
出,应用于建筑领域,八十年代中期由Ward Cunningham和Kent Beck将其思想引入到
软件领域,Christopher Al exander将模式分为三个部分:首先是周境(Context,也可以称
着上下文),指模式在何 种状况下发生作用;其二是动机(System of Forces),意指问题或
预期的目标;其三 是解决方案(Solution),指平衡各动机或解决所阐述问题的一个构造或配
置(Configu ration)。他提出,模式是表示周境、动机、解决方案三个方面关系的一个规
则,每个模式描述了 一个在某种周境下不断重复发生的问题,以及该问题解决方案的核心所
在,模式即是一个事物(thin g)又是一个过程(process),不仅描述该事物本身,而且提出
了通过怎样的过程来产生该事物 。这一定义已被软件界广为接受。
架构和模式应该是一个属于相互涵盖的过程,但是 总体来说Architecture更加关注的
是所谓的High-Level Design,而模式 关注的重点在于通过经验提取的“准则或指导方案”在
设计中的应用,因此在不同层面考虑问题的时候就 形成了不同问题域上的Pattern。模式的
目标是,把共通问题中的不变部分和变化部分分离出来。 不变的部分,就构成了模式,因此,
模式是一个经验提取的“准则”,并且在一次一次的实践中得到验证 ,在不同的层次有不同的
模式,小到语言实现(如Singleton)大到架构。在不同的层面上,模 式提供不同层面的指导。
根据处理问题的粒度不同,从高到低,模式分为3个层次:架构模式(Arch itectural Patter
n)、设计模式(Design Pattern)、实现模式(Implementation Pattern).架构模式是模式中的
最高层次,描述软件系统里的基本的结构组织或纲要,通常提供一组事先定义好的子系统,
指定它们的 责任,并给出把它们组织在一起的法则和指南。比如,用户和文件系统安全策略
模型,N-层结构,组件 对象服务等,我们熟知的MVC结构也属于架构模式的层次。一个架
构模式常常可以分解成很多个设计模 式的联合使用。设计模式是模式中的第二层次,用来处
理程序设计中反复出现的问题。例如,[GOF9 5][2]总结的23个基本设计模式——Factory
Pattern, Observer P attern等等。实现模式是最低也是最具体的层次,处理具体到编程语
言的问题。比如,类名,变量 名,函数名的命名规则;异常处理的规则等等。


来自:http:
由 于[GOF95]是论述软件模式的著作的第一本,也是OO设计理论著作中最流行的一本,
因此有些人 常常使用设计模式(Design Pattern)一词来指所有直接处理软件的架构、设计、
程序实 现的任何种类的模式。另外一些人则强调要划分三种不同层次的模式:架构模式(Ar
chitectu ral Pattern)、设计模式(Design Pattern)、成例(Idiom)。成例有时称为代码模式(C
oding Pattern)。
这三者之间的区别在于三种不同的模式存在于它们各自的抽象层次和具体层次上。架构
模式 是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏
可以影响到总体布 局和框架性结构。设计模式是中等尺度的结构策略。这些中等尺度的结构
实现了一些大尺度组件的行为和 它们之间的关系。模式的好坏不会影响到系统的总体布局和
总体框架。设计模式定义出子系统或组件的微 观结构。代码模式(或成例)是特定的范例和
与特定语言有关的编程技巧。代码模式的好坏会影响到一个 中等尺度组件的内部、外部的结
构或行为的底层细节,但不会影响到一个部件或子系统的中等尺度的结构 ,更不会影响到系
统的总体布局和大尺度框架。
1、代码模式或成例(Coding Pattern 或 Idiom)
代码模式(或成例)是较低层次的模式,并与编程语言密切相 关。代码模式描述怎样利
用一个特定的编程语言的特点来实现一个组件的某些特定的方面或关系。
较为著名的代码模式的例子包括双检锁(Double-Check Locking)模式等。
2、设计模式(Design Pattern)
一个设计模式提供一种提炼子系统 或软件系统中的组件的,或者它们之间的关系的纲要
设计。设计模式描述普遍存在的在相互通讯的组件中 重复出现的结构,这种结构解决在一定
的背景中的具有一般性的设计问题。
设计模式常常划分成不同的种类,常见的种类有:
创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factor
y)模式、原型(Prototyp e)模式、单例(Singleton)模式,建造(Builder)模式等
结构型设计模式, 如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)
模式、享 元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式等
行为型模式,如模版方法(Template Method)模式、观察者(Observer)模式、迭代子(Iterator)模式、责任链(Chain of Responsibility)模式、备忘 录(Memento)模
式、命令(Command)模式、状态(State)模式、访问者(Vis itor)模式等等。
以上是三种经典类型,实际上还有很多其他的类型,比如Fu ndamental型、Partition
型,Relation型等等
设计模式在 特定的编程语言中实现的时候,常常会用到代码模式。比如单例(Singleto
n)模式的实现常常 涉及到双检锁(Double-Check Locking)模式等。
3、架构模式(Architectural Pattern)
一个架构模式描述软件系统里的 基本的结构组织或纲要。架构模式提供一些事先定义好
的子系统,指定它们的责任,并给出把它们组织在 一起的法则和指南。有些作者把这种架构
模式叫做系统模式[STELTING02]。
一个架构模式常常可以分解成很多个设计模式的联合使用。显然,MVC模式就是属于
这一种模式。MV C模式常常包括调停者(Mediator)模式、策略(Strategy)模式、合成
(Compo site)模式、观察者(Observer)模式等。
此外,常见的架构模式还有:


·Layers(分层)模式,有时也称Tiers模式
·Blackboard(黑板)模式
·Broker(中介)模式
·Distributed Process(分散过程)模式
·Microkernel(微核)模式
架构模式常常划分成如下的几种:
一)、 From Mud to Structure型。帮助架构师将系统合理划分,避免形成一个对象
的海洋(A sea of o bjects)。包括Layers(分层)模式、Blackboard(黑板)模式、Pipe
sF ilters(管道过滤器)模式等。
二)、分散系统(Distributed Systems)型。为分散式系统提供完整的架构设计,包
括像Broker(中介)模式等。
三)、人机互动(Interactive Systems)型,支持包含有人机互动介面的系统的架构设
计,例子包括MVC(Model- View-Controller)模式、PAC(Presentation-Abstraction- Co
ntrol)模式等。
四)、Adaptable Systems型,支持应用系 统适应技术的变化、软件功能需求的变化。
如Reflection(反射)模式、Microkern el(微核)模式等。
来自:http:
软件框架是项目软件开发过程中提取特定领域软 件的共性部分形成的体系结构,不同领域的
软件项目有着不同的框架类型。框架的作用在于:由于提取了 特定领域软件的共性部分,因
此在此领域内新项目的开发过程中代码不需要从头编写,只需要在框架的基 础上进行一些开
发和调整便可满足要求;对于开发过程而言,这样做会提高软件的质量,降低成本,缩短 开
发时间,使开发越做越轻松,效益越做越好,形成一种良性循环。

框架不是 现成可用的应用系统。是一个半成品,需要后来的开发人员进行二次开发,实
现具体功能的应用系统。框 架不是“平台”,平台概念比较模糊可以是一种操作系统,一种应
用服务器,一种数据库软件,一种通讯 中间件等地那个,因此平台在应用平台主要指提供特
定服务的系统软件,而框架更侧重了设计,开发过程 ,或者可以说,框架通过调用平台提供
的服务而起的作用。

框架不是工具包或 者类库,调用API并不就是在使用框架开发,紧紧使用API是,开
发者完成系统的主题部分,并不时 地调用类库实现特定任务。而框架构成了通用的、具有一
般性的系统主体部分,二次开发人员只是像做填 空一样,根据具体业务,完成特定应用系统
中与众不同的特殊部分。

框架与架构之间的关系

框架不是构架(即软件体系机构)。体系结构确定了系统整体结 构、层次划分,不同部
分之间的协作等设计考虑。框架比架构更具体。更偏重于技术涉嫌。确定框架后, 软件体系
结构也随之确定,而对于同一软件体系结构(比如Web开发中的MVC),可以通过多种框< br>架来实现。

框架与设计模式之间的关系


设计模式和框架在软件设计中是两个不同的研究领域。设计模式研究的是一个设计问题
的解决方法,一个 模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的
体系结构,是一种或多种设计模 式和代码的混合体虽然它们有所不同,但却共同致力于使人
们的设计可以被重用,在思想上存在着统一性 的特点,因而设计模式的思想可以在框架设计
中进行应用。

框架和设计模式存在着显著的区别,主要表现在二者提供的内容和致力应用的领域。

1 )、从应用领域上分,框架给出的是整个应用的体系结构;而设计模式则给出了单一设
计问题的解决方案 ,并且这个方案可在不同的应用程序或者框架中进行应用。

2)、从内容上分,设计模 式仅是一个单纯的设计,这个设计可被不同语言以不用方式来
实现;而框架则是设计和代码的一个混合体 ,编程者可以用各种方式对框架进行扩展,进而
形成完整的不同的应用。

3) 、以第二条为基础,可以得出设计模式比框架更容易移植:框架一旦设计成形,虽然
还没有构成完整的一 个应用,但是以其为基础进行应用的开发显然要受制于框架的实现环境;
而设计模式是与语言无关的,所 以可以在更广泛的异构环境中进行应用。

总之,框架是软件,而设计模式是软件的知识体。
来自:http::

1.什么是模式?
模式,即pattern。其实就是解决某一类问题的方法论。你把解决某 类问题的方法总结归纳
到理论高度,那就是模式。
Alexander给出的经典定义是:每 个模式都描述了一个在我们的环境中不断出现的问题,然
后描述了该问题的解决方案的核心。通过这种方 式,你可以无数次地使用那些已有的解决方
案,无需在重复相同的工作。
模式有不同的领域, 建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成
熟的时候,自然会出现很多模式。
什么是框架?
框架,即framework。其实就是某种应用的半成品,就是一组组件,供 你选用完成你自己
的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不 断升
级的软件。
2.为什么要用模式?
因为模式是一种指导,在一个良好的指导下 ,有助于你完成任务,有助于你作出一个优良的
设计方案,达到事半功倍的效果。而且会得到解决问题的 最佳办法。
为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件 ,设计到的知识,内容,问题
太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础 工作,你只需要
集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多 细
节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,

< p>
所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带
来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。

到底有没有一个具体的定义了?你们又是如何理解和区分的?

#3楼 尖叫季节
2010-12-09 12:12

举例盖房子
盖房子前,开发 商都得做调研,我们这个房地产项目,需要在哪儿选址;适合做什么项目;项目都有什么
功能,比如带不 带花园,公益场所,游泳池这些;还得考察哪些工程队做过类似项目,项目的实施能力高,
这样才能承包 给他;再有就是后期的物业管理,都需要哪些部门,设什么项目。等等等等。
以上这些,我觉得就是 系统架构的内容。做这个项目前,要先了解这个项目,然后做一些选择,什么选择
呢?就是我该怎么做这 个项目,采用cs还是bs,是j2ee啊还是用微软的体系,服务器用widows还
是unix,是 用spring啊,还是只用struts框架,中间件websphere啊还是weblogic,等等等等 。别
看这些讲起来空泛,做起来可是很多工作,经验积累对这个工作也很重要。因为你不单单是做单选题 ,你
还要把你的选择合起来。如果选择不当,不同的jdk版本,都有可能造成项目无法运行。

再说框架。房地产项目承包给了工程队,房地产商说了,我不管你怎么盖房子,但是盖出来的房子,得是

我们要的样子,并且质量要可靠。这些事对工程队来说是小菜一碟,人家整天盖房子,什么样 的图纸盖出
什么样的房子,哪些地方拿什么样现成的门和窗户装上,熟得不能再熟了。
对了 ,框架就是用来具体实现某一功能的工具,框架的部件能够重用,而且某一框架一般都只能解决某一
领域 的问题。比如strtus是web框架的实现,如果做bs项目,用他来实现web层真的不错。但是在
cs项目里,他就一点儿用处都没有了。

最后是模式。工程队盖房子确实快,但是盖房子的图纸和那些成型的门,窗,楼板框架可不是他们自己整

出来的,他们只管用。有专门的设计人员在做这些事情。这些设计人员整天就想,盖出同样的 房子,怎么
样做才能更省材料,怎么做才能更省时间,那些现成的门窗,框架,怎么设计才能实现最大的 使用面积,
等等。
设计模式是包含在框架里的,就是用科学的方法来实现一个框架的功能。 目的就是最大复用,最大功能实
现,最方便调用。

工商企业管理毕业论文-新员工工作总结


梓童是什么意思-搞笑三句半


定义判断-农林大学金山学院


中央电视台中秋晚会-一件事的启示


安徽电气工程职业技术学院-个性的自我介绍


空调衣-詹天佑教案


元朝历代皇帝-寒假生活手抄报


浒浦高级中学-学校社团活动