壹佰文章最全总结| 《关于ASP.NETCore的分享之路》
学习路线图
(关于学习ASP.NET Core需要了解和掌握的知识点图)
一言不合就来图,各位博客园小伙伴大家好,感觉好久没有写文章了,自从春节开始,中间经历种种,慢慢的就开始微信公众号发文了,原因有很多,不做说明,不好的地方就是不知道目录链接,所以还是发到博客园吧。
请注意:我不是做框架的,BCVP只是作为案例来配合文章视频,掌握了技术才是关键。
为什么要突然写这篇了呢,是因为这一年我又写了一些文章和几个视频,但是因为比较杂乱无章,很多人都找不到自己想要看的资料,一直向我反馈很多次了,时不时的在QQ群里问相关的知识点,或者一直在百度,毕竟我已经总结过了,要是百度未免有些浪费时间,所以就打算总结出来,这样方便大家查找,也方便我分享指导,更是自我的一个总结吧。你可能会问,那你之前为啥不总结,因为我现在基本已经该讲的都讲完了,毕竟已经快到K8s,所以总体的总结一下,情有可原吧。
上边这个路线图呢,我个人认为没必要都学会,一半足矣,当然会的越多肯定越好,只不过精力不足的情况下,还是要打基础,然后看服务,最后写业务,这是我的总结的。好啦,下边就开始总结吧,文章采用list列表的形式,会对每篇文章/视频简要描述,这样你一看就大概知道这是讲啥的了。
这是我这两年讲解的知识点大纲导图:
(在线思维导图工具:mindmeister,内容持续更新中...)
ASP.NET CORE学习指南
PS:
1、下文说的知识点基本都是netcore3.1版本的,特别标注为(视频)的,是视频教程,其他的皆是文章教程
2、点击每一个小标题即可到达目的链接。
3、官网永远是最好的老师: https://docs.microsoft.com/zh-cn/dotnet/core
4、一共73篇ASP.NetCore基础知识+19篇Ids4内容+23篇DDD = 115(篇/个 视频和文章)
《基础知识掌握部分》
A.1、后端WebApi项目初探搭建
本文主要是讲解了我们如何创建一个ASP.NETCore项目,并对其中的初始的几个重要文件和Class类文件做了简单的讲解和梳理,看完之后,可以动手创建一个初始化项目。
A.2、ASP.NET Core框架基础(视频)
本视频从为什么学习ASP.NETCore入手,讲解了其发展历史、相应的执行过程、以及如何命令行创建项目。
A.3、运行原理解析(视频)
本视频简单分析了ASP.NETCore的运行原理、重要文件的分析、如何下载查看源码、Host项目启动过程分析。
A.4、进程内和进程外讨论(视频)
视频重点分析了,NetCore和.NetFwk之间的区别和联系,是如何运行起来的,进程内和进程外的含义。
A.5、NetCore编译和运行时过程(视频)
通过直播的形式,分析了ASP.NETCore是如何编译的,也说明了运行时执行的过程是怎样的,有助于理解项目启动。
B.1、Swagger接口文档的使用
文章讲解了如何在ASP.NETCore Webapi项目中,引入接口文档swagger,并自定义index.html首页。
B.2、Swagger代码拷贝(视频)
视频版讲解如何从blog.core项目中,把Swagger组件部分的代码拷贝出来。
B.3、Swagger如何配合使用API多版本
自写方案,比较简单,比较low,可以借鉴和参考,如何配置swagger,使用api版本控制
C.1、JWT认证授权过程
文章分析了JWT令牌的由来和组成部分,自定义认证中间件和官方认证中间件(推荐使用)来讲解如何认证token有效性,如何在Swagger中开启小锁,以及其他比如Claim声明等小知识点。
C.2、JWT原理详解(视频版,NetCore2.2版本)
视频讲解API保护的几种方案、JWT的核心知识、如何使用JWT,令牌是如何存到HTTPContext中,如何解析Claim、使用的好处等
C.3、简单角色授权(视频)
通过直播的形式,手写代码,如何基于角色的简单授权,生成令牌(3+2),认证过程演示等。
C.4、授权和上下文的关系(视频)
通过直播,讲解授权是如何让JWT令牌这个字符串,变成系统的HttpContext内存中的。
C.5、权限认证流程解析,7个表,实现数据库复杂策略鉴权
本文讲解最简单的一种授权认证方案,将接口、菜单、角色、用户四个模板给结合在一起,实现基于数据库接宝的复杂策略授权。
C.6、JWT滑动刷新
通过一个很简单的小技巧,将JWT失效后,如何做到前端无感刷新的案例,有一定的参考意义。
C.7、基于数据库的复杂策略授权(视频)
通过直播的形式,分析了BlogCore项目中,是如何实现JWT 基于数据库 复杂的认证策略授权的。
C.8、如何从HttpContext中获取用户信息(视频)
上边我们说了token是如何转成HttpContext内存中的,那这篇讲的是,如何从内存中,把用户信息取出来,实现闭环。
D.1、什么是仓储模式
说白了,很像之前的三层架构的数据访问层,只不过是想把这个仓储的概念说出来,让大家先了解,为DDD打基础。
D.2、泛型基类仓储的使用
用了泛型基类,可以省去每个仓储和服务文件,都写CURD等基础操作了。
D.3、用泛型仓储做服务注入
通过泛型仓储的形式,可以省去多余不必需要的空仓储子文件,同时也去掉仓储接口层,如果仓储层。
E.1、依赖注入与IOC
大篇幅讲解依赖注入的由来、好处、使用方法、三种声明周期注册方式、容器化管理含义、Autofac组件使用、批量服务注册,无接口注册等。
E.2、原生依赖注入一对多
简单的实现一个接口,多个实现的注入方案。
E.3、依赖注入原理解析(视频)
视频的形式,深入分析控制反转的由来、为什么使用、注入的步骤、三种注册方法、三种注入方法、Autofac组件使用、查看是否注入成功等;
E.4、三个生命周期注册纠结说明(视频)
是针对上一个视频的补充说明。
E.5、Autofac组件使用(视频)
讲解如何从blogcore项目中,把依赖注入Autofac组件的代码给copy出来,自己使用。
E.6、依赖注入直播(视频)
通过直播的形式,手敲代码,也是使用Autofac组件来实现。
F.1、AOP切面编程初探
通过两个案例:AOP缓存和AOP日志,来配合讲解切面编程的原理。
F.2、AOP结合Redis实现切面缓存
切面编程的第三个案例:Redis缓存。
F.3、AOP切面编程原理分析(视频)
视频的形式,分析什么是AOP、面向过程/面向对象/面向切面/面向服务之间的发展历程和关系、切面编程的优势、使用场景等。
F.4、AOP原理—动态代理(视频)
以直播的形式,分享AOP的核心思想:动态代理是如何将目标类做代理服务的。
G.1、DTOs数据传输对象
第一次将视图模型、对象传输引出讨论,并介绍如何将对象进行合理化映射,以及最后的Automapper的使用。
G.2、Dto与多模型(视频)
通过视频的讲解,进一步讨论为什么项目中需要用到多个模型,已经模型之间的传输和体现形式。
G.3、Automapper对象映射(视频)
将Blog.Core中对应的Automapper组件的使用的内容抽离出来,更好的方便对组件的学习。
H.1、基于Log4net的全局异常日志
文章主要包含两个部分,第一个是全局异常处理,第二个就是集成日志,这里使用的是Log4net,目前这个日志方案和我blogcore的不一样,我还在修改中,备注。
H.2、Log4Net日志处理(视频)
视频是将Blog.Core中对应的Log4net组件的部分内容给抽离出来,可以针对性学习,这里的代码是最终正式且正确的。
H.3、日志_Serilog(视频)
通过直播的形式,一步步给大家讲解如何在Asp.NetCore中使用Serilog组件。
I.1、配置IConfiguration(视频)
视频讲解如何在Blog.Core中来使用配置,并对Appconfig.cs类抽离出来,有一定的参考价值。
I.2、变量与配置(视频)
也是一期视频,分析了下平时开发的时候是如何使用配置的,主要列举了常见的几种方案。
J.1、跨域与代理,3.0正式版
本文主要是下边两篇文章的总结篇,而且是基于netcore3.0的,可以只看本文即可,当然可以看下边两篇,讲解了四种平时开发中必须用到的方案和技术,JSONP、CORS、devProxy、Nginx。
J.2、三种跨域比较
比较原始的3种开发方案,主要是在.Net Fwk中使用的,分别是JsonP,请求头,CORS。
J.3、另外两种方案实现跨域
在上边的基础上,讲解了vue项目中用到的本地devProxy代理模式,和部署到线上后的nginx反向代理,来实现跨域。
J.4、跨域原理详解(视频)
视频不仅讲解了下跨域的原理,还列举了常见开发的六种跨域方案,比较详细,值得观看。
J.5、CORS跨域与钓鱼(视频)
将Blog.Core项目中关于CORS跨域的那部分代码给抽离出来,更方便在新的项目中使用。
K.1、Ip限流(视频)
也是把Blog.Core中的代码抽离讲解,起到一定的限流的作用,有一定的借鉴,使用组件AspNetCoreRateLimit
L.1、基于AOP实现接口性能分析
将AOP、SqlSugar的Sql输出、Miniprefiler三个组件相结合,实现AOP切面的接口性能分析,并在swagger中输出sql日志等多个日志。
L.2、性能监控分析MiniProfiler(视频)
通过视频的方式,将Blog.Core中,关于性能监控的部分抽离出来,也同时讲解了如何自定义Swagger首页问题。
《部署与组件学习部分》
M.1、最全的部署方案和错误分析
本文比较全面的讲解了,如何在windows、CentOs、Ubuntu等系统上部署前后端分离项目,也讲解了如何使用IIS和Nginx等代理服务器,最后也列举了前后端部署的时候比较常见的错误案例和解决办法,从404到503。
M.2、在线项目全部迁移到Linux
作为开源的六个在线项目,个人表示还是有点儿借鉴意义的,目前都已经迁移到了Linux服务器,文章列举了方案和方法,也有对问题的解决方案。
M.3、在Windows上部署Aspnetcore(视频)
以视频的形式,讲解了ASP.NETCore项目在win系统上的多种部署方案,独立部署,框架依赖部署等等,如何选择合理的服务器,如何安装指定的依赖环境,以及可能在部署中遇到了常见问题,比如缺少文件,环境错误,跨域问题等。
M.4、在Linux上部署Aspnetcore(视频)
和上边的讲解内容一样,只不过是在CentOS系统上讲解。
M.5、在Azure上部署Aspnetcore(视频)
内容同上,通过三个小视频,讲解第一次如何注册和使用Azure,以及如何部署。
M.6、BlogCore在IIS中的三种部署方案(视频)
和上边的内容不太一样,本视频主要用BCVP的三端项目作为案例,讲解前后端是如何在IIS中部署的,比如新建虚拟目录还是静态文件等等。
M.7、Nginx+Git的形式部署BlogCore(视频)
前边几种都是在本地publish发布好后,上传到服务器再部署,本视频是通过git的形式,将源代码clone到服务器,实现手动版的快速部署。
M.8、BlogCore前后端部署Linux(视频)
用BCVP前后端项目,部署在Linux,可能和上边的视频有重复。
N.1、Redis的异步开发
使用的组件是微软官方推荐的StackExchange.Redis,然后用异步方式可以解决一些问题。
N.2、StackEx.Redis的安装与使用(视频)
通过视频的形式,基于BlogCore来讲解和分析如何使用Redis。
N.3、基于Redis的消息队列概要
很简单的实现MQ,支持一个发布多种订阅。
O.1、集成任务调度Quart.Net
参考作者@Kawhi,来设计的一个基于Quart.Net的任务调度中心。
O.2、任务调度的使用(视频)
主要讲解BlogCore中是如何使用的,并把该部分代码给抽离出来,方便独立学习。
P.1、基于SignalR实时通信实现日志推送
本文基于NetCore项目,结合SignalR,将后端项目五种日志实时推送到Vue的Admin项目,比如异常日志,操作访问日志,sql日志等等。
P.2、SignalR通讯初体验(视频)
采用视频的形式,从新写Demo代码,用js来讲解。
P.3、SignalR指定用户组发消息(视频)
上边的是对全部人发消息,本视频是针对指定的用户群体,用户组Group发消息。
P.4、SignalR通过JWT实现用户间通讯(视频)
本视频继续深入,通过令牌的方式,识别指定的某个用户,并实现相互之间的通讯。
Q.1、xUnit测试——单元测试(视频)
借鉴eShopOnContainer架构,用计算器的小方法入手,讲解TDD是如何实现快速敏捷开发的,对理解单元测试有一定的帮助。
Q.2、xUnit测试——功能集成测试(视频)
在上边单元测试的基础上,进一步说明功能测试,如何实现项目某个功能模块是否成功。
《容器化与跨平台部分》
R.1、使用Docker部署Asp.NetCore应用
文章用BlogCore作为真是案例,在CentOS系统上安装Docker,并部署相应的应用,注意在安装的过程中,尽量先安装Docker,再安装SDK,如果先安装SDK,可能会出现仓储的异常更新问题,解决方案是,删除了,再安装,然后再添加仓储源文件。
R.2、在Docker中配置ASP.NETCore的HTTPS模式
内容很简单,就是对Docker中的Aspnetcore应用,配置Https的安全模式,需要证书。
R.3、Dcoker容器化操作(视频)
通过视频的形式,讲解如何在Linux系统上,安装Docker,并部署项目。
R.4、Docker端口映射解析(视频)
讲解我们在使用Docker的时候,如何在ASP.NETCore项目中,配置端口,并合理的Expose端口,才能实现监听和代理。
R.5、Docker部署Vue应用(视频)
除了可以构建后端应用,同样可以将前端项目,比如vue,来构建镜像,并生成运行容器。
R.6、Docker -v挂载配置文件到宿主机(视频)
挂载是Docker应用中,很重要的一个技术,也是必须要学会的技能,合理使用挂载,对于容器的安全性,健壮性都很有帮助。
S.1、CICD,使用Docker安装Jenkins
之前都是习惯了全家桶似的安装Jenkins,当然如果公司想要更强大的功能可以一点点安装,如果项目比较中等,用docker安装就行了。
S.2、使用Jenkins发布和代理ASP.NETCore项目
上文已经安装好后,可以部署core项目了,只不过会有问题,比如不能在Jenkins容器内使用dotnet命令,所以需要一个新的jenkin镜像,我已经封装好了,可以直接使用。
S.3、Jenkins的安装与使用(视频)
通过视频的形式,给大家展示了使用一个空的全新的CentOS系统,一一说明如何安装docker,如何安装Jenkins,并如何配置core项目,并代理和反向代理等。
T.1、IdentityServer4系列教程(10篇文章)
因为Ids4的变动比较少,所以还是延续之前的目录即可,还是比较工整的,一共文章十篇,这里就不过多的介绍了,从基础知识,到表结构迁移,数据持久化,三端联调,统一角色管理,安全加锁等等多个方面讲解了如何使用IdentityServer4项目。
T.2、Ids4学习视频教程(9节视频)
通过视频的形式,更加深入的讲解了我们开发ids4认证平台的时候,需要掌握的核心知识点。
U.1、DDD视频与文章(23个)
一共73篇ASP.NetCore基础知识+19篇Ids4内容+23篇DDD = 115(篇/个 视频和文章)
未完待续。。。
Come On。
壹佰文章最全总结| 《关于ASP.NETCore的分享之路》的更多相关文章
- ASP.NETCore的Kestrel服务器
什么是Kestrel服务器 Kestrel是开源的(GitHub提供的源代码),事件驱动的异步I / O服务器,用于在任何平台上托管ASP.NET应用程序.这是一个监听服务器和一个命令行界面.您将侦听 ...
- Asp.NetCore源码学习[2-1]:配置[Configuration]
Asp.NetCore源码学习[2-1]:配置[Configuration] 在Asp. NetCore中,配置系统支持不同的配置源(文件.环境变量等),虽然有多种的配置源,但是最终提供给系统使用的只 ...
- 极简实用的Asp.NetCore框架再新增商城模块
概述 关于这个框架的背景,在前面我已经交代过了.不清楚的可以查看这个链接 1.极简实用的Asp.NetCore模块化框架决定免费开源了 2.极简实用的Asp.NetCore模块化框架新增CMS模块 算 ...
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
本人博客已转移至:http://www.exblr.com/liam 为什么需要依赖注入 在[ASP.NET MVC 小牛之路]系列的理解MVC模式文章中,我们提到MVC的一个重要特征是关注点分离( ...
- [ASP.NET MVC 小牛之路]05 - 使用 Ninject
在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来 ...
- [ASP.NET MVC 小牛之路]06 - 使用 Entity Framework
在家闲着也是闲着,继续写我的[ASP.NET MVC 小牛之路]系列吧.在该系列的上一篇博文中,在显示书本信息列表的时候,我们是在程序代码中手工造的数据.本文将演示如何在ASP.NET MVC中使用E ...
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...
- [ASP.NET MVC 小牛之路]13 - Helper Method
我们平时编程写一些辅助类的时候习惯用“XxxHelper”来命名.同样,在 MVC 中用于生成 Html 元素的辅助类是 System.Web.Mvc 命名空间下的 HtmlHelper,习惯上我们把 ...
- [ASP.NET MVC 小牛之路]15 - Model Binding
Model Binding(模型绑定)是 MVC 框架根据 HTTP 请求数据创建 .NET 对象的一个过程.我们之前所有示例中传递给 Action 方法参数的对象都是在 Model Binding ...
随机推荐
- list、set、map的区别和联系
结构特点 List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合: List中存储的数据是有顺序的,并且值允许重复:Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许 ...
- Java基础一篇过(六)Java8--lambda表达式
一.简介 lambda表达式是Java8的一个重要特性,也可以称为闭包,常用于配合Java8的Stream对集合元素进行操作,使得代码更简介紧凑. 二.代码解析 虽说lambda表达式是一个新的特性, ...
- dubbo学习(十)spring boot整合dubbo
工程搭建与配置 生产者 1.创建一个生产者的spring boot工程,配置好依赖,并把接口实现类文件夹复制到新的工程里 2.pom.xml配置dubbo的相关依赖 <!-- Dubbo Spr ...
- shiro-重写标签功能----shiro:hasPermission 标签重写
public abstract class ShiroAuthorizingRealm extends AuthorizingRealm{ private static final String OR ...
- 刷题[De1CTF 2019]SSRF Me
前置知识 本题框架是flask框架,正好python面向对象和flask框架没怎么学,借着这个好好学一下 这里我直接听mooc上北京大学陈斌老师的内容,因为讲的比较清楚,直接把他的ppt拿过来,看看就 ...
- mysql load_file()
本地mysql注入读取配置文件 遇到的问题 简单记录一下. 本地测试时,读取文件发现无论怎样都返回为NULL. >> select load_file('c:/xx/xx/xx/x.txt ...
- C语言专项错题集
2020-08-10 记录 #1 1 struct student{ 2 int num; 3 int age; 4 }; 5 struct student stu[3]={{6001,20},{60 ...
- 【Processing-日常1】小圆碰撞
之前在CSDN上发表过: https://blog.csdn.net/fddxsyf123/article/details/79741637
- 关于struts1与struts2
1.Action方面 Action是整个Struts框架的核心内容,Struts1.x与Struts2的Action模型很大的区别.Struts2是一个 pull-MVC架构 ,从开发者角度看,就是说 ...
- java 判断jsonObject 对象为null的天坑问题
jsonObject = {"mmbRetrieveBookingResponse":{"bookingData":null,"isAfterTran ...