首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分层架构风格本质上是单一的吗?

分层架构风格本质上是单一的吗?
EN

Software Engineering用户
提问于 2023-03-24 22:44:37
回答 3查看 172关注 0票数 1

总体成本和简单性是分层架构风格的主要优势。分层体系结构本质上是单一的,不具有与分布式体系结构样式相关联的复杂性,简单易懂,而且构建和维护成本相对较低。然而,作为一个警告注意,这些评级开始迅速下降,因为整体分层体系结构变得更大,因此更加复杂。-软件架构的基本原理,\ Mark Richards,Neal Ford,第10章。“分层建筑风格”。

在“软件体系结构的基本原理”中,它们暗示分层体系结构风格本质上是单一的。

在我看来,这似乎是一种值得怀疑的说法:

  1. 当您使用基于微服务的体系结构时,将每个微服务的代码拆分成层并将业务逻辑、存储和通信作为单独的层仍然是有用的。仅仅是因为它鼓励了责任上的分离,模块化。
  2. 最终--即使您编写了一个分层的单块应用程序--也没有什么可以阻止您将它部署成许多不同的单独的微服务。

我正在寻找引用权威来源支持的答案。

EN

回答 3

Software Engineering用户

发布于 2023-03-25 10:54:46

我手边没有你引用的那本书,但从我通过googling可以找到的摘录中,我确信作者是在谈论具体的水平分层。

表示层/业务层/持久层/数据库层

以及将此作为其主要和唯一体系结构风格的软件体系结构。引文似乎是断章取义的。

因此,当我们添加缺失的上下文并提出相反的问题时,“是一种完全水平分层的体系结构,本质上是单一的”,那么答案显然是“是的”--当我们在一个应用程序系统中找到上述层时,它们中没有一个能单独映射到“用例”,它们通常需要一起工作来为用户创建有用的东西。但真正的问题是“独占”属性,它排除了“垂直层”,比如微观服务。

一旦您在体系结构中引入了其他结构元素,您很可能就离开了Richards和Ford所描述的领域--我猜这应该会回答您的问题:

  • 当然,微型服务可以在内部有水平层(这可能在一定的规模下得到回报)。
  • 在微型服务中使用水平层并不能使系统成为一个单一的系统。
票数 2
EN

Software Engineering用户

发布于 2023-03-25 03:19:37

不是的。

我怎么知道?

  • 人们在层次分明之前就写了单石。
  • 层是具有类似职责的模块/类的集合。
  • 很多微服务都有层次。

现在,所有这些,层给你的能力,轻松地增长你的代码库。一旦它变得如此之大,一个人很难维持,那么就很难称它为微服务。但这并不是天生的铁板一块。那只是让它长出来。

票数 1
EN

Software Engineering用户

发布于 2023-03-25 08:13:21

在应用程序中创建层的目的是相互分离技术责任。具有分层体系结构的应用程序通常具有表示层、服务层和数据访问层,但可能有更多。

当系统变得越来越大时,它们就变得很难维护。一个地方的变化可能会在另一个地方产生意想不到的后果。为了解决这一问题,可以将模块集成到系统架构中。系统中的每个模块负责特定的功能。在一个模块中,我们仍然需要相同的技术能力,因此我们可以再次应用分层来分离这些技术关注点。

当团队变得更大时,在同一个应用程序上工作就变得更加困难。为了部署新版本,所有模块都必须处于稳定状态。这减慢了释放周期。为了解决这个问题,人们发明了微服务,这样团队就可以分成几个较小的团队。

概括上:层次、模块和微服务解决了不同的问题。

作者在问题中引用了分层与“分布式体系结构”的比较。这意味着技术问题被分散到不同的服务中。

建立这样的系统不是个好主意。几个服务,可能由不同的团队维护,必须合作,以获得新的版本,为一个单一的新功能。

团队和微观服务更好地围绕单独的功能形成。这使得团队能够有自己的发布周期,并做出自己的技术决策。当然,将技术关注点划分为几个层次就是其中之一。

要回答这个问题:“分层架构风格本质上是单一的”。我想说的是:是的,任何使用层的应用程序(部分/微服务)都应该作为一个单一(单块)单元部署。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/444682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档