.NET 3.0 这个月就要正式发布了,对于前一篇博文《.NET Core 学习资料精选:入门》大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊。

对于还在使用传统.NET
Framework 框架的园友,可以通过《.NET项目迁移到.NET Core操作指南》把需要新生力量的旧项目速度迁移到.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编码规范

StyleCop规则汇总

在VS2017中使用StyleCop

netcore将StyleCop.Analyzers自定义规则应用到整个解决方案

#、Nuget包

安装NuGet 客户端工具

NuGet.Server

发布包

承载自己的NuGet 源

Nuget管理工具BaGet使用教程

Nuget管理工具FuGet使用教程

#、Swagger Api文档

Swagger 规范 (swagger.json)

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 被低估的过滤器

ASP.NET Core MVC Filter的定义、注册和各种Filter执行顺序

#、代码织入

l  编译时静态织入

框架:PostSharpFody

特点:[编译型]性能高,缺点是缺乏灵活性

实现思想:给语言的编译器做扩展,使得在编译程序的时候编译器将相应的Aspect代码织入到业务代码的指定连接点,输出整合的结果。

l  运行时动态织入(动态代理)

框架:Castle DynamicProxy

特点:[运行时动态代理]灵活性高,性能相对“静态织入”低

实现方式:将扩展添加到运行虚拟机而不是编译器。Aspect和业务代码分别独立编译,而在运行时由虚拟机在必要时进行织入。

.Net AOP代码织入介绍

.Net AOP代码织入实现类型及原理(静态、动态、优缺点)

.Net AOP代码织入之《拦截方法》(包含案例:数据事物、多线程)

.Net AOP代码织入之《单元测试切面》

.Net AOP代码织入之《案例:构建一个汽车租赁应用》

演示了清晰的业务代码,因为非功能性需求(eg:logging,防御性编程,事务,重试,和异常处理等)导致代码变得冗长、难懂、不易维护。通过使用AOP来让业务代码重新清晰化

.NET Core 原生DI+AOP实现注解式编程

异常处理

Restful API 中的错误处理设计

ASP.NET Core 应用的错误处理[1]:三种呈现错误页面的方式

使用UseStatusCodePages 根据Status选择处理方式(跳转页面)

ASP.NET Core 自定义ErrorHandlingMiddleware 全局异常捕获

缓存

.NET Core 缓存使用、配置、依赖策略

.NET Core MemoryCache 缓存过期策略(绝对、滑动、依赖、过期回调)

ASP.NET Core 使用分布式缓存(redis、sqlserver)

windows redis安装和设置密码

ASP.NET Core 使用RedLock.net 实现分布式锁

日志

玩转ASP.NET Core 中的日志组件

[github]ASP.NET Core Microsoft.Extensions.Logging 默认log组件

ASP.NET Core 中使用Nlog 记录日志

在ASP.NET Core 中使用Serilog 进行日志记录

ASP.NET Core 中使用log4net 记录日志

.NET Core中使用Exceptionless分布式日志收集框架

响应优化

在ASP.NET Core 中的响应压缩

ASP.NET Core 中使用ResponseCache 响应缓存

上传下载

ASP.NET Core 中的文件上传(IFormFile)、流式处理上传大文件

ASP.NET Core 下载断点续传

健康检查

ASP.NET Core 中的运行状况检查(IHealthCheck)

[github]ASP.NET Core HealthChecks(健康检查,异常webhooks通知)

使用案例:

使用ASP.NET Core实现Docker的HealthCheck指令

Kubernetes liveness and readiness probes using HealthChecks

其他特性

#、对象池ObjectPool

.NET Core 中Object Pool的简单使用

#、WebHooks

ASP.NET Webhook 概述

WebHooks with ASP.NET Core – DropBox and GitHub

后台任务

基础知识

服务宿主是IIS,需要注意IIS的回收策略对后台任务的影响

Cron表达式

cron表达式在线生成

ASP.NET Core 中使用托管服务实现后台任务(后台任务、作用域任务、队列任务)

.NET Core 3.0 创建Windows服务项目(BackgroundService)

使用Topshelf 创建Windows 服务

#、Hangfire(5024 stars)

特点:不需要Windows服务或单独的进程

ASP.NET Core 中使用Hangfire任务管理(含Dashboard)

Hangfire 授权、自定义路由、只读Dashboard、多数据库源、设置主应用

Hangfire 队列任务、计划任务、周期性任务

ASP.NET Core 中使用Hangfire.Redis.StackExchange存储

ASP.NET Core 中Hangfire.Cronos 结合BackgroundService 实现任务调度

使用Hangfire.HttpJob实现调度与业务分离

使用ASP.NET Core和Hangfire实现HTTP异步化方案

#、Quartz.NET(3404 stars)

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配置

CrystalQuartz

配置Quartz.NET Cluster以及远程管理(CrystalQuartz)

Quartz.NET 可视化Job管理(CrystalQuartz)

CrystalQuartz 在线 Demo

认证和授权

#、ASP.NET Core Identity身份认证

命名空间:Microsoft.AspNetCore.Identity

ASP.NET Core Identity框架简介

创建完整的ASP.NET Core Identity基架(多图)

ASP.NET Core Identity配置(声明类型、锁定策略、密码策略、登录策略等等)

ASP.NET Core 中注册确认电子邮件和重置密码

ASP.NET Core Identity身份验证支持OAuth2第三方验证提供程序

ASP.NET Core Identity中自定义模型

ASP.NET Core Idendity自定义存储提供程序(Azure表存储、Dapper)

#、基于Cookie的身份认证

命名空间:Microsoft.AspNetCore.Authentication.Cookies

ASP.NET Core中使用Cookie身份验证

ASP.NET Core Cookie身份验证支持OAuth2第三方验证提供程序

#、授权

命名空间:Microsoft.AspNetCore.Authorization

ASP.NET Core 简单授权

ASP.NET Core 基于角色的授权

ASP.NET Core 基于声明的授权

ASP.NET Core 基于策略的授权

ASP.NET Core 自定义授权提供程序

ASP.NET Core web api基于JWT自定义策略授权

#、IdentityServer4 认证授权

[阮一峰]理解OAuth 2.0

[晓晨Master]IdentityServer4 中文文档与实战

[免费视频]IdentityServer教程视频

安全性

检查HTTP Header 是否安全

.NET项目安全设置向导

ASP.NET Core 在强制实施 HTTPS

#、CORS

跨域资源共享CORS 详解

ASP.NET Core 中启用跨域请求 (CORS)

#、CSRF

SameSite Cookie,防止CSRF 攻击

ASP.NET Core 防止跨站点请求伪造(XSRF/CSRF) 攻击

ASP.NET Core WebAPI 中防御跨站请求伪造攻击(CSRF)

ASP.NET Core 启用客户端IP 安全列表

EF
Core

EF Core 微软官网教程(非常全)

Linq入门详解(Linq to Objects)

3分钟了解数据库事务(ACID、事务隔离级别)

EF Core DbFirst:从数据库生成实体类(反向工程)

EF Core CodeFirst:从实体创建新数据库

EF Core CodeFirst:实体修改后迁移数据库架构

EF Core 启用SQL日志记录

模型配置

EF Core 实体类型、查询类型、数据注解、Fluent API

EF Core 自动生成值配置

EF Core 实体间关系

EF Core 生成跟踪列(eg:CreatedAt,CreatedBy等列)

并发

EF Core 并发检查

EF Core 并发冲突处理

数据查询

EF Core 关联数据加载策略(预先记载、显示加载、延迟加载)

EF Core 跟踪与非跟踪查询

EF Core 全局查询筛选器(软删除、多租户等)

EF Core 使用like 函数实现模糊查询

批量数据操作

[收费]使用Entity Framework Extensions 实现批量增、删、改

[免费]Entity Framework Extensions 提供功能缩减版:EntityFramework-Plus

EF Core 执行SQL语句和存储过程

看完”入门”和”进阶”两篇文章,对.NET Core的常用特性基本是掌握了的。接下来的”高级”篇,会介绍性能、原理、微服务架构、DDD等知识,不过这篇文章会过几个月整理出,中间打算研究一些开源框架,并分享给大家。

==============================================================================

over,谢谢查阅,觉得文章对你有收获,请多帮推荐。欢迎向我提供更好的资料信息。

.NET Core 学习资料精选:进阶的更多相关文章

  1. .NET Core 学习资料精选:入门

    开源跨平台的.NET Core,还没上车的赶紧的,来不及解释了-- 本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料.我进行了知识点归类,让大家可以更清晰的学习.NET Co ...

  2. TIB自动化测试快讯 - Appium手机自动化测试学习资料精选

    TIB自动化测试快讯 - Appium手机自动化测试学习资料精选   Appium+Android+Javahttp://automationqa.com/forum.php?mod=viewthre ...

  3. .Net Core 学习资料

    官方网站:https://www.microsoft.com/net/core#windows   官方文档:https://docs.asp.net/en/latest/intro.html   中 ...

  4. asp.net core 学习资料整理

    net上海俱乐部  白手套大神分享 广州一位大佬总结的系列文章 https://www.cnblogs.com/viter/p/10474091.html     汪宇杰 http://edi.wan ...

  5. .NET Core资料精选:架构篇

    .NET 6.0 马上就要发布,高性能云原生开发框架.希望有更多的小伙伴加入大.NET阵营.这是本系列的第三篇文章:架构篇,喜欢的园友速度学起来啊. 本系列文章,主要分享一些.NET Core比较优秀 ...

  6. 业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送)

    业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送). 超过1024G的IT学习资料免费领取,你值得拥有! 领取资源方式,关注“业余草”公众号,回复对应的关键字 01.回复”我 ...

  7. 【我的Android进阶之旅】Realm数据库学习资料汇总(持续更新)

    介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...

  8. 我的Android进阶之旅------>RxJava学习资料汇总

    在响应式编程中,应该牢记以下两点: everything is a stream(一切皆流) don't break the chain(不要打断链式结构) 记住,可观测序列就像一条河,它们是流动的. ...

  9. Java 学习资料整理

    Java 学习资料整理 Java 精品学习视频教程下载汇总 Java视频教程 孙鑫Java无难事 (全12CD) Java视频教程 即学即会java 上海交大 Java初级编程基础 共25讲下载 av ...

随机推荐

  1. 图像相似度中的Hash算法

           度量两张图片的相似度有许多算法,本文讲介绍工程领域中最常用的图片相似度算法之一--Hash算法.Hash算法准确的说有三种,分别为平均哈希算法(aHash).感知哈希算法你(pHash) ...

  2. python传递参数

    1.脚本 # -*- coding: utf-8 -*- from sys import argvscript, first,second = argv #将命令中输入的参数解包后传递给左边 age ...

  3. 反应式微服务框架Flower

    Flower是一个构建在Akka上的反应式微服务框架,开发者只需要针对每一个细粒度的业务功能开发一个Service服务,并将这些Service按照业务流程进行可视化编排,即可得到一个反应式系统. 即时 ...

  4. Java虚拟机学习笔记(一)之初识

    一:特定 跨平台性.安全性.可移植性. 二:体系机构 Java 体系结构包括四个独立但相关的技术: Java程序设计语言 Java Class文件格式 Java 应用编程接口(API) Java 虚拟 ...

  5. Unity基于NGUI的简单并可直接使用的虚拟摇杆实现(一)

    可能大家都听说过大名鼎鼎的easytouch,然而easytouch是基于UGUI的,两种不同的UI混用,可能会造成项目管理的混乱,并且可能会出现各种幺蛾子,比如事件传递互相扰乱的问题. 于是就想找一 ...

  6. 如何在MySQL中输入中文

    解决MySQL中的Incorrect string value MySQL中输入中文:在MySQL建标的时候,直接往表中的varchar(255)中输入中文的话是会报错的,大概是因为数据库的默认编码是 ...

  7. Java内部类超详细总结(含代码示例)

    什么是内部类 什么是内部类? 顾名思义,就是将一个类的定义放在另一个类的内部. 概念很清楚,感觉很简单,其实关键在于这个内部类放置的位置,可以是一个类的作用域范围.一个方法的或是一个代码块的作用域范围 ...

  8. Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  9. webpack4核心模块tapable源码解析

    _ 阅读目录 一:理解Sync类型的钩子 1. SyncHook.js 2. SyncBailHook.js 3. SyncWaterfallHook.js 4. SyncLoopHook.js 二: ...

  10. Winform DataGridView 取消默认选中行

    困境 网上有很多解决方法,可是很多读者照做并不生效.追究其原因,问题出现在许多博主没有搞清楚DataGridView绑定与当前触发事件的关系. 复现 private void Frm_Load(obj ...