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

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

表现层架构

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,但更强调集合操作,是领域驱动设计中的一个概念。
  • 数据库连接池:数据库连接池是一种用于提高数据库操作性能和资源管理的技术。在传统的数据库访问模式中,每次用户请求都需要创建一个新的数据库连接,使用完毕后再关闭连接。这种模式在高并发环境下会导致大量的连接创建和销毁,从而降低系统的性能。数据库连接池通过重用已经创建的连接来解决这个问题。
相关推荐
DC妙妙屋26 分钟前
10.24.2024刷华为OD C题型(四) -- 对象list按照多个属性排序
1024程序员节
OBOO鸥柏33 分钟前
OBOO鸥柏丨液晶拼接大屏分布式基本管理系统架构显示技术曝光
人工智能·分布式·科技·系统架构·交互
bitenum44 分钟前
qsort函数的学习与使用
c语言·开发语言·学习·算法·visualstudio·1024程序员节
EmotionFlying2 小时前
(11)(2.1.6) Hobbywing DroneCAN ESC(一)
copter·ardupilot·1024程序员节·电调和电机
伏飞而行2 小时前
六、元素应用CSS的习题
1024程序员节
idealzouhu2 小时前
Spring Boot 实现文件上传下载功能
java·spring boot·1024程序员节
sudo_Ene3 小时前
Isaac Sim Docker 部署并使用过程记录
笔记·学习·docker·1024程序员节·isaacsim
天使的同类3 小时前
uniapp使用easyinput文本框显示输入的字数和限制的字数
1024程序员节
Elastic 中国社区官方博客4 小时前
GraphQL 与 Elasticsearch 相遇:使用 Hasura DDN 构建可扩展、支持 AI 的应用程序
大数据·后端·elasticsearch·搜索引擎·全文检索·graphql·1024程序员节
·云扬·4 小时前
WeakHashMap详解
java·开发语言·学习·1024程序员节