开源博客项目Blog .NET Core源码学习(13:App.Hosting项目结构分析-1)

  开源博客项目Blog的App.Hosting项目为MVC架构的,主要定义或保存博客网站前台内容显示页面及后台数据管理页面相关的控制器类、页面、js/css/images文件,页面使用基于layui的Razor页面(最早学习本项目就是想学习layui的用法,不过最新版本中前台页面换成了Vue3),同时定义项目所需的特性类、中间件等。
  App.Hosting项目依赖App.Application项目,同时其安装的Nuget包不多,仅包括Microsoft.AspNetCore.Mvc.Newtonsoft、Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation、Microsoft.VisualStudio.Azure.Containers.Tools.Targets
  App.Core项目的顶层文件夹如下图所示,下面逐一概述其大致用途。

  Program.cs。项目的初始启动文件,初始化自动注入、数据库配置、数据映射、数据验证、数据缓存、Session设置、Cookie设置、中间件、路由等方面的设置。
  log4net.config。日志记录模块log4net的配置文件,配置记录日志的层级、格式、输出位置等信息。
  appsettings.json。项目配置文件,配置数据库连接信息、缓存设置等信息。
  wwwroot文件夹。保存前后台页面所需的css、js、图片等文件,其结构如下图所示,layui相关的文件即保存在其中的js文件夹中。

  Areas文件夹。其下级结构如下所示,保存的是博客项目的后台数据管理(博客管理、用户管理、角色及权限管理等模块)相关的控制器类及页面,后续会逐一学习并记录各个模块的页面及后台控制器类的具体用法,本文中不再详细介绍。

  Controllers及Views文件夹。保存前台页面(网站首页、文章专栏、资源分享、点点滴滴、关于本站)相关的控制器类及页面,后续会逐一学习并记录的前台页面及后台控制器类的具体用法,本文中不再详细介绍。
  Middleware文件夹。保存异常处理中间件ExceptionHandlerMiddleware,该类尝试调用管道中的下一个代理或中间件,失败的话则记录日志,返回异常JSON或直接调转到错误页;
  Extensions文件夹。其中的ApplicationBuilderExtensions类定义函数在项目启动时注册异常处理中间件,而HttpContextExtensions类则定义扩展函数支持从请求数据中获取Session数据、设置用户登录/登出信息等操作。
  Filters文件夹 。其下级结构如下图所示,其中:
  WebController类为前台页面对应的控制器类的抽象基类,提供统一的对象实例序列化为Json的操作函数;
  AdminController为博客项目的后台数据管理相关模块的控制器类的抽象基类,定义了相关的页面处理及错误处理函数;
  AuthorizationAttribute类和AllowAccessAttribute类用于检验用户登录和权限验证,主要用于后台数据管理相关模块的控制器类函数的权限控制,如果函数没有设置AllowAccess特性,则需按AuthorizationAttribute类中的权限验证规则进行权限验证,通过验证才能访问对应函数。

  Models文件夹。保存前台"点点滴滴"页面显示数据所需的时间轴(TimeLineDto)和事件(LineItem)数据类定义。

参考文献:

1https://gitee.com/miss_you/Blog

2https://www.donet5.com/Home/Doc

3https://github.com/MapsterMapper/Mapster

4https://github.com/rivenfx/Mapster-docs

相关推荐
ceclar12316 分钟前
C#字节流与字符流
算法·c#·.net
z落落11 小时前
C#WinForm 窗体切换与窗体传值(登录跳转案例)+WinForm 窗体传值(从上往下传、从下往上传)
开发语言·windows·c#
ytttr87314 小时前
C# 定时数据库备份工具
开发语言·数据库·c#
雪豹阿伟16 小时前
21.Winfrom —— 定时器、日期选择器、进度条、表格、DataTable
c#·上位机·winfrom
z落落16 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
qq_4221525718 小时前
Word 文件太大怎么压缩?2026 年文档瘦身方案对比
开发语言·c#·word
影寂ldy20 小时前
C# 事件完整学习笔记(发布订阅 + 自定义事件 + 内置 EventHandler)
笔记·学习·c#
kyle~21 小时前
DDS分布式实时系统---自省机制
开发语言·分布式·机器人·c#·接口·ros2
Java面试题总结1 天前
MarkItDown 再次登顶GitHub榜
开发语言·c#·github
xiaoshuaishuai81 天前
C# 定制化Markdown编辑器
开发语言·c#·编辑器