开源博客项目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)数据类定义。

参考文献:
[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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 20:28:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 20:28:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 20:28:05       82 阅读
  4. Python语言-面向对象

    2024-03-31 20:28:05       91 阅读

热门阅读

  1. map net收集

    2024-03-31 20:28:05       34 阅读
  2. MongoDB聚合运算符:$literal

    2024-03-31 20:28:05       32 阅读
  3. Qt之创建向导用户界面QWizard

    2024-03-31 20:28:05       40 阅读
  4. ubuntu22.04安装Fcitx5的步骤

    2024-03-31 20:28:05       33 阅读
  5. python中的re库 ,正则表达式模块

    2024-03-31 20:28:05       36 阅读
  6. 3.30蓝桥杯备赛写题心得

    2024-03-31 20:28:05       36 阅读
  7. vue知识点: v-if和v-for为何不能同时使用?

    2024-03-31 20:28:05       31 阅读
  8. Ansible

    Ansible

    2024-03-31 20:28:05      29 阅读
  9. Spark GraphX 算法实例

    2024-03-31 20:28:05       38 阅读