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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Retrieval-Augmented Generation for Large Language Models: A Survey》 AI 解读

论文链接:Retrieval-Augmented Generation for Large Language Models: A Survey 论文标题:《Retrieval-Augmented Generation for Large Language Models: A Survey》 一译中文版地址: https://yiyibooks.cn/arxiv/2312.10997v5/index.htm…

【LeetCode】热题100 刷题笔记

T1 两数之和 题目 链接: https://leetcode.cn/problems/two-sum/submissions/517876748/?envTypestudy-plan-v2&envIdtop-100-liked 【刷题感悟】这道题用两层for循环也能做出来,但我们还是要挑战一下时间复杂度小于 O ( n 2 ) O(n^2) O(n2)的解…

麒麟系统安装GDAL

一. 配置环境 最新版容易出问题,日常使用的话,gdal3.3.3就可以了。如果你需要最新版的,可能要去别的地方找找了。 1. gdal-3.3.3 https://github.com/OSGeo/gdal/releases/download/v3.3.3/gdal-3.3.3.tar.gz 2. proj-6.2.1 https://downl…

智慧校园管理系统

一、项目介绍 1.1 项目简介 智慧校园管理系统:主要是以年级、班级为单位,进行老师和学生信息记录和统计功能。项目采用前后端分离架构思想,前端采用HTMLCSSVUE来实现页面效果展示,后端采用SpringBootMybatisPlus框架实现数据存储…

数据库----数据类型正确选择

mysql支持的数据类型: 数值型,如INT,BIGINT,FLOAT和decimal 日期和时间类型,如DATE,TIME和TIMESTAMP等 字符串类型,如VARCHAR,CHAR和BLOB 空间数据类型,如GEOMETRY,POINT和POLYGON J…

【Java笔记】实现延时队列2:Redis

文章目录 过期监听准备工作稍微复习下Jedis与JedisPool 模拟延时队列优缺点**优点**:**缺点**: ZSet 实现延时队列引入依赖模拟延时队列优缺点**优点**(跟过期监听一样):**缺点**: Reference Redis实现延时…

2024.2.6力扣每日一题——魔塔游戏

2024.2.6 题目来源我的题解方法一 贪心优先队列 题目来源 力扣每日一题;题序:LCP 30 我的题解 方法一 贪心优先队列 思路:使用贪心的思想,从左到右遍历,若遇到加上当前房间的生命值后小于等于0,由于需要…

论文阅读: Visual Attention Network

Motivation 自注意力机制在2D自然图像领域面临3个挑战: 视二维图像为一维序列。对于高分辨率图像,二次复杂度消耗太大。只捕捉空间适应性,忽略通道适应性。 Contribution 设计了 Large Kernel attention(LKA),包含卷积和自注意…

第三题:分数

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 1/11/21/41/8⋯ 每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。 类似:3/2​,当然&…

虚拟机Linux(centos)安装python3.8(超详细)

一、Python下载 下载地址:https://www.python.org/downloads/source/ 输入下面网址即可直接下载: python3.8:https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz python3.6:https://www.python.org/ftp/python/3.6.5/…

复习中心极限定理

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 中心极限定理的核心概念: 中心极限定理(Central Limit Theorem)是统计学中的核心理论,指出当独立随机变量的样本量足够多时,它们的平均值将逐…

【现代企业管理】企业组织结构和组织文化的理论与实践——以华为为例

一、前言 管理是科学和艺术的统一体,它是企业成长的保证。企业管理中,管理者面对的往往不是一个完整的系统,而是各种不具有整体规律性的零碎信息的总和,因此进行信息的整合和研究是管理的重点和关键。 组织管理作为管理的四大职…

SpringBoot常见注解有哪些

Spring Boot的核心注解是SpringBootApplication , 他由几个注解组成 : ● SpringBootConfiguration: 组合了- Configuration注解,实现配置文件的功能; ● EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自…

【计算机网络】四层负载均衡和七层负载均衡

前言 1、分层方式 首先我们知道,在计算机网络中,常用的协议分层方式:OSI和TCP/IP,以及实际生产中使用的协议划分方式。 在OSI中,各层的职责如下: 应用层:对软件提供接口以使程序能使用网络服…

03-MySQl数据库的-用户管理

一、创建新用户 mysql> create user xjzw10.0.0.% identified by 1; Query OK, 0 rows affected (0.01 sec) 二、查看当前数据库正在登录的用户 mysql> select user(); ---------------- | user() | ---------------- | rootlocalhost | ---------------- 1 row …

新闻管理系统(源码+文档)

新闻管理系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端新闻详情新闻首页分类退出登录个人中心拨打客服热线注册界面个人资料新闻评论成功 管理端用户管理分类管理新闻管理 文件包含内容 1、搭建视频 2、流程图 3、开…

完成一个程序,谈谈Rust写多线程并行算法的体会

退休了,重操旧业,我计划重写《极限切割》这款排料软件,重中之重就是重写排料算法。因为计划把算法做成云服务形式,所以开发工具就选择 Rust 了。先说结论,Rust 写后台服务程序的确好用,免去很多可能的Bug&a…

v3-admin-vite 改造自动路由,view页面自解释Meta

需求 v3-admin-vite是一款不错的后端管理模板,主要是pany一直都在维护,最近将后台管理也进行了升级,顺便完成一直没时间解决的小痛痒: 在不使用后端动态管理的情况下。我不希望单独维护一份路由定义,我希望页面是自解…

计算机网络—VLAN 间路由配置

目录 1.拓扑图 2.实验环境准备 3.为 R3 配置 IP 地址 4.创建 VLAN 5.配置 R2 上的子接口实现 VLAN 间路由 6.配置文件 1.拓扑图 2.实验环境准备 配置R1、R3和S1的设备名称,并按照拓扑图配置R1的G0/0/1接口的IP地址。 [Huawei]sysname R1 [R1]interface Giga…

JVM面试题(三)

1. 举几个可能发生内存泄漏的情况? 内存泄漏可能发生在多种情况下,以下是一些常见的例子: 类的构造函数和析构函数不匹配:当创建对象时,通过new动态分配了内存,但在对象销毁时,却没有通过dele…