软件架构风格
软件架构风格是命名、可重用的组织方案,它们定义了系统使用的组件和连接器的类型,以及它们如何组合的约束。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
架构风格是一系列架构的集合,其特点是具有组件和连接器类型的词汇表,以及关于这些类型实例如何配置的一组约束。
Scope
本主题涵盖了经典风格,如分层、客户端-服务器、管道-过滤器、仓库(数据中心)、事件驱动和发布-订阅、微内核,以及面向服务和微服务架构;用于网络系统的REST架构风格;以及促使选择某种风格而非其他风格的质量属性权衡。
Core questions
- 定义每种风格的组件和连接器词汇表是什么?
- 给定风格促进或抑制了哪些质量属性?
- 如何在单个系统中组合多种风格?
- REST和微服务等网络和分布式风格与经典风格有何不同?
Key theories
- 作为组件-连接器词汇表的风格
- Shaw和Garlan通过具有相关约束的组件和连接器的重复模式来描述架构,为该领域提供了管道-过滤器、分层和仓库等风格词汇。
- REST架构风格
- Fielding将REST推导为一组约束——无状态性、统一接口、可缓存性、分层系统——这些约束解释了网络的扩展性和演进性,并指导了基于网络的服务的设计。
Clinical relevance
尽早选择合适的风格能使系统结构与其主要质量要求保持一致;一旦开发开始,风格与需求之间的不匹配将难以且昂贵地纠正。
Evidence & guidelines
ISO/IEC/IEEE 42010 从视点和视图的角度构建架构描述,其中记录和分析了各种风格。
History
架构风格的编目始于20世纪90年代中期Shaw和Garlan的工作,当时软件架构成为一门公认的学科;Fielding在2000年的博士论文中正式提出了REST,而2010年代则见证了微服务和事件驱动风格在云规模系统中的兴起。
Key figures
- Mary Shaw
- David Garlan
- Roy Fielding
- Len Bass
Related topics
Seminal works
- shaw1996
- fielding2000
- bass2012
Frequently asked questions
- 架构风格和设计模式有什么区别?
- 架构风格描述的是系统范围的组织——组件和连接器的类型以及组合它们的规则——而设计模式解决的是组件内部更局部的设计问题;风格在更高的粒度级别上运作。
- 一个系统可以使用多种风格吗?
- 是的。实际系统通常是异构的,会结合多种风格——例如,一个分层架构,其表示层是事件驱动的,其服务通过REST进行通信——每种风格都应用于其权衡最适合的地方。