【架构】分层架构 (Layered Architecture)

一、分层模型基础理论

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0365cf0bfa754229bdedca6b472bffc7.png
在这里插入图片描述

1. 核心定义

分层架构(Layered Architecture)模型是一种常见的软件设计架构,它将软件系统按照功能划分为不同的层次,每个层次都有特定的职责和功能,层与层之间存在清晰的依赖关系。这种架构有助于提高软件的可维护性、可扩展性和可复用性。

常见分层结构

虽然不同的应用场景和系统可能会有不同的分层方式,但比较经典的是分为四层,分别为表示层、业务逻辑层、数据访问层和数据层。
在这里插入图片描述分层架构的一个特性就是关注分离(separation of concerns)。在层中的组件只负责本层的逻辑。组件的划分很容易让它们实现自己的角色和职责,也比较容易地开发,测试管理和维护。

1. 表示层(Presentation Layer)

定义:也称为用户界面层(UI 层),是用户与系统进行交互的接口。它负责接收用户的输入,并将系统的处理结果展示给用户。
职责:提供友好的用户界面,处理用户的请求和操作,如页面渲染、事件处理等。
实现技术:在 Web 应用中,通常使用 HTML、CSS、JavaScript 等前端技术实现;在桌面应用中,可能使用 JavaFX、Swing(Java)、Windows Forms(.NET)等技术。
示例:在一个电商网站中,商品列表页面、购物车页面等都是表示层的一部分,用户可以通过这些页面浏览商品、添加商品到购物车等。

2. 业务逻辑层(Business Logic Layer)

定义:也称为领域层,是系统的核心层,负责处理业务逻辑和业务规则。它接收来自表示层的请求,调用数据访问层获取数据,进行业务处理,并将处理结果返回给表示层。
职责:实现系统的业务逻辑,如订单处理、用户认证、权限管理等。确保业务规则的一致性和正确性。
实现技术:可以使用各种编程语言和框架来实现,如 Java 的 Spring 框架、Python 的 Django 框架等。
示例:在电商系统中,当用户提交订单时,业务逻辑层会检查库存是否充足、计算订单总价、生成订单记录等。

3. 数据访问层(Data Access Layer)

定义:也称为持久化层,负责与数据库或其他数据存储系统进行交互,实现数据的增删改查操作。它将业务逻辑层的请求转换为对数据存储系统的具体操作。
职责:封装数据访问细节,提供统一的数据访问接口,提高数据访问的效率和安全性。
实现技术:使用数据库访问技术,如 JDBC(Java)、ADO.NET(.NET)、SQLAlchemy(Python)等。
示例:在电商系统中,数据访问层负责从数据库中查询商品信息、保存用户订单信息等。

4. 数据层(Data Layer)

定义:也称为数据存储层,负责存储系统的数据。可以是关系型数据库(如 MySQL、Oracle)、非关系型数据库(如 MongoDB、Redis)、文件系统等。
职责:提供数据的持久化存储,确保数据的安全性和完整性。
示例:在电商系统中,数据层存储了商品信息、用户信息、订单信息等。

在这里插入图片描述

  • 注意每一层都是封闭的。这意味着Request必须经过每一层才能到达最底下一层。
  • 这就是分层架构的另一个特征:层隔离(layers of isolation)。层隔离的概念意味着你对任何一层的改变都不会影响其它层。一个层的组件并不会了解其它层的实现,或者知道很少。
  • 分层架构也很容易增加新的层。 比如你想将一些通用的服务重构成一个服务层,比如通用图片处理,远程账户审计等,可以在业务层下增加一个服务层。它不会对展示层造成影响,也不会改变持久层的代码。
  • 因为每一层丢失封闭的,业务层不得不通过服务层访问持久层,这没有天理啊。 所以有时候你会创建一个开放的层。这意味着上一层可以绕过这一层直接访问下一层。
    在这里插入图片描述

典型场景包括:

  • OSI网络模型(物理层→应用层7层结构)
  • J2EE经典分层(Web层→Service层→DAO层)

2. 核心原则

单向依赖:Layer N只能调用Layer N-1(严格分层)或更底层(宽松分层)
契约协议:层间通过标准化接口通信(如REST API、RPC接口)
同层自治:每个层级内部实现技术无关性(如DA层可替换MySQL为MongoDB)


二、分层模型技术演进

1. 传统企业级分层

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序

2024年国赛高教杯数学建模 C题 农作物的种植策略 原题再现 根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略&…

捷米特 JM - RTU - TCP 网关应用 F - net 协议转 Modbus TCP 实现电脑控制流量计

一、项目背景 在某工业生产园区的供水系统中,为了精确监测和控制各个生产环节的用水流量,需要对分布在不同区域的多个流量计进行集中管理。这些流量计原本采用 F - net 协议进行数据传输,但园区的监控系统基于 Modbus TCP 协议进行数据交互&…

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…

iOS事件传递和响应

背景 对于身处中小公司且业务不怎么复杂的程序员来说,很多技术不常用,你可能看过很多遍也都大致了解,但是实际让你讲,不一定讲的清楚。你可能说,我以独当一面,应对自如了,但是技术的知识甚多&a…

【核心算法篇十三】《DeepSeek自监督学习:图像补全预训练方案》

引言:为什么自监督学习成为AI新宠? 在传统监督学习需要海量标注数据的困境下,自监督学习(Self-Supervised Learning)凭借无需人工标注的特性异军突起。想象一下,如果AI能像人类一样通过观察世界自我学习——这正是DeepSeek图像补全方案的技术哲学。根据,自监督学习通过…

轻松搭建本地大语言模型(二)Open-WebUI安装与使用

文章目录 前置条件目标一、安装 Open-WebUI使用 Docker 部署 二、使用 Open-WebUI(一)访问Open-WebUI(二)注册账号(三)模型选择(四)交互 四、常见问题(一)容器…

零基础学QT、C++(一)安装QT

目录 如何快速学习QT、C呢? 一、编译器、项目构建工具 1、编译器(介绍2款) 2、项目构建工具 二、安装QT 1、下载QT安装包 2、运行安装包 3、运行QT creator 4、导入开源项目 总结 闲谈 如何快速学习QT、C呢? 那就是项目驱动法&…

vue取消全选功能按钮注意事项

这里这个功能是通过各种条件查出数据,但只取一条数据进行后续业务,虽然每一条数据前面都有多选框,但只需要选一个,所以在业务上分析可以把这个全选按钮取消掉 这里不是简单的把多选组件的selection-change"handleSelectionChange"和handleSelectionChange方法去掉,因…

【再读】2501.12948/DeepSeek-R1通过强化学习提升大型语言模型(LLMs)的推理能力

DeepSeek-R1-Zero展示了在没有监督数据的情况下,通过RL可以发展出强大的推理能力。DeepSeek-R1通过引入冷启动数据和多阶段训练,进一步提升了推理性能,达到了与OpenAI-o1-1217相当的水平。此外,通过蒸馏技术,将DeepSee…

校园网架构设计与部署实战

一、学习目标 掌握校园网分层架构设计原则 理解多业务VLAN规划方法 学会部署认证计费系统 实现基础网络安全防护 二、典型校园网场景 需求分析:某中学需建设新型校园网络 覆盖教学楼/宿舍/图书馆三区域 区分教师/学生/访客网络权限 满足2000终端并发接入 …

leetcode:942. 增减字符串匹配(python3解法)

难度&#xff1a;简单 由范围 [0,n] 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s &#xff0c;其中: 如果 perm[i] < perm[i 1] &#xff0c;那么 s[i] I 如果 perm[i] > perm[i 1] &#xff0c;那么 s[i] D 给定一个字符串 s &#xff0…

数仓搭建(hive):DWS层(服务数据层)

DWS层示例: 搭建日主题宽表 需求 维度 步骤 在hive中建数据库dws >>建表 CREATE DATABASE if NOT EXISTS DWS; 建表sql CREATE TABLE yp_dws.dws_sale_daycount( --维度 city_id string COMMENT 城市id, city_name string COMMENT 城市name, trade_area_id string COMME…

网工项目实践2.8 IPv6设计及网络优化需求分析及方案制定

本专栏持续更新&#xff0c;整一个专栏为一个大型复杂网络工程项目。阅读本文章之前务必先看《本专栏必读》。 全网拓扑展示 一.IPV6部署规划 在北京总部&#xff0c;为了迎接未来网络的发展&#xff0c;规划在BJ_G2、BJ_G3、BJ_C1、BJ_C2之间运行IPv6协议&#xff0c;以建立I…

50页PDF|数字化转型成熟度模型与评估(附下载)

一、前言 这份报告依据GBT 43439-2023标准&#xff0c;详细介绍了数字化转型的成熟度模型和评估方法。报告将成熟度分为五个等级&#xff0c;从一级的基础转型意识&#xff0c;到五级的基于数据的生态价值构建与创新&#xff0c;涵盖了组织、技术、数据、资源、数字化运营等多…

DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)

前言 在当今数字化时代&#xff0c;AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型&#xff0c;凭借其出色的性能和开源免费的优势&#xff0c;成为许多开发者的首选。今天&#xff0c;就让我们一起探索如何将DeepSeek接入PyCharm&#xff0c;实现高效、智…

阐解WiFi信号强度

WiFi信号强度是指无线网络信号的强度&#xff0c;通常以负数dB&#xff08;分贝&#xff09;来表示。信号越强&#xff0c;dB值越接近零。WiFi信号强度直接影响你的网络速度、稳定性和连接的可靠性。简单来说&#xff0c;WiFi信号越强&#xff0c;你的设备与路由器之间的数据传…

MySQL数据类型

目录 1、数据类型分类 2、数值类型 2.1.tinyint类型 2.2.bit类型 2.3.小数类型 2.3.1.float 2.3.2.decimal 3.字符串类型 3.1.char 3.2.varchar 3.3 char和varchar比较 4.日期和时间类型 5.enum和set 语法&#xff1a; 案例&#xff1a; 1、数据类型分类 2、数值…

【Spring+MyBatis】_图书管理系统(下篇)

图书管理系统上篇、中篇如下&#xff1a; 【SpringMyBatis】_图书管理系统&#xff08;上篇&#xff09;-CSDN博客 【SpringMyBatis】_图书管理系统&#xff08;中篇&#xff09;-CSDN博客 目录 功能5&#xff1a;删除图书 6.1 约定前后端交互接口 6.2 后端接口 6.3 前端…

两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明

在这个瞬息万变的世界里&#xff0c;保持一颗探索的心&#xff0c;永远怀揣梦想前行。即使有时会迷失方向&#xff0c;也不要忘记内心深处那盏指引你前进的明灯。它代表着你的希望、你的信念以及对未来的无限憧憬。每一个不曾起舞的日子&#xff0c;都是对生命的辜负&#xff1…

鸿蒙NEXT开发-网络管理

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 目录 1. 网络管理-应用权限 1.1 概述 1.2 配…