.NET Core 学习资料精选:进阶
.NET 3.0 这个月就要正式发布了,对于前一篇博文《.NET Core 学习资料精选:入门》大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊。
对于还在使用传统.NET
Framework 框架的园友,可以通过《.NET项目迁移到.NET Core操作指南》把需要新生力量的旧项目速度迁移到.NET Core 中
本系列文章,主要分享一些.NET
Core比较优秀的社区资料和微软官方资料。我进行了知识点归类,让大家可以更清晰的学习.NET
Core。
首先感谢资料原作者的贡献。
介绍.NET历史、开源之路、基础、路由、依赖注入、HttpContext、cookie|session、HttpClient、gRPC、单元测试、发布部署等等。
第二篇:.NET Core 学习资料精选:进阶
介绍.NET工程化、AOP、异常处理、缓存、日志、响应优化、上传下载、健康检查、后台任务、认证和授权、安全性(Https、CORS、CSRF)、EF
Core 等等
第三篇:.NET Core 学习资料精选:高级&微服务架构
这是第二篇,知识点如图:
.NET
工程化
#、StyleCop编码规范
netcore将StyleCop.Analyzers自定义规则应用到整个解决方案
#、Nuget包
#、Swagger Api文档
Swagger+AutoRest 生成web api客户端(.Net)
Swashbuckle方式
Asp.Net Core 使用Swagger生成API文档并添加API分组
Asp.Net Core 使用Swagger生成API文档并添加文档描述、响应类型描述
NSwag方式
Asp.Net Core 使用NSwag生成Swagger Api文档
AOP面向切面编程
AOP(Aspect-Oriented
Programming)是一种将函数的辅助性功能与业务逻辑相分离的编程范式(programming
paradigm),其目的是将横切关注点(cross-cutting
concerns)分离出来,使得程序具有更高的模块化特性。
AOP体现原则:单一职责原则 和 开放封闭原则
在ASP.NET Core中可使用三种方式实现AOP:中间件Middleware、过滤器Filter、代码织入(静态织入和动态代理)
#、中间件Middleware
中间件就是嵌入到应用管道中用于处理请求和响应的一段代码,ASP.NET
Core 中使用了大量的中间件。eg:全局异常、路由、响应缓存、响应压缩、身份认证、CORS、日志记录等等
ASP.NET Core Middleware 的实现(Conventional Middleware 和IMiddleware)
ASP.NET Core Middleware 的实现(Run,Map,Use,内置中间件)
#、过滤器Filter
ASP.NET Core MVC Filter的定义、注册和各种Filter执行顺序
#、代码织入
l 编译时静态织入
特点:[编译型]性能高,缺点是缺乏灵活性
实现思想:给语言的编译器做扩展,使得在编译程序的时候编译器将相应的Aspect代码织入到业务代码的指定连接点,输出整合的结果。
l 运行时动态织入(动态代理)
特点:[运行时动态代理]灵活性高,性能相对“静态织入”低
实现方式:将扩展添加到运行虚拟机而不是编译器。Aspect和业务代码分别独立编译,而在运行时由虚拟机在必要时进行织入。
.Net AOP代码织入实现类型及原理(静态、动态、优缺点)
.Net AOP代码织入之《拦截方法》(包含案例:数据事物、多线程)
演示了清晰的业务代码,因为非功能性需求(eg:logging,防御性编程,事务,重试,和异常处理等)导致代码变得冗长、难懂、不易维护。通过使用AOP来让业务代码重新清晰化
异常处理
ASP.NET Core 应用的错误处理[1]:三种呈现错误页面的方式
使用UseStatusCodePages 根据Status选择处理方式(跳转页面)
ASP.NET Core 自定义ErrorHandlingMiddleware 全局异常捕获
缓存
.NET Core MemoryCache 缓存过期策略(绝对、滑动、依赖、过期回调)
ASP.NET Core 使用分布式缓存(redis、sqlserver)
ASP.NET Core 使用RedLock.net 实现分布式锁
日志
[github]ASP.NET Core Microsoft.Extensions.Logging 默认log组件
在ASP.NET Core 中使用Serilog 进行日志记录
.NET Core中使用Exceptionless分布式日志收集框架
响应优化
ASP.NET Core 中使用ResponseCache 响应缓存
上传下载
ASP.NET Core 中的文件上传(IFormFile)、流式处理上传大文件
健康检查
ASP.NET Core 中的运行状况检查(IHealthCheck)
[github]ASP.NET Core HealthChecks(健康检查,异常webhooks通知)
使用案例:
使用ASP.NET Core实现Docker的HealthCheck指令
Kubernetes liveness and readiness probes using HealthChecks
其他特性
#、对象池ObjectPool
#、WebHooks
WebHooks with ASP.NET Core – DropBox and GitHub
后台任务
基础知识
ASP.NET Core 中使用托管服务实现后台任务(后台任务、作用域任务、队列任务)
.NET Core 3.0 创建Windows服务项目(BackgroundService)
特点:不需要Windows服务或单独的进程
ASP.NET Core 中使用Hangfire任务管理(含Dashboard)
Hangfire 授权、自定义路由、只读Dashboard、多数据库源、设置主应用
ASP.NET Core 中使用Hangfire.Redis.StackExchange存储
ASP.NET Core 中Hangfire.Cronos 结合BackgroundService 实现任务调度
使用ASP.NET Core和Hangfire实现HTTP异步化方案
Quartz.Net几种部署模式(IIS、Exe、服务部署【借助TopSelf、服务类】)
ASP.NET Core2.2+Quartz.Net 实现web定时任务
Quartz.NET 配置文件详解(quartz.config 和quartz_jobs.xml)
----quartz.config可以合并到App.config和Web.config中
quartz.net 3.x版本如何通过xml文件进行Job配置
配置Quartz.NET Cluster以及远程管理(CrystalQuartz)
Quartz.NET 可视化Job管理(CrystalQuartz)
认证和授权
#、ASP.NET Core Identity身份认证
命名空间:Microsoft.AspNetCore.Identity
创建完整的ASP.NET Core Identity基架(多图)
ASP.NET Core Identity配置(声明类型、锁定策略、密码策略、登录策略等等)
ASP.NET Core Identity身份验证支持OAuth2第三方验证提供程序
ASP.NET Core Idendity自定义存储提供程序(Azure表存储、Dapper)
#、基于Cookie的身份认证
命名空间:Microsoft.AspNetCore.Authentication.Cookies
ASP.NET Core Cookie身份验证支持OAuth2第三方验证提供程序
#、授权
命名空间:Microsoft.AspNetCore.Authorization
ASP.NET Core web api基于JWT自定义策略授权
#、IdentityServer4 认证授权
[晓晨Master]IdentityServer4 中文文档与实战
安全性
#、CORS
#、CSRF
ASP.NET Core 防止跨站点请求伪造(XSRF/CSRF) 攻击
ASP.NET Core WebAPI 中防御跨站请求伪造攻击(CSRF)
EF
Core
EF Core DbFirst:从数据库生成实体类(反向工程)
EF Core CodeFirst:实体修改后迁移数据库架构
模型配置
EF Core 实体类型、查询类型、数据注解、Fluent API
EF Core 生成跟踪列(eg:CreatedAt,CreatedBy等列)
并发
数据查询
EF Core 关联数据加载策略(预先记载、显示加载、延迟加载)
批量数据操作
[收费]使用Entity Framework Extensions 实现批量增、删、改
[免费]Entity Framework Extensions 提供功能缩减版:EntityFramework-Plus
看完”入门”和”进阶”两篇文章,对.NET Core的常用特性基本是掌握了的。接下来的”高级”篇,会介绍性能、原理、微服务架构、DDD等知识,不过这篇文章会过几个月整理出,中间打算研究一些开源框架,并分享给大家。
==============================================================================
over,谢谢查阅,觉得文章对你有收获,请多帮推荐。欢迎向我提供更好的资料信息。
.NET Core 学习资料精选:进阶的更多相关文章
- .NET Core 学习资料精选:入门
开源跨平台的.NET Core,还没上车的赶紧的,来不及解释了-- 本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料.我进行了知识点归类,让大家可以更清晰的学习.NET Co ...
- TIB自动化测试快讯 - Appium手机自动化测试学习资料精选
TIB自动化测试快讯 - Appium手机自动化测试学习资料精选 Appium+Android+Javahttp://automationqa.com/forum.php?mod=viewthre ...
- .Net Core 学习资料
官方网站:https://www.microsoft.com/net/core#windows 官方文档:https://docs.asp.net/en/latest/intro.html 中 ...
- asp.net core 学习资料整理
net上海俱乐部 白手套大神分享 广州一位大佬总结的系列文章 https://www.cnblogs.com/viter/p/10474091.html 汪宇杰 http://edi.wan ...
- .NET Core资料精选:架构篇
.NET 6.0 马上就要发布,高性能云原生开发框架.希望有更多的小伙伴加入大.NET阵营.这是本系列的第三篇文章:架构篇,喜欢的园友速度学起来啊. 本系列文章,主要分享一些.NET Core比较优秀 ...
- 业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送)
业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送). 超过1024G的IT学习资料免费领取,你值得拥有! 领取资源方式,关注“业余草”公众号,回复对应的关键字 01.回复”我 ...
- 【我的Android进阶之旅】Realm数据库学习资料汇总(持续更新)
介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...
- 我的Android进阶之旅------>RxJava学习资料汇总
在响应式编程中,应该牢记以下两点: everything is a stream(一切皆流) don't break the chain(不要打断链式结构) 记住,可观测序列就像一条河,它们是流动的. ...
- Java 学习资料整理
Java 学习资料整理 Java 精品学习视频教程下载汇总 Java视频教程 孙鑫Java无难事 (全12CD) Java视频教程 即学即会java 上海交大 Java初级编程基础 共25讲下载 av ...
随机推荐
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场
E: 飞碟解除器 •题目描述 wjyyy在玩跑跑卡丁车的时候,获得了一个飞碟解除器,这样他就可以免受飞碟的减速干扰了.飞碟解除器每秒末都会攻击一次飞碟,但每次只有p/q的概率成功攻击飞碟.当飞碟被成功 ...
- 简易数据分析 08 | Web Scraper 翻页——点击「更多按钮」翻页
这是简易数据分析系列的第 8 篇文章. 我们在Web Scraper 翻页--控制链接批量抓取数据一文中,介绍了控制网页链接批量抓取数据的办法. 但是你在预览一些网站时,会发现随着网页的下拉,你需要点 ...
- DES、3DES、AES、PBE对称加密算法实现及应用
1.对称加密算法概述 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解读原文 ...
- codeforces 371A K-Periodic Array
很简单,就是找第i位.i+k位.i+2*k位...........i+m*k位有多少个数字,计算出每个数出现的次数,找到出现最多的数,那么K-Periodic的第K位数肯定是这个了.这样的话需要替换的 ...
- java并发之ConcurrentLinkedQueue
在并发编程中,我们可能经常需要用到线程安全的队列,JDK提供了两种模式的队列:阻塞队列和非阻塞队列.阻塞队列使用锁实现,非阻塞队列使用CAS实现.ConcurrentLinkedQueue是一个基于链 ...
- spring boot 学习笔记之前言----环境搭建(如何用Eclipse配置Maven和Spring Boot)
本篇文档来源:https://blog.csdn.net/a565649077/article/details/81042742 1.1 Eclipse准备 (1) 服务器上安装JDK和Mav ...
- A solution to the never shortened to-do list
I once told my younger sister my learning system, and the basic five doctrines of my methodology. Bu ...
- java多线程基础(二)--sleep(),wait,()yield()和join()方法
1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”.不推荐使用. sleep()使当前线程进入阻塞状态,在指定时间内不会执行. 2.wait()方法 在其他线程调用 ...
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- 一文了解java异常机制
1.异常的概述 1.1什么是异常? 异常:程序在运行过程中发生由于外部问题导致的程序异常事件,发生的异常会中断程序的运行.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个 ...