目录
一、前言提要
在学习Java的过程中,经常会遇到很多带“层”的名词,本文就各种各样的“层”来介绍,或者说,不止Java,其它语言的学习也会涉及这些层。
二、统筹概述
-
三层架构(表现/业务/数据)是“纵向”按功能切片;
-
网络层、框架层、中间层是“横向”技术栈,像积木一样插到三层里;
-
运行时层是你代码最终落地的“地基”。
-
打油诗速记:网络先把路铺好,框架再把活代劳;表现接客业务炒,数据存取 DAO 抄;运行托管 JVM 包。
-
总体过程:网络铺路 → 框架代工 → 三层做菜 → 中间调味 → 运行上桌。
-
除此以外还有以下层:
-
DTO层:数据传输对象,用于在层与层之间传递数据(如
UserDTO
)。 -
Entity层:数据库表的Java映射类(如
@Entity
的User
类)。 -
Utils层:工具类(如日期格式化、加密)。
-
安全层(Security Layer):负责应用程序的安全,如认证、授权、加密等。
三、软件系统架构层级基本介绍
层级名称 | 核心职责概述 | 关键职责细节 | 主要技术/组件示例 | 通俗功能说明 |
---|---|---|---|---|
网络层 (Network Layer) | 确保数据在节点间可靠传输,处理寻址与路由 | - 定义数据包格式与传输协议 - 逻辑寻址(IP)与物理寻址(MAC) - 路由选择与数据包转发 - 流量控制与拥塞管理 - 错误检测与恢复 | TCP/IP、UDP、ICMP、ARP、BGP、OSPF、路由器、交换机 | 数据邮差:负责将数据包从源头准确投递到目的地,规划最佳路径并处理传输中的异常。 |
框架层 (Framework Layer) | 提供可复用基础结构,简化应用开发 | - 定义应用骨架与生命周期管理 - 提供通用服务(IoC/DI、AOP) - 集成工具库与第三方组件 - 强制执行架构规范 - 处理横切关注点(日志、安全) | Spring Boot、Django、.NET Core、Express.js、Qt、TensorFlow | 软件脚手架:为开发者预设标准化构建模块,像搭积木一样快速组装应用,避免重复造轮子。 |
表现层 / API层 | 处理用户/系统交互,适配输入输出格式 | - 接收并解析请求(HTTP/RPC/MQ) - 数据验证与清洗 - 调用业务层逻辑 - 组织响应(HTML/JSON/XML) - 渲染用户界面(Web/移动端) | RESTful API、GraphQL、gRPC、MVC框架(Controller)、React/Vue、Swagger | 系统接待员:接收外部指令,转交内部处理,并将结果整理成用户或系统可理解的格式返回。 |
业务层 / 领域层 | 实现核心业务规则与流程 | - 执行业务规则校验(如风控) - 编排业务流程(下单、支付) - 计算业务数据(价格、统计) - 封装领域模型状态变更 | DDD领域模型、Service服务、规则引擎(Drools)、工作流引擎(Activiti) | 业务指挥官:掌管系统的核心逻辑,像业务专家一样决策“该做什么”和“如何正确执行”。 |
数据层 | 管理数据持久化,抽象存储细节 | - 数据增删改查(CRUD) - 数据库连接池管理 - 事务控制(ACID) - ORM映射 - 执行复杂查询与缓存策略 | JDBC、Hibernate、MyBatis、MongoDB、Redis、SQL/NoSQL数据库 | 数据仓库管理员:安全存储和高效检索数据,让业务层无需关心数据存在“数据库还是文件柜”。 |
中间层 / 集成层 | 解耦系统组件,增强跨服务通信与非功能性需求 | - 跨服务通信(RPC/消息队列) - 服务注册发现与负载均衡 - 异步处理与流量削峰 - API网关路由与认证 - 分布式事务协调 | Kafka、RabbitMQ、gRPC、Redis、API网关(Kong)、服务网格(Istio) | 系统协调员:连接多个服务或组件,像调度中心处理消息转发、流量管控和故障隔离。 |
运行时层 | 提供程序执行环境,管理底层资源 | - 加载/编译字节码或指令 - 内存分配与垃圾回收(GC) - 线程/协程调度 - 提供核心库(如网络IO) - 操作系统交互 | JVM(Java)、CLR(.NET)、Node.js(V8)、Go Runtime、WebAssembly | 程序执行引擎:充当应用的“操作系统”,管理内存、CPU等资源,让代码高效安全运行。 |
四、软件系统架构层级别名介绍
-
分层别名对照表
标准层级名称 | 常见别名(按使用频率排序) |
---|---|
网络层 | 传输层、通信层、网络传输层、L3/L4层(OSI)、网络协议层、基础设施层 |
框架层 | 基础架构层、平台层、支撑层、工具层、开发骨架层、运行时库层、引擎层(如游戏引擎) |
表现层 / API层 | 接入层、接口层、门面层、端点层、用户界面层(UI层)、BFF层(Backend For Frontend)、适配器层 |
业务层 / 领域层 | 服务层、逻辑层、核心层、应用层、用例层、规则层、处理器层、领域模型层(DDD)、事务层 |
数据层 | 持久层、存储层、数据访问层(DAO层)、仓库层(Repository层)、数据库层、ORM层 |
中间层 / 集成层 | 服务总线层、通信层、消息层、代理层、网关层、企业服务层(ESB层)、解耦层、分布式基础设施层 |
运行时层 | 执行引擎层、虚拟机层(VM层)、平台运行时、核心运行时、字节码执行层、环境抽象层 |
-
别名使用场景说明
1.网络层
传输层/通信层:强调数据传输能力(如TCP/IP协议栈文档)
基础设施层:云原生架构中描述底层网络资源(AWS/Azure文档)
2.框架层
引擎层:游戏开发中特指Unity/Unreal等渲染与物理引擎
支撑层:嵌入式系统开发文档常用
3.表现层 / API层
BFF层:微服务架构中专为前端定制聚合接口的中间层
适配器层:六边形架构中转换外部协议的适配器
4.业务层 / 领域层
应用层 vs 业务层:
企业Java体系(J2EE)中应用层
常包含服务编排
DDD理论严格区分应用层
(流程)与领域层
(规则)
服务层:Spring框架中@Service
注解的组件层
5.数据层
DAO层(Data Access Object):直接封装数据库操作
Repository层:DDD中面向聚合根的数据接口
6.中间层 / 集成层
服务总线层:金融系统ESB(企业服务总线)解决方案
代理层:API网关在零信任架构中的角色
7.运行时层
虚拟机层:特指JVM/CLR等托管执行环境
环境抽象层:容器化场景(如Docker对OS内核的抽象)
微服务设计推荐表现层→业务层→数据层→集成层的四层模型