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

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

表现层架构

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,但更强调集合操作,是领域驱动设计中的一个概念。
  • 数据库连接池:数据库连接池是一种用于提高数据库操作性能和资源管理的技术。在传统的数据库访问模式中,每次用户请求都需要创建一个新的数据库连接,使用完毕后再关闭连接。这种模式在高并发环境下会导致大量的连接创建和销毁,从而降低系统的性能。数据库连接池通过重用已经创建的连接来解决这个问题。

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

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

相关文章

Windows 11优化利器:全方位定制你的操作系统

最近,有用户询问如何禁用Windows Defender,这让我想起了一款功能强大的Windows 11设置工具。这款工具不仅包含了禁用Defender的功能,还提供了许多其他实用的系统定制选项。 工具概览 这款名为“Windows11轻松设置”的软件,最近进…

延迟队列实现及其原理详解

1.绪论 本文主要讲解常见的几种延迟队列的实现方式,以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景,主要包含如下场景: 1.比如订单超过15分钟后,关闭未关闭的订单。 2.比如用户可以…

保姆级教程来喽!从下载开始的Luatools~小白必看!

对于刚接触Luatools的新手朋友们,这篇保姆级教程将手把手教你如何从下载开始使用这款强大的调试工具。Luatools适用于合宙的多种4G模组,支持固件获取、打包、调试等多项功能,确保你的开发工作事半功倍。 本文就来讲解一下Luatools的下载和使…

Flask集成sqlalchemy (学习笔记)

文章目录 前言一、安装sqlalchemy二、连接mysql1.创建一个配置数据库信息的文件(如上图)2.创建sqlalchemy配置文件3.app.py中引入注册4.创建模型对象5.在app.py中进行关联6.执行映射语句(迁移命令) 总结 前言 本文章讲解的是分模…

Html/Vue浏览器下载并重命名文件

Html/Vue浏览器下载并重命名文件 row是上方图片的数据对象 download(row) {const link document.createElement(a);link.style.display none;// 设置下载地址link.setAttribute(href, row.url);// 设置文件名(这里可以重新设置名字,下载之后的文件就是你重新命名…

王源携手匡威,官宣全球代言人身份,引全网热议

近日,匡威隆重宣布,青年偶像王源荣膺其全球品牌代言人。在官宣消息发布前夕,王源与匡威的合作便已在微博热搜上占据头榜,备受广大网友关注。 随着官宣及产品上线的钟声敲响,王源的粉丝们迅速行动起来,积极支…

Linux运维篇-ansible的使用

目录 ansible简介ansible架构1、连接插件2、核心模块3、自定义模块4、插件5、剧本6、主机清单 ansible的执行过程安装Ansibleansible的使用ansible.cfg文件修改添加主机清单方式一方式二方式三 测试主机清单连接 ansible简介 简单来说,ansible就是一个自动化运维工…

数学物理方法第五版梁昆淼课后答案详解PDF电子版

序言 梁昆淼《数学物理方法》第四版面世以来,随着学科的发展, 物理类各专业“数学物理方法”课程的教学要求与学时发生了变化。为了适应物理类人才培养的需要,在第四版的基础上, 根据多年的教学实践, 对本书进行了修订…

K8S部署

二进制搭建Kubernetes v1.20 k8s集群master01:192.168.10.80 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:192.168.10.20 k8s集群node01:192.168.10.18 kubelet kube-proxy docker k8s集群node02…

数据导入导出

1.数据加载 - LOAD 语法 LOAD DATA [LOCAL] INPATH filepath [OVERWRITE] INTO TABLE tablename; 操作: 建表 CREATE TABLE myhive.test_load( dt string comment 时间(时分秒) , user_id string comment 用户 ID, word string comment 搜索词 , u…

Android compose 重建流程1

前言 本文是笔者学习Compose是如何自动触发UI刷新的笔记,可能缺乏一定可读性和教导性.(建议阅读参考文献更具启发性) 使用以下BOM作为研究环境. composeBom "2024.04.01" androidx-compose-bom { group "androidx.compose", name "compose-bom…

【linux】物理卷、卷组、逻辑卷

概述 初次了解物理卷、卷组和逻辑卷这些概念,大概理了下这三个概念之间的关系,只是一点皮毛,用于大致理解: 个人感觉很像虚拟化的过程,物理卷就相当于物理设备;卷组相当于把这些物理设备分组了&#xff1…

有效三角形的个数---双指针法

目录 一&#xff1a;题目 二&#xff1a;算法原理 三&#xff1a;编写代码 一&#xff1a;题目 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二&#xff1a;算法原理 三&#xff1a;编写代码 int triangleNumber(vector<int>& nums) {//1.优…

解锁PDF权限密码

目录 背景: 定义与功能&#xff1a; 过程&#xff1a; 主要功能&#xff1a; 使用方式&#xff1a; 使用限制&#xff1a; 注意事项&#xff1a; 总结&#xff1a; 背景: 前段时间自己设置了PDF文件的许可口令&#xff0c;忘了口令导致自己无法编辑内容等&#xff0c;这…

养宠家庭必备,双十一特辑——性价比高的宠物空气净化器推荐

对于养宠家庭来说&#xff0c;宠物空气净化器简直就是仅次于空调的人类最伟大发明。尤其是到了宠物疯狂掉毛的换毛季节&#xff0c;宠物空气净化器成为铲屎官们抵御满屋浮毛纷飞必不可少的清洁神器&#xff0c;除了价格有点高之外&#xff0c;可以说是没有什么缺点了。 养宠七年…

WEB前端使用标签制作网页

需要使用HTML的一些基本标签制作网页 基本代码如下: <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"post" enctype"text/…

激活函数(sigmoid、tanh、ReLu)

1️⃣ 激活函数的作用 激活函数为神经网络引入非线性&#xff0c;如果没有激活函数&#xff0c;即使网络层数再多&#xff0c;也只能处理线性可分问题。 在机器学习中&#xff0c;线性可分问题指的是可以通过一条直线&#xff08;或高维空间的一个超平面&#xff09;将数据完全…

GS-SLAM Dense Visual SLAM with 3D Gaussian Splatt 论文阅读

项目主页 2024 CVPR (highlight) https://gs-slam.github.io/ 摘要 本文提出了一种基于3D Gaussian Splatting方法的视觉同步定位与地图构建方法。 与最近采用神经隐式表达的SLAM方法相比&#xff0c;本文的方法利用实时可微分泼溅渲染管道&#xff0c;显著加速了地图优化和…

Django学习- ORM基础操作_创建数据

ORM操作&#xff1a; 管理器对象&#xff1a; 创建数据&#xff1a; Django shell 想要操作模型对象&#xff0c;首先我们需要把它引进Django shell中 >>> from bookstore.models import Book >>> b1 Book.objects.create(titleAI, pub清华大学出版社, pr…

开挖 Domain - 前奏

WPF App 主机配置 Microsot.Extension.Hosting 一键启动&#xff08;配置文件、依赖注入&#xff0c;日志&#xff09; // App.xaml.cs 中定义 IHost private readonly IHost _host Host.CreateDefaultBuilder().ConfigureAppConfiguration(c > {_ c.SetBasePath(Envi…