当前位置: 首页 > news >正文

开源博客项目Blog .NET Core源码学习(12:App.Application项目结构分析)

  开源博客项目Blog的App.Application项目主要定义网站页面使用的数据类,同时定义各类数据的增删改查操作接口和实现类。App.Application项目未安装Nuget包,主要引用App.Core项目的类型。
  App.Application项目的顶层文件夹如下图所示,下面逐一概述其大致用途。

在这里插入图片描述
  Base文件夹。主要包含基础接口及实现类定义,其下级文件如下图所示,其中:
  IAppService泛型接口定义数据对象的增删改查等通用异步及同步操作接口,AppService泛型类则基于App.Core项目的IAppRepository接口实现IAppService接口函数。App.Application项目的很多数据类操作服务都继承自AppService泛型类;
  EntityDto泛型类仅包含Id属性,App.Application项目的很多数据类都继承自该类;
  IMapperTag接口继承自Mapster.IRegister接口,App.Application项目中共定义了两个Mapper类继承自IMapperTag接口,以设置不同类型之间的属性映射关系。博客项目启动时会调用App.Framwork项目的ServiceCollectionExtension类的函数扫描并注册当前解决方案的四个项目中所有继承自IRegister接口的非抽象类;
  PageInputDto、PageOutputDto和QueryInputDto定义了博客页面中分页查询相关的类定义。

在这里插入图片描述

  Blog文件夹。包含博客网站前台页面和后台管理页面中主要数据对象的类型定义、数据操作接口及服务定义、数据验证定义,其下级结构如下图所示,其中:
  Dtos文件夹包含文章、栏目、评论、标签、时间线等网页所需数据类定义;
  Validators文件夹包含对文章、留言、通知、回复、标签等页面输入对象的数据校验类;
  Blog文件夹下包含10对接口及接口实现服务(服务同时集成AppService泛型类),对网站页面中的主要数据对象提供增删改查操作,同时在dto对象类定义和数据库表对象类定义间切换。

在这里插入图片描述
  SysManager文件夹。包含博客网站中角色、菜单、按钮及权限的类定义及操作服务。其下级结构如下图所示,其中:
  Dtos文件夹包含菜单、按钮、权限、角色等数据类定义;
  Validators文件夹包含对权限设置的数据校验类;
  SysManager文件夹下包含4对接口及接口实现服务(服务同时集成AppService泛型类),对网站页面中的角色、菜单、按钮及权限等数据提供增删改查操作,同时在dto对象类定义和数据库表对象类定义间切换。

在这里插入图片描述

  User文件夹。包含博客网站中与用户登录相关的数据类及操作服务定义。其下级结构如下图所示,其中:
  Dtos文件夹包含用户、账号等数据类定义,同时包含修改/重置密码、用户登录、QQ账号登录等页面操作所需的数据类定义;
  User文件夹下包含4对接口及接口实现服务(除QQAuthorize类之外的服务同时集成AppService泛型类),对网站页面中的用户、账号、QQ用户等数据提供增删改查操作,同时在dto对象类定义和数据库表对象类定义间切换。

在这里插入图片描述
参考文献:
[1]https://gitee.com/miss_you/Blog
[2]https://www.donet5.com/Home/Doc
[3]https://github.com/MapsterMapper/Mapster
[4]https://github.com/rivenfx/Mapster-docs

http://www.lryc.cn/news/326980.html

相关文章:

  • AES加密解密算法
  • 计算机网络(05)
  • 6、ChatGLM3-6B 部署实践
  • python面试题(1~10)
  • 分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测
  • SQLServer CONCAT 函数的用法
  • python快速入门一
  • Elasticsearch 面试题及参考答案:深入解析与实战应用
  • 【ARM 嵌入式 C 入门及渐进 18 -- 字符数字转整形函数 atoi 介绍】
  • 全国超市数据可视化仪表板制作
  • react native 总结
  • 什么是自然语言处理(NLP)?自然语言处理(NLP)的概述
  • 共享旅游卡怎么使用?共享旅游卡的奥秘与魅力,解锁高效旅行的新方式
  • 使用yolov9来实现人体姿态识别估计(定位图像或视频中人体的关键部位)教程+代码
  • 「14」四个步骤,让你在直播间轻松演义你的教案……
  • 分解质因子
  • iOS18系统中,苹果可能不再使用Siri,转用Gemini
  • python笔记进阶--模块、文件及IO操作(1)
  • 单元测试框架 Junit
  • 数电票怎么查询真伪|发票识别接口|发票查验接口|PHP接口文档
  • 外包干了一个月,忘记Git怎么使用了...
  • 【微服务篇】深入理解微服务网关原理以及Spring Gateway
  • 循序渐进丨MogDB 对 Oracle DBLink兼容性增强
  • 【Python操作基础】——集合
  • 蓝桥杯day15刷题日记
  • AndroidStudio中一些实用插件
  • 计算机网络⑧ —— IP地址
  • YOLOv5-小知识记录(一)
  • 服务运营 | 印第安纳大学翟成成:改变生活的水井选址
  • 计算机网络(特南鲍姆版) 期末总结