49

Software Architecture - Foundations, Theory and Practice中,我可以找到两者的定义。问题是我不明白他们每个人用简单的英语意味着什么:

建筑模式

架构模式是架构设计决策的命名集合,适用于重复出现的设计问题,参数化以说明该问题出现的不同软件开发环境。

建筑风格

架构风格是架构设计决策的命名集合,它们 (1) 适用于给定的开发环境,(2) 约束特定于该环境中特定系统的架构设计决策,以及 (3) 在每个环境中引出有益的品质结果系统。

每个是什么意思,它们之间有什么区别?

4

12 回答 12

60

架构模式是解决重复出现的架构问题的一种方式。例如,MVC 解决了将 UI 与模型分离的问题。Sensor-Controller-Actuator,是一种模式,可以帮助您解决面对多种输入感官的致动问题。

另一方面,建筑风格只是一个经常出现的建筑设计的名称。与模式相反,它不存在“解决”问题。

Pipe&filter 不能解决任何特定问题,它只是一种组织代码的方式。客户端/服务器,主程序和子程序和抽象数据类型/OO,相同。

此外,一个架构可以包含多种架构风格,每种架构风格都可以使用多种架构模式。

于 2011-01-11T18:32:18.860 回答
14

坦率地说,我一直认为这两个词是同义词!外行(相对而言)文学肯定如此对待它们。参考MSDN维基百科

然而,你的问题让我有点感兴趣,所以我做了更多的挖掘和坦率地说......除了参考A Practical Guide to Enterprise Architecture (The Coad Series)之外,我找不到太多,我从中引用:

建筑风格(Base et al. 1997)和建筑模式(Buschmann et al. 1996)本质上是同义词。

基于更多的谷歌搜索,我认为这可能是区分两者的一种可能方法:

  • 架构风格是系统将如何创建/将如何工作的概念方式。
  • 架构模式描述了在子系统或模块及其关系级别实现样式的解决方案。

架构模式设计模式(即适配器,观察者)的区别基本上取决于它们应用的粒度级别(我知道这不是问题的一部分,但它是相关的,我认为......)

于 2010-10-18T11:27:52.510 回答
14

建筑风格是抽象的,即概念上既不是技术也不是图书馆。

类别 建筑风格
沟通 SOA、ROA、消息总线
部署 客户端服务器
领域 领域驱动设计,单体,微服务
结构 基于组件、面向对象、分层、插件
其他 点对点、REST、云计算、物联网、区块链……

架构模式是具体的,即架构风格的实现。

  • 例如:3-tier、N-tier、MVC、Model View ViewModel、Publish-subscribe、Sensor-controller-actuator...

设计模式是在架构级别的软件设计中常见问题的通用可重用解决方案。

  • 例如:工厂、单例、原型。

类比:不同宗教的寺庙建筑风格:

在此处输入图像描述

于 2016-01-16T08:34:28.247 回答
7

用非常简单的话来说:

  • 一种建筑风格

    是一个概念,理论(以及如何实现它取决于您)。它也可以应用于软件世界之外。

    例如:REST(Representational State Transfer)是一种使用当前“Web”基础建立在某些原则上的架构风格。

  • 架构模式

    描述软件系统(或模块)级别的解决方案。换句话说,它如何相互交互,例如视图与模型,模型与控制器。

  • 一种设计模式

    是核心级别的解决方案,它讨论类、函数以及逻辑的实际流动方式。

于 2014-06-15T16:19:58.763 回答
4

在我看来,模式和架构风格是封装设计专业知识的互补机制。建筑风格提供了构建块设计元素的集合、用于组成构建块的规则和约束,以及用于分析和操作在该风格中创建的设计的工具。样式通常为在特定领域中构建广泛类别的架构提供指导和分析,而模式专注于解决给定样式(或可能是多种样式)内更小、更具体的问题。

于 2012-12-16T13:37:22.643 回答
2

架构设计模式更特定于领域,架构风格更通用且可用于广泛的应用程序。由于这种架构模式需要更多的领域知识。

于 2012-05-02T01:18:35.517 回答
1

对于架构模式,请考虑按照GoF描述的特定方式来设置代码样式;适配器、策略、生成器、中介等

为建筑风格考虑整体系统;IE,使用 MVC 进行表示,DDD 对业务层建模,WCF(如果您使用 .NET)进行互操作,SOA 进行集成等。

于 2010-10-18T11:21:45.217 回答
1

建筑风格

架构风格是代表应用程序子系统的更广泛组织的名称,并描绘了它的整体轮廓的想法。例如, SOA,Client/ServerMessage Bus

架构模式

架构模式是一般架构问题的可重用解决方案的名称,它给出了如何实现内部部分来解决它们的想法。例如, 2-Tier, 3-Tier, N-Tier,MVCREST

一种风格可以使用多种模式来解决多个问题。例如,客户端/服务器样式可以使用N 层模式或(和)MVC 模式来分离其业务逻辑表示逻辑数据逻辑modifiability,以引入解决maintainability问题的模块化。

于 2019-09-03T12:29:34.627 回答
0

架构模式——定义一组通用的元素类型及其交互。架构模式的示例包括管道和过滤器、模型-视图-控制器和反射。

建筑风格——这个术语是由 Garlan 和 Shaw 创造的,它是系统组织的惯用模式。例如,客户端-服务器系统是一种架构风格。

ps:许多原始的建筑风格已经被重新制定为模式。

于 2014-01-03T21:13:16.287 回答
0

架构风格描述了一个由许多组件组成的系统。只有一种应用程序架构,您必须在任何地方应用一种架构风格,如微服务、SOA 和事件驱动架构。

架构模式描述了单个组件中的某些内容,并且不要尝试在任何地方应用相同的架构模式,如 CQRS 或 DDD。

于 2019-04-05T05:42:07.670 回答
0

架构风格以非常广泛的方式告诉我们如何组织我们的代码。它是最高级别的粒度,它指定应用程序的层、高级模块以及这些模块和层如何相互交互,以及它们之间的关系。架构风格示例:基于组件、SOA

架构模式对代码库有广泛的影响,通常会影响整个应用程序水平(即如何在层内构建代码)或垂直(即如何将请求从外层处理到内层和背部)。架构模式示例:模型-视图-控制器、模型-视图-视图模型

于 2019-07-12T18:18:37.927 回答
-1

架构模式:上下文+问题->解决方案

架构风格:架构模式的解决方案部分

所以架构风格类似于架构模式的解决方案部分。它经常用于处理架构文档的书籍中,重点是解决方案,而不是上下文和问题是如何产生的。

于 2016-08-28T21:12:03.780 回答