开源博客项目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

相关推荐
创可贴治愈心灵9 分钟前
WPF中UI线程频繁操作造成卡顿的处理
ui·c#·wpf
格林威5 小时前
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型和EasyOCR实现汽车牌照动态检测和识别(C#代码,UI界面版)
人工智能·深度学习·数码相机·yolo·c#·汽车·视觉检测
Aczone285 小时前
Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字
linux·网络·网络协议·tcp/ip·http·c#
chenglin0167 小时前
C#_接口设计:角色与契约的分离
java·前端·c#
谷宇.20 小时前
【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧握武器
游戏·unity·c#·unity3d·游戏开发·游戏编程·steam
用户8356290780511 天前
C# 从 PDF 提取图片教程
后端·c#
格林威1 天前
Baumer高防护相机如何通过YoloV8深度学习模型实现网球运动员和网球速度的检测分析(C#代码UI界面版)
人工智能·深度学习·数码相机·yolo·ui·c#·视觉检测
hixiong1231 天前
用OpencvSharp编写视频录制工具
opencv·c#·音视频
张飞洪1 天前
C# 13 与 .NET 9 跨平台开发实战:基于.NET 9 与 EF Core 9 的现代网站与服务开发
开发语言·c#·.net