开源博客项目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
相关文章:
开源博客项目Blog .NET Core源码学习(12:App.Application项目结构分析)
开源博客项目Blog的App.Application项目主要定义网站页面使用的数据类,同时定义各类数据的增删改查操作接口和实现类。App.Application项目未安装Nuget包,主要引用App.Core项目的类型。 App.Application项目的顶层文件夹如下图所示,下面逐…...
AES加密解密算法
一,AES算法概述 AES属于分组加密,算法明文长度固定为128位(单位是比特bit,1bit就是1位,128位等于16字节) 而密钥长度可以是128、192、256位 当密钥为128位时,需要循环10轮完成加密࿰…...
计算机网络(05)
计算机网络(04) 网络负载均衡 由多台服务器以对称的方式组成一个服务器集合每台服务器都具有等价的地位 , 可以单独对外提供服务而无须其他服务器的辅助均衡负载能够平均分配客户请求到服务器列阵,借此提供快速获取重要数据,解决…...
6、ChatGLM3-6B 部署实践
一、ChatGLM3-6B介绍与快速入门 ChatGLM3 是智谱AI和清华大学 KEG 实验室在2023年10月27日联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,免费下载,免费的商业化使用。 该模型在保留了前两代模型对话流畅、部署门槛低等众多…...
python面试题(1~10)
1、列表(list)和元组(tuple)有什么区别? ①列表是不可变的,创建后可以对其进行修改。元组是不可变的,元组一旦创建,就不能对其进行修改。 ②列表表示的顺序,它们是有序…...
分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测
分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测 目录 分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测分类效果基本介绍模型描述程序设计参…...
SQLServer CONCAT 函数的用法
CONCAT函数用于将多个字符串值连接在一起。以下是一个简单的示例,演示了如何使用CONCAT函数: -- 创建一个示例表 CREATE TABLE ExampleTable (FirstName NVARCHAR(50),LastName NVARCHAR(50) );-- 插入一些示例数据 INSERT INTO ExampleTable (FirstNam…...
python快速入门一
变量 定义一个变量并打印到控制台 message "Hello World!" print(message)控制台输出 Hello World!修改变量 message "Hello World!" print(message) message "Hello Python World!" print(message)控制台输出 Hello World! Hello Pytho…...
Elasticsearch 面试题及参考答案:深入解析与实战应用
在大数据时代,Elasticsearch 以其强大的搜索能力和高效的数据处理性能,成为了数据架构师和开发者必备的技能之一。本文将为您提供一系列精选的 Elasticsearch 面试题及参考答案,帮助您在面试中脱颖而出,同时也为您的大数据架构设计提供实战参考。 1. 为什么要使用 Elastic…...
【ARM 嵌入式 C 入门及渐进 18 -- 字符数字转整形函数 atoi 介绍】
请阅读【嵌入式开发学习必备专栏 】 文章目录 字符数字转整形函数 atoiatoi 简单实现 字符数字转整形函数 atoi 在 C 语言中,main 函数能够接收命令行参数。这些参数通过两个参数传递给 main 函数:int argc 和 char *argv[]。argc 是命令行参数的数量&a…...
全国超市数据可视化仪表板制作
全国超市消费数据展示 指定 Top几 客户销费数据展示 指定 Top几 省份销费数据展示 省份销售额数据分析 完整结果...
react native 总结
react app.js 相当与vue app.vue import React from react; import ./App.css; import ReactRoute from ./router import {HashRouter as Router,Link} from react-router-dom class App extends React.Component {constructor(props){super(props)}render(){return ( <…...
什么是自然语言处理(NLP)?自然语言处理(NLP)的概述
什么是自然语言处理? 自然语言处理(NLP)是人工智能(AI)和计算语言学领域的一个分支,它致力于使计算机能够理解、解释和生成人类语言。随着技术的发展,NLP已经从简单的模式匹配发展到了能够理解…...
共享旅游卡怎么使用?共享旅游卡的奥秘与魅力,解锁高效旅行的新方式
在共享经济的浪潮下,共享旅游卡逐渐崭露头角,成为众多旅行爱好者青睐的出行选择。如何有效利用这类卡片,使之成为节省成本、丰富旅行体验的利器呢? 本文将深入解析共享旅游卡的内涵、获取途径、使用要点,以及如何根据…...
使用yolov9来实现人体姿态识别估计(定位图像或视频中人体的关键部位)教程+代码
yolov9人体姿态识别: 相较于之前的YOLO版本,YOLOv9可能会进一步提升处理速度和精度,特别是在姿态估计场景中,通过改进网络结构、利用更高效的特征提取器以及优化损失函数等手段来提升对复杂人体姿态变化的捕捉能力。由于YOLOv9的…...
「14」四个步骤,让你在直播间轻松演义你的教案……
「14」窗口采集捕获指定程序的窗口画面 在 OBS 软件中,窗口采集功能可以用于捕捉特定应用程序或窗口的屏幕内容,以显示在直播窗口中,如PPT、思维导图、Word、Excel、AI、PS、腾讯会议、IPAD、手机画面等等显示窗口。 窗口采集在使用 OBS 直播…...
分解质因子
分解质因子 题目描述 将一个正整数分解质因数,例如,输入90,输出2 3 3 5。 输入 输入一个正整数n(2<n<2000)。 输出 从小到大输出n的所有质因子,每两个数之间空一格。 样例输入 20样例输出 2…...
iOS18系统中,苹果可能不再使用Siri,转用Gemini
生成式人工智能(Generative AI)是苹果公司近两年来默默投资的强大人工智能工具。 坊间流有多种传闻,官方最近终于曝光结果:苹果和谷歌正在谈判将 Gemini AI 引入 iPhone,预计将于今年在所有 iOS 18 设备上推出。 到目前…...
python笔记进阶--模块、文件及IO操作(1)
目录 一.模块 1.模块的导入和使用 1.1导入整个模块 1.2导入函数 1.3使用as给模块指定别名 2.常见标准库 2.1 import random: 2.2 import math: 2.3正则表达式处理 2.4turtle 二.文件及IO操作 1.文件 1.1绝对路径与相…...
单元测试框架 Junit
目录 什么是Junit? Junit的基础注解有哪些? 什么是参数化?参数化通过哪几种方式传输数据? 单参数 多参数 CSV文件获取参数 方法获取参数 测试用例执行顺序如何控制? 什么是断言assert?Assertions类…...
VMPDump终极指南:如何轻松破解VMProtect 3.X x64代码保护
VMPDump终极指南:如何轻松破解VMProtect 3.X x64代码保护 【免费下载链接】vmpdump A dynamic VMP dumper and import fixer, powered by VTIL. 项目地址: https://gitcode.com/gh_mirrors/vm/vmpdump 你是否曾面对被VMProtect保护的软件感到束手无策&#x…...
终极Limbus Company自动化助手:AhabAssistantLimbusCompany完整使用指南
终极Limbus Company自动化助手:AhabAssistantLimbusCompany完整使用指南 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mirrors/ah…...
Vue+ElementUI构建蘑菇博客管理后台:前端架构与最佳实践
VueElementUI构建蘑菇博客管理后台:前端架构与最佳实践 【免费下载链接】mogu_blog_v2 蘑菇博客(MoguBlog),一个基于微服务架构的前后端分离博客系统。Web端使用Vue Element , 移动端使用uniapp和ColorUI。后端使用Spring cloud Spring boot mybatis-…...
一个真实网工的一天
很多人对网络工程师的印象,还停留在“敲命令、配交换机、修Wi-Fi”。 但真正干过这行的人都知道,网络工程师这个职业,有时候像消防员,有时候像急诊医生。平时看起来风平浪静,一旦出问题,电话、消息、会议能在5分钟内同时炸开。 有人天天996,也有人慢慢开始“只做分内事…...
PSLab Desktop性能优化:提升仪器响应速度与数据精度的终极指南
PSLab Desktop性能优化:提升仪器响应速度与数据精度的终极指南 【免费下载链接】pslab-desktop PSLab Desktop Application https://pslab.io 项目地址: https://gitcode.com/gh_mirrors/ps/pslab-desktop PSLab Desktop是一款强大的开源硬件实验平台应用程序…...
情感演绎有多强?顶伯实测愤怒、喜悦、悲伤等 9 种语气
🎭 微软 TTS 的情感演绎有多强?顶伯实测愤怒、喜悦、悲伤等 9 种语气🎯 引言:语音合成的情感革命在人工智能语音合成领域,情感表达一直是技术难点。微软 TTS(文本转语音)通过深度学习模型&#…...
告别明文传输!手把手教你用JS+国密SM2加密登录密码(附C#/Java后端解密代码)
国密SM2算法实战:从JS前端加密到C#/Java后端解密的完整指南 在当今数字化时代,Web应用安全已成为开发者不可忽视的重要课题。每次登录、每次数据传输都可能成为潜在的安全漏洞,特别是当敏感信息如用户密码以明文形式在网络中传输时。作为开发…...
罗技鼠标宏:绝地求生后坐力控制全攻略
罗技鼠标宏:绝地求生后坐力控制全攻略 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 想要在《绝地求生》中实现精准压枪,…...
3大突破:无需Steam轻松玩转创意工坊模组下载
3大突破:无需Steam轻松玩转创意工坊模组下载 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾为无法访问Steam创意工坊而烦恼?在Epic平台购买了心…...
技术从业者的简历优化:如何写出让HR眼前一亮的简历
一、精准匹配:用关键词敲开面试大门在HR筛选简历的“黄金30秒”里,关键词匹配度是第一门槛。对于软件测试从业者来说,精准对接岗位JD(职位描述)中的核心关键词,是让简历脱颖而出的第一步。首先,…...
