Util应用框架后端概述(unity后端框架)
ccwgpt 2024-09-20 13:35 27 浏览 0 评论
Util后端概述
Util应用框架 .Net 功能概述
本节列出了Util应用框架集成封装了哪些有用的.Net功能,以及为此功能引入或参考的第三方技术框架.
框架核心
- 启动器
Util应用框架在项目启动时,会扫描全部程序集,并自动执行服务注册器,执行相关依赖配置.
启动器核心代码参考自 NopCommerce .
- 服务注册器
项目启动扫描时,会加载所有的服务注册器,并按顺序执行.
服务注册器类似其它应用框架的模块概念,但功能有限.
只能用于配置依赖注入关系,无法获取服务提供程序,所以不能执行复杂的操作.
- 依赖服务注册器
扫描 ISingletonDependency, IScopeDependency, ITransientDependency 接口,并自动配置依赖.
框架基础
- 对象到对象映射
技术选型: AutoMapper.
对象到对象映射主要用于分层对象之间的转换,比如从实体映射到DTO.
Util 在所有对象上添加 MapTo 扩展方法,自动完成基础配置,如果映射的两端对象属性名相同,则无需配置,直接使用即可.
- AOP( 面向切面编程 )
技术选型: AspectCore.
AOP用于在调用方法时进行拦截,在执行前后添加自定义逻辑.
Util 主要使用AOP拦截器进行验证.
- 对象验证
Util 使用 DataAnnotation 注解作为基础验证方式,并提供 验证规则 和 验证处理器 等构造块进行自定义验证和处理.
Util 在实体,DTO等对象上添加了 Validate 方法, 以标准化的方式进行对象验证.
- 异常处理
Util 提供了 Warning 类型,表示业务异常,并封装相关异常操作.
- 身份认证和授权
技术选型: Identity, Identity Server 4
Identity 是Asp.Net Core自带的身份认证框架,提供用户管理,登录认证等功能.
Identity Server 4 是一个身份认证服务器,用于颁发令牌和验证令牌等操作.
Identity Server 4 已经停止更新,它的新版本是收费的,Util 仅使用 Identity Server 4 的基础功能,由于它的基础功能已经十分稳定,暂时不需要迁移到其它框架.
Util 除了集成 Identity 和 Identity Server 4,还扩展了Asp.Net Core自定义授权策略,提供简单易行的Api访问控制方法.
Util Platform提供了基于角色和资源的权限管理功能,可以轻松设置前端UI菜单和按钮等权限,同时对后端API进行访问控制.
- 本地化
技术选型: My.Extensions.Localization.Json
Util 本地化支持Json文件或自定义数据存储方式.
My.Extensions.Localization.Json 提供了Json本地化功能.
由于无法满足项目需求, 以源码方式引入, 对健壮性和性能进行了提升.
- 日志
技术选型: Serilog, Seq, Exceptionless
Serilog是.Net目前最流行的日志框架,支持结构化日志.
Seq 和 Exceptionless 是日志管理系统,提供了操作日志的界面,可以使用Serilog写入.
Util 对它们进行了轻度封装,集成了常用配置,并提供日志上下文等扩展.
- 缓存
技术选型: EasyCaching
Util 集成了内存缓存和Redis缓存两种提供程序.
- 事件总线
技术选型: MediatR, Dapr
事件总线分为本地事件总线和集成事件总线.
Util 本地事件总线提供两种实现,默认使用Ioc方式实现,无需外部依赖. 另外引入了 MediatR 框架,它是流行的进程内事件处理框架.
集成事件总线用于微服务之间消息通信,Util 集成了 Dapr 微服务框架,基于 Dapr 的发布订阅实现集成事件总线.
- 模板引擎
技术选型: RazorEngineCore , Handlebars.Net
Util 以源码方式引入 RazorEngineCore ,并进行大量修改.
Razor 模板引擎目前主要用在 Util 代码生成器.
- 图像处理
技术选型: ImageSharp
ImageSharp 是一个图像处理库.
Util 使用 ImageSharp 实现动态文本头像生成.
- 文件存储
技术选型: Minio
Minio 是流行的对象存储系统,适合部署到内部服务器.
Util 集成封装了 Minio SDK, 提供 存储桶名称处理策略, 文件名处理策略等构造块进行扩展处理.
- 后台任务
技术选型: Quartz , HangFire
Util 封装了 Quartz 和 HangFire, 用于处理后台任务.
- 数据访问
技术选型: EntityFrameworkCore , Dapper
Util数据访问主要使用 EntityFrameworkCore ,它是.Net官方提供的ORM框架,属于重量级数据访问框架.
EntityFrameworkCore 支持工作单元模式,对复杂的业务处理非常有效,但对复杂的查询操作无能为力.
可以直接使用 EntityFrameworkCore 执行Sql语句, 但此操作非常原始,效率低下.
Dapper是轻量级数据访问框架, Util引入它并进行封装,用于解决查询问题.
目前 Util Dapper 封装尚不可用,它还缺乏分页,Lambda表达式支持等高级功能,现在仅用于代码生成读取元数据,后续会进行扩展.
由于使用国产数据库的需求逐渐增多,后续将考虑引入 FreeSql 数据访问框架.
- 工具类
Util包含大量工具类,用于处理常用操作.
- 类型转换操作
- Lambda操作
- 命令行操作
- 配置操作
- 枚举操作
- Ioc操作
- Json操作
- 字符串操作
- 时间操作
- IP操作
- Web操作
- 加密操作
- …
架构支持
多租户架构支持
Saas系统支持多家客户使用同一系统,客户数据彼此隔离.
Util 参考了 ABP 应用框架的多租户架构设计的租户解析和数据过滤部分.
Util 多租户架构在独立部署租户数据库方面基于 EntityFrameworkCore 的官方建议,有一些限制.
DDD分层架构支持
Util 分层架构基于领域驱动设计(DDD) 和 企业应用架构模式(POEAA) 的基础构造块.
.Net 早期流行的分层架构是三层架构, 对于不熟悉 DDD 的开发人员,可以把它当成三层架构使用,不过术语的变化而已.
但是对于有一定领域模型使用经验的开发人员,该架构在处理更复杂的业务时可以有效管控复杂性.
对于复杂模块的开发,该架构与三层架构的主要区别在于,实体是作为简单数据容器,还是作为业务处理的场所.
对于很多业务领域,将实体对应的业务操作封装到实体本身,可以提升业务表达能力和封装性.
Util 分层架构分为四层.
领域层
领域层是Util分层架构的核心.
领域层非常纯净, 没有对数据访问和UI的依赖,很容易对该层进行单元测试.
- 聚合根
- 作为并发单元的最外层实体.
- 实体
- 由唯一标识决定的业务对象.
- 值对象
- 表示实体属性值的对象.
- 仓储
- 表示聚合根的集合,用于进行数据访问.
- 领域服务
- 用于封装多个聚合根的操作.
- 领域事件
- 表示实体数据发生变化.
- 使用Util本地事件总线发布领域事件.
- 有几个标准领域事件:
- EntityChangedEvent - 实体变更事件
- EntityCreatedEvent - 实体创建事件
- EntityUpdatedEvent - 实体修改事件
- EntityDeletedEvent - 实体删除事件
基础设施层
对于大多项目,基础设施层主要包含数据访问的实现.
应用层
集成了领域层和基础设施层,为UI提供服务.
- 应用服务
- 应用服务接收UI请求,并将调用委托给实体,领域服务等构造块完成业务功能.
- 对于普通项目,业务逻辑直接在应用服务中实现即可,这与三层架构相似.
- 数据传输对象(DTO)
- 数据传输对象是一种用来传递参数的对象.
- 查询参数对象
- 查询参数对象是一种专门用来传递查询参数的对象.
表现层
微服务架构支持
Util 集成了 Dapr ,它是微软主推的微服务框架.
Util 封装了 Dapr Http同步调用,异步事件发布订阅,状态存储等功能.
并对身份认证,事件日志,事件重发等重要功能进行扩展.
常见业务功能支持
树形结构支持
有些数据包含层次结构.
Util 分层架构包含对树形结构的支持.
如果使用 Util UI,无论加载树形表格还是树形,继承基类即可实现功能.
审计支持
大多操作需要记录创建人,创建时间,修改人,修改时间等审计信息.
Util支持保存时自动设置审计信息.
Util 审计设计参考自 ABP 应用框架.
逻辑删除支持
Util 支持逻辑删除,删除时更新为已删除状态,查询时自动过滤已删除记录.
Util 逻辑删除设计参考自 ABP 应用框架.
对象变更值支持
修改时可能需要获取对象哪些数据发生了变化.
Util 提供多种方式获取对象变更值记录.
代码生成
由于 Util 采用 DDD分层架构,导致简单需求也需要创建大量的类型.
手工创建这些类型效率低下,通过代码生成迅速创建它们,可以大幅提升开发效率和质量.
Util 配套代码生成器, 简单易用, 可解决大部分机械工作.
在生成的代码基础上进行修改,比从头开始工作要好得多.
相关推荐
- Spring WebFlux vs. Spring MVC(springboot是什么)
-
背景随着异步I/O和Netty等框架的流行,响应式编程逐渐走入大众的视野。但是,响应式编程本身并不是太新的概念,这个术语最早出现在1985年DavidHarel和AmirPnue...
- 深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理
-
适配主流框架如果不借助Sentinel提供的适配主流框架的模块,则在使用Sentinel时需要借助try-catchfinally将要保护的资源(方法或代码块)包起来,在目标方法或代码块执行之前,调...
- Spring MVC 底层原理深度解析:从请求到响应的全链路拆解
-
一、Servlet容器与DispatcherServlet的启动博弈1.Tomcat初始化阶段java//Tomcat初始化流程StandardContext#startInterna...
- 改造总结之传统SpringMVC架构转换为SpringBoot再到集群
-
改造出发点,是基于现在服务都在向上云的目标前进,传统SpringMVC难以满足项目持续构建、服务节点任意扩展的需求,所以开始了历史项目的改造。项目改造考虑的主要是兼容以前的业务代码,以及session...
- SpringBoot3 整合 Spring MVC 全解析:开启高效 Web 开发之旅
-
在当今的JavaWeb开发领域,Spring框架家族无疑占据着重要的地位。其中,SpringBoot3和SpringMVC更是开发者们构建强大、高效Web应用的得力工具。今天,...
- 一文读懂SpringMVC(一文读懂!残疾人低保边缘家庭能领的超实用福利政策)
-
1.SpringMVC定义1.1.MVC定义Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据View(视图):是应用程序中处理数据显示的部分。通常...
- 69 个Spring mvc 全部注解:真实业务使用案例说明(必须收藏)
-
SpringMVC框架的注解为Web开发提供了一种简洁而强大的声明式方法。从控制器的定义、请求映射、参数绑定到异常处理和响应构建,这些注解涵盖了Web应用程序开发的各个方面。它们不仅简化了编码工作,...
- Spring MVC工作原理:像拼积木一样构建Web应用
-
SpringMVC工作原理:像拼积木一样构建Web应用在Java的Web开发领域,SpringMVC无疑是一个让人又爱又恨的存在。它像一位神通广大的积木搭建大师,将一个个分散的功能模块巧妙地拼接在...
- 5千字的SpringMVC总结,我觉得你会需要
-
思维导图文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary概述SpringMVC再熟悉不过的框架了,因为现在最火的...
- SpringMVC工作原理与优化指南(springmvc工作原理和工作流程)
-
SpringMVC工作原理与优化指南在现代Java开发中,SpringMVC无疑是构建Web应用程序的首选框架之一。它以其优雅的设计和强大的功能吸引了无数开发者。那么,SpringMVC究竟是如何工作...
- Spring MVC框架源码深度剖析:从入门到精通
-
SpringMVC框架源码深度剖析:从入门到精通SpringMVC框架简介SpringMVC作为Spring框架的一部分,为构建Web应用程序提供了强大且灵活的支持。它遵循MVC(Model-V...
- 3000字搞明白SpringMVC工作流程、DispatcherServlet类、拦截器!
-
SpringMVC基础虽然SpringBoot近几年发展迅猛,但是SpringMVC在Web开发领域仍然占有重要的地位。本章主要讲解SpringMVC的核心:DispatcherServlet类...
- 多年经验大佬用2000字透彻解析SpringMVC的常用注解及相关示例
-
SpringMVC注解SpringMVC框架提供了大量的注解,如请求注解、参数注解、响应注解及跨域注解等。这些注解提供了解决HTTP请求的方案。本节主要讲解SpringMVC的常用注解及相关示例...
- 知乎热议:如何成为前端架构师,赚百万年薪?
-
作者|慕课网精英讲师双越最近有一条知乎热议:从一个前端工程师,如何根据目标,制定计划,才能快速进阶成为前端架构师?不久之前我参与了一次直播,讲到了自己对于Web前端架构师的理解。架构师这个角色...
- 学习笔记-前端开发架构设计(前端架构设计方案)
-
前端开发的技术选项主要包含以下几点,下面对一些名词概念的解释做了笔记:1、分层架构:把功能相似,抽象级别相近的实现进行分层隔离优势:松散耦合(易维护,易复用,易扩展)常见分层方式:MVC,MVVM2、...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Spring WebFlux vs. Spring MVC(springboot是什么)
- 深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理
- Spring MVC 底层原理深度解析:从请求到响应的全链路拆解
- 改造总结之传统SpringMVC架构转换为SpringBoot再到集群
- SpringBoot3 整合 Spring MVC 全解析:开启高效 Web 开发之旅
- 一文读懂SpringMVC(一文读懂!残疾人低保边缘家庭能领的超实用福利政策)
- 69 个Spring mvc 全部注解:真实业务使用案例说明(必须收藏)
- Spring MVC工作原理:像拼积木一样构建Web应用
- 5千字的SpringMVC总结,我觉得你会需要
- SpringMVC工作原理与优化指南(springmvc工作原理和工作流程)
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- scrapy框架 (52)
- beego框架 (42)
- java框架spring (43)
- grpc框架 (55)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)