建筑模式和建筑风格之间有什么区别?

时间:2010-10-18 10:39:02

标签: architecture architectural-patterns

软件架构 - 基础,理论和实践中,我可以找到两者的定义。问题是,我不能用简单的英语得到每个人的意思:

建筑模式

  

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

建筑风格

  

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

每个人的意思是什么,他们之间有什么区别?

12 个答案:

答案 0 :(得分:46)

架构模式是解决重复出现的架构问题的一种方法。例如,MVC解决了将UI与模型分离的问题。传感器 - 控制器 - 执行器,是一种模式,可以帮助您解决面对多种输入感觉的问题。

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

管道和过滤器无法解决任何特定问题,它只是一种组织代码的方法。客户/服务器,主程序&子程序和抽象数据类型/ OO,相同。

此外,单个架构可以包含多种架构样式,每种架构样式都可以使用多种架构模式。

答案 1 :(得分:10)

坦率地说,我一直认为这两个术语都是同义词!外行(相对而言)文学肯定会将它们视为这样。 请参阅MSDNWikipedia

然而,你的问题引起了我的兴趣,所以我做了更多的挖掘和坦率地说...除了引用A Practical Guide to Enterprise Architecture (The Coad Series)之外我找不到多少,我引用了它: -

An architectural style (Base et al. 1997) and an architectural pattern 
(Buschmann et al. 1996) are essentially synonymous. 

基于更多googling,我认为这可能是区分两者的一种可能方式

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

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

答案 2 :(得分:7)

用非常简单的话说:

  • <强> An architectural style

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

    示例:REST(Representational State Transfer)是一种基于某些原则的架构风格,使用当前的“Web”基础。

  • <强> An architectural patterns

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

  • <强> A design patterns

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

答案 3 :(得分:7)

建筑风格是抽象的,即概念性的。

+---------------+--------------------------------------------------------+
|   Category    |                  Architecture styles                   |
+---------------+--------------------------------------------------------+
| Communication | SOA, ROA, Message Bus                                  |
| Deployment    | Client/Server                                          |
| Domain        | Domain Driven Design,Monolithic application            |
| Structure     | Component-Based, Object-Oriented, Layered, Plug-ins    |
+---------------+--------------------------------------------------------+

建筑模式是具体的,即建筑风格的实施。

  • 例如:3层,N层,MVC,REST

设计模式是建筑级软件设计中常见问题的通用可重用解决方案。

  • 例如:Factory,Singleton,Prototype。

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

enter image description here

答案 4 :(得分:3)

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

答案 5 :(得分:2)

对于建筑模式,请考虑GoF所描述的用于设置代码样式的特定方法;适配器,策略,构建器,介体等

建筑风格思考整体系统; I.E.,使用MVC进行演示,DDD用于建模业务层,WCF(如果您使用的是.NET)用于Interop,SOA用于集成等。

答案 6 :(得分:2)

架构设计模式更具域特定性,其中架构样式更通用,可用于各种应用程序。由于这种架构模式需要更多的领域知识。

答案 7 :(得分:0)

架构模式 - 定义一组通用的元素类型及其类型 互动。建筑模式的例子包括管道和过滤器, 模型 - 视图 - 控制器和反射。

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

p.s:许多原始建筑风格都是 重新定义为模式。

答案 8 :(得分:0)

架构模式:上下文+问题 - &gt;溶液

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

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

答案 9 :(得分:0)

建筑风格描述了一个由许多组件组成的系统。只有一种应用程序体系结构,您必须在各处应用一种体系结构样式,例如微服务,SOA和事件驱动的体系结构。

架构模式描述了单个组件中的某些内容,不要尝试在各处应用相同的架构模式,例如CQRS或DDD。

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

建筑风格

建筑样式是代表应用程序子系统的更广泛组织并描述其总体轮廓的想法的名称。例如SOAClient/ServerMessage Bus等。

建筑模式

建筑模式是可重复使用的解决方案的名称,这些解决方案可用于解决一般的建筑问题,从而了解如何实现内部零件以解决这些问题。例如2-Tier3-TierN-TierMVCREST等。

一种样式可以使用多种模式来解决多种问题。例如,客户端/服务器样式可以使用 N-层模式或(和) MVC模式来分隔其业务逻辑表示逻辑数据逻辑,用于介绍解决modifiabilitymaintainability问题的模块化。