写点什么

架构风格和架构模式速览

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

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

关注

评论

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

SAP ABAP Netweaver 容器化的一些前沿性研究工作分享

汪子熙

SAP abap Netweaver Docker 镜像 7月月更

vue2升级vue3:provide与inject 使用注意事项

zhoulujun

Vue3 provide inject

vue2升级vue3:单文件组件概述 及 defineExpos/expose

zhoulujun

Vue3 expose

Kubernetes网络插件详解 - Calico篇 - 概述

巨子嘉

第二届中国Rust开发者大会来啦,完整议程大曝光!

Mike Tang

rust rust conf

java零基础入门-异常、线程(上)

喵手

Java 7月月更

如何写一篇百万阅读量的文章

六月的雨在InfoQ

内容 个人提升 写作技巧

如何使用Docker内的kafka服务

程序员欣宸

Java kafka 7月月更

语音聊天app源码——钠斯直播系统源码

开源直播系统源码

直播系统源码 语音聊天系统 语音聊天软件 一对一语音聊天系统

期待已久的 RocketMQ Summit 等待你的参与!

阿里巴巴云原生

Apache 阿里云 RocketMQ 云原生 消息队列

服务器内存故障预测居然可以这样做!

vivo互联网技术

运维 内存监控 EDAC 内存预测

面试突击68:为什么 TCP 需要 3 次握手?

王磊

Java 面试题 网络

vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件

zhoulujun

Vue3 vue2 demij vue2有vue3兼容

前端食堂技术周刊第 45 期:Vite3.0、第91次TC39会议、Figma背后的CSS、B 站事故复盘、图片优化工具

童欧巴

前端 deno vite TC39 figma

算法题每日一练---第10天:时间显示

知心宝贝

算法 前端 后端 7月月更

2B和2C

白粥

入门前端 -- CSS

bo

CSS 前端 7月月更

一种分布式深度学习编程新范式:Global Tensor

OneFlow

深度学习 编程 分布式

vue2升级vue3:vue3 hooks库选用

zhoulujun

Vue3 Hooks vueuse ahooks

Qt | 关于如何使用事件过滤器 eventFilter

YOLO.

qt 7月月更

万字详解“用知识图谱驱动企业业绩增长”

博文视点Broadview

LeetCode-67. 二进制求和(java)

bug菌

Leet Code 7月月更

为啥谷歌的内部工具不适合你?

laofo

DevOps cicd 研发效能 工具链 谷歌

C#入门系列(三十一) -- 运算符重载

陈言必行

7月月更

模块二作业

薛敏

C# Serialport的发送和接收

IC00

C# 7月月更

莫慌!Java 多商户外贸版系统这不就来了么

CRMEB

Okaleido生态核心权益OKA,尽在聚变Mining模式

西柚子

vue2升级vue3: h、createVNode、render、createApp使用

zhoulujun

Vue3

Prometheus 运维工具 Promtool (二)Query 功能

耳东@Erdong

Prometheus 7月月更 Promtool

STM32+MFRC522完成IC卡号读取、密码修改、数据读写

DS小龙哥

7月月更

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