写点什么

架构风格和架构模式速览

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

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

关注

评论

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

Android Crash监控方式

Darren

监控 异常检测 Android开发 NativeCrash

DBA 行业是否将会消亡?

BinTools图尔兹

运维 dba 数据库管理工具

用知识点+实例+项目完全深入地讲解springboot原理,这份《springboot实战派》火了!

Java架构之路

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

iOS 面试策略之算法基础6-7节

iOSer

ios 面试 算法 ios开发 算法解析

第一课作业纠正

杰语

Spring Boot 两行代码轻松实现国际化

Java架构师迁哥

企业架构设计方法TOGAF介绍

joinM

企业架构 技术架构 业务架构 TOGAF 技术与业务

阿里资深技术专家崮德:如何成就更好的自己

阿里巴巴中间件

如何打造高效技术团队|专访前美篇首席架构师张超

穿过生命散发芬芳

调查采访能力考核

Disruptor 源码解读

lich0079

Java volatile Disruptor CAS Concurrent

罗美琪和春波特的故事...

阿里巴巴云原生

容器 开发者 云原生 开发工具 消息中间件

⼤规模短⽂本聚类的设计和实践

百度Geek说

聚类 query 内聚

pdf.js使用小结

空城机

大前端 4月日更 pdf.js

联盟链技术

360技术

从Map和Reduce角度谈Hive优化

五分钟学大数据

hive 4月日更 hive性能优化

中寰-卜钢-采访提纲:车联网行业发展趋势

马踏飞机747

采访

MySQL 表列数和行大小有哪些限制?

李尚智

MySQL 运维

我是如何开始写作的

happlyfox

个人成长 4月日更 1 周年盛典

双非渣硕!四面阿里收到offer后,才发现学长给的面试笔记有多强大

Java 编程 程序员 面试 计算机

灰度发布系统架构设计

xcbeyond

微服务 灰度发布 4月日更

会议更流畅,表情更生动!视频生成编码 VS 国际最新 VVC 标准

阿里云CloudImagine

阿里云 视频压缩 VVC

anyHouse-iOS 高仿ClubHouse

anyRTC开发者

ios 音视频 WebRTC RTC 语音通话

skywalking dubbo agent 分析

kaiwen

留存率计算

Flychen

toB SaaS会成为苏州下⼀个“⼀号产业”么?

龙归科技

数字化 tob

混合云安全简史

龙归科技

混合云

国产监控夜莺v4来了,大幅降低部署维护难度

巴辉特

Nightingale 滴滴夜莺

想要写优秀的设计测试用例,不懂这个可不行!

程序员阿沐

软件测试 自动化测试 测试开发 测试用例 测试工程师

Spring Boot 2.0 实现优雅停机

U2647

Spring Boot 4月日更

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

阿里巴巴云原生

大数据 容器 云原生 监控 弹性计算

当时尚撞上区块链,为潮酷创意赋予专属“ID”

旺链科技

产业链

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