架构模式之分层模式

news2024/11/25 18:50:10

1 概念

      分层架构模式是一种非常常见的架构设计模式,很多人都在用,可能不知道它的概念。分层模式背后的理念是,具有相同功能的组件将被组织成水平层。因此,每一层在应用程序中都扮演着特定的角色。
      在这种模式中,我们对应用程序可以拥有的层数没有限制。在这方面,我们还提倡关注点分离的概念。分层模式风格抽象了整个软件的视图;同时提供了足够的细节用以了解各个层的角色和职责以及他们之间的关系。分层模式的典型实现如下:

  • UI展示层(UI/Presentation Layer):渲染并运行用户界面,向服务器应用程序发送请求。
  • 应用层(Application Layer):包含表示层、应用程序层、域对象层和持久化层。
  • 域对象层/业务层(Domain/Business Layer):该层包含所有业务逻辑、实体、事件和其他包含业务逻辑的对象类型。
  • 数据库层(Database Layer):这是数据层,用于持久化数据,应用服务器将使用这些数据。
    在这里插入图片描述

优点:
各个模块可以独自开发和衍化,各个部分之间的交互非常少,支持可移植性,可修改性和复用性。

缺点:
分层会导致性能下降。这种模式不适合高性能应用程序,因为经过架构中的多层来实现一个业务请求的效率是不高的。

2 性能分析

整体敏捷性):整体敏捷性是快速响应环境不断变化的能力。虽然可以通过此模式的隔离层特性隔离变更,但在此体系结构模式中进行更改仍然很麻烦且耗时,因为大多数实现都具有单片特性,并且通常使用此模式的组件之间存在紧密耦合。
易部署性):受该架构模式具体实现的影响,部署可能会称为一个问题,特别是对于较大的应用程序。一个组件的小更改,就可能需要重新部署整个应用程序或者应用程序的很大一部分。因此,这种模式不容易形成持续交付,这就进一步降低了易部署性方面的总体评级。
易测性):由于组件从属于该架构模式中的特定层,所以其他层是可以被mock或stub的,这就使得分层架构模式相对容易测试。开发人员可以模拟表示层 中的组件来隔壁业务组件中的测试,也可以模拟业务组件来测试表示层。
性能(低):虽然某些分层架构确实运行的很好,但由于必须通过架构的多层来实现业务请求的低效率,这种模式并不适合于高性能应用程序。
可扩展性/可伸缩性):由于这种模式的紧密耦合和通用实现的趋势,使用这种体系结构模式构建的应用程序通常难以扩展。您可以通过将层拆分为单独的物理部署或将整个应用程序复制到多个节点来扩展分层体系结构,但总体而言,粒度太宽,使得扩展成本很高。
可开发性):开发的容易程度得到了相对较高的分数,主要是因为这种模式非常有名,而且实现起来并不太复杂。因为大多数公司通过分层(表示、业务、数据库)分离技术来开发应用程序,使得这种模式成为大多数业务应用程序开发的自然选择。公司的沟通和组织结构与软件开发方式之间的联系被称为Conway’s law。你可以谷歌“Conway’s law”来获得更多关于这种迷人相关性的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自学自动化测试,第一份工作就18K,因为掌握了这些技术

我个人的情况是有1年自动化测试工作经验半年的实习经验,2020年毕业,专业通信工程,大一的时候学过C语言,所以一直对于编程感兴趣,之所以毕业后没做通信的工作,通信行业的朋友应该都明白,通信的天…

DolphinScheduler3.1.5安装部署

1.下载 DolphinScheduler下载地址:https://dolphinscheduler.apache.org/zh-cn/download/3.1.5 选择二进制包 下载,点击 jar 名称 就行 ​ 2.环境 CentOS Linux release 7.5.1804 (Core)java version "1.8.0_212"mysql version 5.7.16-log…

信息化 VS 数字化,哪个更适合当代企业?

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 现在大家都在谈数字化转型升级,那到底什么是数字化,是不是新瓶装旧酒呢?今天就和大家来谈谈…

【华为机考】专题突破 第二周:前缀和与差分 1109

刷题顺序参考于 《2023华为机考刷题指南:八周机考速通车》 前言 前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和,而差分可以看成前缀和的逆运算。合理的使用前缀和与差分,可以将某些复杂的问题简单化。 关于各类…

CnOpenData中国标准数据

一、数据简介 按照《中华人民共和国标准化法》的定义,标准是指农业、工业、服务业以及社会事业等领域需要统一的技术要求。标准作为一种通用性的规范语言,在合理利用国家资源、保障产品质量、提高市场信任度、促进商品流通、维护公平竞争、保障安全等方面…

机器学习-9 降维算法——PCA降维

降维算法 算法概述降维的概念降维的作用降维的本质常见算法分类主成分分析(PCA)降维分析 算法流程PCA算法的流程图PCA算法的实现步骤协方差矩阵 算法应用sklearn库中的主成分分析PCA实现高维数据可视化鸢尾花案例手写体数字图像识别案例 算法总结PCA算法…

MyBatis缓存-一级缓存--二级缓存的非常详细的介绍

目录 MyBatis-缓存-提高检索效率的利器 缓存-官方文档 一级缓存 基本说明 一级缓存原理图 代码演示 修改MonsterMapperTest.java, 增加测试方法 结果 debug 一级缓存执行流程 一级缓存失效分析 关闭sqlSession会话后 , 一级缓存失效 如果执行sqlSession.clearCache(…

linux安装nacos步骤

安装前提:服务器已安装JDK 一、nacos下载 Nacos下载地址:Releases alibaba/nacos GitHub 根据springboot版本选择nacos版本 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 二、nacos解压、修改配置文件 #选择安装目录 cd /home/dxhy/appl…

一款基于 Spring Cloud 开源的医疗信息系统

今天给大家介绍一个医院信息系统开源项目,相对比较完整,采用的技术栈是 Spring cloud和Spring boot 2.x,比较主流,正在做这方面系统的童鞋们可以参考一下! 主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管…

云原生|详解Kubernetes Operator在项目中的开发应用

目录 一、使用场景 (一)client-go中处理逻辑 (二)controller-runtime中处理逻辑 二、使用controller-runtime开发operator项目 (一)生成框架代码 (二)定义crd字段 &#xff0…

分布式消息队列RocketMQ概念详解

目录 1.MQ概述 1.1 RocketMQ简介 1.2 MQ用途 1.3 常见MQ产品 2.RocketMQ 基本概念 2.1 消息 2.2 主题 2.3 标签 2.4 队列 2.5 Producer 2.6 Consumer 2.7 NameServer 2.8 Broker 2.9 RocketMQ 工作流程 1.MQ概述 1.1 RocketMQ简介 RocketMQ 是阿里开源的分布式消…

云原生:从基本概念到实践,解析演进与现状

文章目录 云原生:从基本概念到实践,解析演进与现状概念演进之路DockerKubernetesCloud NativeServerless 业界现状总结 结语 云原生:从基本概念到实践,解析演进与现状 本文仅用于简单普及,达到的目的是给没接触过或者很…

苹果手机无法开机?黑屏打不开怎么办?出现这种问题的解决办法分享!

各位在使用苹果手机的小伙伴有没有遇到苹果手机突然就黑屏开不了机,打电话也没有任何反应,手机也无法关机重启,这是什么问题呢?我们遇到这种问题该如何去处理呢? 小编今天就来跟大家说说苹果手机突然开不了机的原因以及…

【Linux命令】脚本里常用的几个命令

脚本里常用的命令 一、SORT命令1.1、语法格式1.2常用选项 二、uniq命令2.1命令格式2.2常用选项2.3小实验,过滤出现三次以上的IP地址 三、tr命令3.1语法格式3.2常用选项3.3实验 四、cut命令4.1语法格式4.2常用选项 五、split命令5.1语法格式5.2常用选项 六、eval七、…

在行 | “数智”为离散制造发展注入动能

在行业现场解析行业难题, 用主题方案创新数智价值。 制造业作为我国实体经济的主体,是国民经济体系的重要组成部分,其中以离散制造比重最大,是解决就业等民生问题的支柱。随着技术和经济水平的提升,市场对离散制造行业…

CnOpenData淘宝村淘宝镇名单数据

一、数据简介 随着电商的迅猛发展,以淘宝村为代表的新型城镇化不断推进。淘宝镇和淘宝村是电商巨头阿里巴巴推出的一系列支持中小企业、新创企业发展的计划,旨在为中小企业及创新企业提供融资、营销、培训、咨询等服务。截至2022年,全国涌现了…

创新案例 |探索 Tive 80% 的收入增长得益于智能物流服务、跟踪和实时可视化

您正在寻找可靠的物流解决方案吗? Tive 是领先的智能物流服务提供商,提供跟踪和实时可见性解决方案。使用 Tive,您可以主动监控公路、空运、海运和铁路运输。它可以帮助您减少运输问题并确保准时和全面交付,从而改善客户体验。 …

融合CDN和单CDN的产品对比

仅针对特定地理位置的公司可以使用单一CDN解决方案,建议网站内容在全球分发的优先选择融合CDN来进行加速。 如果您的网站内容/应用程序大多是静态的,那么单一CDN解决方案可能适合大多数市场需求;但如果您的流量高于平均水平,媒体流…

【表面缺陷检测】基于yolov5的钢板表面缺陷检测(附代码和数据集,Windows系统)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就…

iPhone语音备忘录删除了怎么恢复?恢复备忘录,只需3个方法!

案例:语音备忘录被清空 【苹果语音备忘录有我很多会议记录,但是被我清理手机垃圾的时候顺便清理了。有什么方法恢复回来吗?】 很多人都知道,iphone语音备忘录是使用起来非常方便的一种记录方式,但是如何在不小心删除备…