正式定档!QCon 北京站改期为2024年4月11-13日,地点:北京·国测国际会议会展中心 >>> 了解详情
写点什么

架构风格和架构模式速览

  • 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:528448
用户头像

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

关注

评论

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

壁纸收藏

小马哥

摄影 七日更

三张图解释静态NAT、动态NAT、PAT

Dubbo 3.0 前瞻之对接 Kubernetes 原生服务

阿里巴巴云原生

容器 运维 云原生 k8s dubbo

28天瞎写的第二百三十天:DIY 键盘的故事

树上

28天写作 机械键盘 GH60

进大厂必看!拼多多大佬总结的10万字Springboot经典学习笔记

武哥聊编程

Java springboot 28天写作

CSS(六)——用CSS设置图像效果

程序员的时光

程序员 大前端 七日更 28天写作

“复制”马斯克(一):全世界都会为“自大狂”让路吗?

脑极体

机器学习·笔记之:Cost Function - Intuition I

Nydia

KubeVela:标准化的云原生平台构建引擎

阿里巴巴云原生

容器 云原生 k8s API OAM

精彩的封面 | 视频号 28 天(20)

赵新龙

28天写作

一文搞懂“技术债”

李忠良

28天写作

关于垃圾收集器你了解多少?一文总结七大垃圾收集器

Java鱼仔

Java JVM 垃圾收集

Flink可靠性的基石-checkpoint机制详细解析

五分钟学大数据

大数据 flink

9个REST API设计的基本准则

devpoint

APi设计 RESTf

WebPack | Loader处理非JavaScript模块机制详解

梁龙先森

JavaScript 大前端 webpack 28天写作

Java基础--2021Java面试题系列教程--大白话解读

JavaPub

Java 面试 javapub

原来酸奶是这个味道,真香!「幻想短篇 20/28」

道伟

28天写作

浪漫主义的消亡

石君

28天写作

Libra演进与数字货币国际化

CECBC

区块链

开发质量提升系列:问题登记列表(下)

罗小龙

生产事故 28天写作 解决思路

程序员入职新公司,只需8步,直接凸显出个人价值

Java架构师迁哥

模块分解 - 微服务架构认识与思考

raox

这是阿里技术专家对 SRE 和稳定性保障的理解

阿里巴巴云原生

项目管理 运维 云原生 安全 监控

产品训练营-第五课

Geek_娴子

HDFS是如何设计架构的?

大数据老哥

记录关于写作的两个小想法

JiangX

28天写作

5年Java经验不会源码被拒,苦学这些Spring源码笔记后,面试不再慌

Java架构之路

Java 程序员 架构 面试 编程语言

“区块链新闻编辑部”: 从“云媒体”到“链媒体”的现实跨越

CECBC

区块链技术

教你用Java字节码做点有趣的事

比伯

Java 编程 架构 程序人生 计算机

nodejs的调试debug

程序那些事

debug 调试 nodejs 程序那些事 程序调试

创业失败启示录|雨季后的明媚阳光

阿萌

28天写作 创业失败启示录

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