写点什么

架构风格和架构模式速览

  • 2009-02-15
  • 本文字数:1080 字

    阅读完需:约 4 分钟

应用架构指南 2.0(微软模式和实践)的第 6 章讨论了诸如消息总线、分层架构、SOA 之类的架构风格。除了这些风格,还有很多架构模式,比如插件、点对点、发布 - 订阅。有些作者对架构风格、模式和隐喻进行了区分。

什么是架构风格呢?根据应用架构指南所说,架构风格指:

一组原则。你可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。架构风格能改进分块,还能为频繁出现的问题提供解决方案,以此促进设计重用。

指南的作者列出了一系列架构风格:

架构风格 描述 客户端 - 服务器 将系统分为两个应用,其中客户端向服务器发送服务请求。 基于组件的架构 把应用设计分解为可重用的功能、逻辑组件,这些组件的位置相互透明,只暴露明确定义的通信接口。 分层架构 把应用的关注点分割为堆栈组(层)。 消息总线 指接收、发送消息的软件系统,消息基于一组已知格式,以便系统无需知道实际接收者就能互相通信。 N 层 / 三层架构 用与分层风格差不多一样的方式将功能划分为独立的部分,每个部分是一个层,处于完全独立的计算机上。 面向对象 该架构风格是将应用或系统任务分割成单独、可重用、可自给的对象,每个对象包含数据,以及与对象相关的行为。 分离表现层 将处理用户界面的逻辑从用户界面(UI)视图和用户操作的数据中分离出来。 面向服务架构(SOA) 是指那些利用契约和消息将功能暴露为服务、消费功能服务的应用。

这些架构风格分别适用于特定领域:

分类 架构风格 通信 SOA,消息总线,管道和过滤器 部署 客户端 / 服务器,三层架构,N 层架构 领域 领域模型,网关 交互 分离表现层 结构 基于组件的架构,面向对象,分层架构

J.D. Meier 从《企业架构实用指南》(由 James McGovern、Scott W. Ambler、Michael E. Stevens、James Linn、Vikas Sharan、Elias K. Jo 编著)一书中总结了几个要点,指出了架构风格和架构模式之间的细微差别

  • 架构风格是系统主要的、组织性的设计。
  • 架构模式从子系统或模块、及其之间的关系层次上描述了粗粒度的解决方案。
  • 系统隐喻则更为概念化,比起软件工程概念,它更多地涉及现实世界的概念。

David Calvert 在 1996 年给出了一份架构风格 / 模式的部分清单

  • 数据流系统——批处理,管道 - 过滤器。
  • 调用 - 返回系统——主程序和子程序,面向对象系统,分层。
  • 独立组件——通信过程,事件系统。
  • 虚拟机——解释器,基于规则的系统。
  • 以数据为中心的系统(仓库)——数据库,超文本系统,黑板。

其它比较现代的风格 / 模式还有:插件点对点无共享架构表述性状态转移(REST)、前端- 后端。在维基百科上有更为完整的列表

查看英文原文: A Quick Look at Architectural Styles and Patterns

2009-02-15 18:529004
用户头像

发布了 151 篇内容, 共 67.2 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

品牌轮:用MOT引导的品牌体验模型

石云升

用户体验 关键时刻 7月日更 体验设计

8月日更挑战正式开启,新人大奖等你来领!

InfoQ写作社区官方

8月日更 热门活动

Apache ShardingSphere:由开源驱动的分布式数据库中间件生态

亚马逊云科技 (Amazon Web Services)

人工智能 开源数据库

如何制定音视频编解码学习路线

hanaper

音视频 图像识别 图形处理 语言 & 开发

架构训练营第 1 期 模块三作业

高远

2021可信云大会顺利召开,北鲲云践行云计算六大发展趋势

北鲲云

HarmonyOS开发者创新大赛获奖作品分享——《分镜头App》

科技汇

Kafka为何弃用zookeeper(翻译)

石头哥谈架构

kafka kafka架构 分布式消息/流中间件

【得物技术】服务发布时网络“抖动”

得物技术

网络 服务 响应时间 部署 发布

浪潮云洲赋能智造 拉升制造业“微笑曲线”

云计算

Vue进阶(幺柒陆):CSS 预编译语言 Sass、Scss、Less 和 Stylus

No Silver Bullet

CSS less SASS scss 7月日更

模块三-学生管理系统详细架构设计

kk

架构训练营

「SQL数据分析系列」12. 事务

Databri_AI

sql 事务

Linux之free命令

入门小站

Linux

Fil收益怎么看?Fil一天收益如何?

区块链 IPFS fil收益 filecoin生态

新思科技解读金融服务业的应用安全误区与现实

InfoQ_434670063458

新思科技 金融服务安全

第九周作业-朴朴超市用户路径&转化漏斗

小夏

产品经理训练营 邱岳

Vue进阶(幺捌伍):应用 qs 插件实现参数格式化

No Silver Bullet

Vue 7月日更 qs

淘宝网 Java 千亿级并发系统架构设计笔记(全彩版小册开源)

Java 程序员 架构 并发编程 计算机

不愧是阿里内部“SpringCloudAlibaba学习笔记”竟然在GitHub霸榜

Java 程序员 架构 微服务 计算机

网络 IO 服务器模型 Reactor 与 Proactor

赖猫

Linux reactor

网络攻防学习笔记 Day90

穿过生命散发芬芳

网络攻防 7月日更

Building deep retrieval models

毛显新

自然语言处理 深度学习 tensorflow 推荐系统 keras

🏆「作者推荐!」【Java 技术之旅】彻底你明白什么是JIT编译器(Just In Time编译器)

码界西柚

Java 编译器 JIT compiler 即时编译器

发现了一个电子书仓库,分享给大家,值得收藏!

C语言与CPP编程

Java c++ Python C语言 数据结构与算法

第三周作业-知识星球利益相关者排序

小夏

产品经理训练营 邱岳

新工科师资培训 |深度推进校企合作 新工科产学研联盟华为技术

科技汇

优先考虑 nameof

喵叔

7月日更

打造“云边一体化”,时序时空数据库TSDB技术原理深度揭秘

数据库 大数据 时序数据库 tsdb 数据智能

Taking advantage of context features

毛显新

自然语言处理 tensorflow 推荐系统

一句话木马该怎么实现?现在就带你了解

网络安全学海

Java 网络安全 信息安全 渗透测试 漏洞分析

架构风格和架构模式速览_方法论_Abel Avram_InfoQ精选文章