系统架构图设计(轻量级架构)

轻量级架构一般包括:表现层、业务逻辑层、持久层、数据库层

表现层架构

MVC
  • 模型(Model):应用程序的主体部分,表示业务数据和业务逻辑
  • 视图(View):用户看到并与之交流的界面
  • 控制器(Controller):接受用户的输入,并调用模型和视图去完成用户的需求
MVP
  • 模型(Model):提供数据
  • 视图(View):展示数据
  • 呈现器(Presenter):逻辑处理
  • MVP 避免了View 和 Model 之间的耦合,还进一步降低了 Presenter 对 View 的依赖。
MVVM
  • 视图(View):展示数据
  • 模型(Model):提供数据
  • 视图模型(ViewModel):ViewModel 是MVVM 的核心,通过DataBinding 实现View 与Model 之间的双向绑定,其内容包括数据状态处理、数据绑定及数据转换

业务逻辑层架构

  • DomainModel: 领域模型是业务逻辑的核心,它代表了业务领域的概念、规则和约束;
    • 简单性:模型尽量简单,避免过度设计,只包含必要的属性和方法。
    • 内聚性:模型应该高度内聚,每个领域对象都应该代表一个清晰的业务概念。
    • 无状态性:领域模型通常是无状态的,不保存会话信息,以方便水平扩展。
  • Service: 服务层是业务逻辑的实现层,它负责将领域模型暴露的功能组织起来,供控制层调用
    • 接口化:服务层通过接口定义操作,使得实现可以在不影响客户端的情况下进行替换或升级。
    • 事务管理:服务层通常负责事务的开始、提交和回滚,确保业务操作的原子性。
    • 轻量级依赖:服务层之间的依赖应该是轻量级的,避免复杂的依赖关系。
  • Control: 控制层负责处理外部请求,将请求映射到相应的服务层处理,并返回响应
    • 薄控制层:控制层不包含业务逻辑,只负责请求转发和数据格式转换。
    • RESTful API:在Web应用中,控制层通常以RESTful API的形式提供接口。
    • 路由:控制层负责将不同的请求路由到正确的服务处理。

持久层架构

轻量级架构的持久层主要关注于数据的持久化,它通常指的是应用中的数据访问层,负责将业务数据保存到数据库中,并在需要时从数据库中检索数据。持久层采用DAL工厂模式来匹配不同DBMS厂家的IDAL实现接口,它使得系统可以灵活地接入不同的数据源。

持久层常用技术

  • ORM(对象关系映射) :这种方式利用工具或平台能够帮助将应用程序中的数据转换成关系型数据库中的记录;或是将关系数据库中的记录转换成应用程序中代码便于操作的对象。
    • Hibernate:全自动化ORM 框架,它对JDBC进行了封装,简化了数据库操作。
    • MyBatis:半自动化ORM 框架,它提供了更细粒度的控制,允许开发者直接编写SQL语句。
  • JPA(Java Persistence API):Java持久化API,定义了一系列规范,用于对象持久化的标准化。
  • 数据访问对象(DAO)模式:通过DAO抽象数据访问逻辑,为业务逻辑层提供数据操作的接口。
  • 仓储模式(Repository):类似于DAO,但更强调集合操作,是领域驱动设计中的一个概念。
  • 数据库连接池:数据库连接池是一种用于提高数据库操作性能和资源管理的技术。在传统的数据库访问模式中,每次用户请求都需要创建一个新的数据库连接,使用完毕后再关闭连接。这种模式在高并发环境下会导致大量的连接创建和销毁,从而降低系统的性能。数据库连接池通过重用已经创建的连接来解决这个问题。
相关推荐
CoderYanger1 天前
递归、搜索与回溯-穷举vs暴搜vs深搜vs回溯vs剪枝:12.全排列
java·算法·leetcode·机器学习·深度优先·剪枝·1024程序员节
QQ20795235591 天前
基于机器学习的农产品价格数据分析与预测的可视化系统毕业设计项目源码
1024程序员节
金融小师妹1 天前
基于LSTM-GARCH混合模型:降息预期驱动金价攀升,白银刷新历史峰值的蒙特卡洛模拟验证
大数据·人工智能·深度学习·1024程序员节
普通网友1 天前
‌Flutter vs Kotlin:移动开发的未来趋势与选择
1024程序员节
数智化架构师-Aloong1 天前
⚡️ PowerJob深度解析:Java生态下高并发分布式调度的终极选择
java·开发语言·分布式·系统架构
我来整一篇1 天前
[油猴脚本] 微软必应奖励每日任务脚本
1024程序员节
金融小师妹1 天前
AI视角下黄金避风港属性的量化验证:基于2000-2025年历史数据的时序分析
大数据·人工智能·深度学习·1024程序员节
君以思为故1 天前
认识linux -- 进程控制
linux·运维·1024程序员节
CoderYanger1 天前
递归、搜索与回溯-记忆化搜索:40.矩阵中的最长递增路径
java·线性代数·算法·leetcode·矩阵·1024程序员节
y***13641 天前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构