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

对于还在使用传统.net framework 框架的园友,可以通过《.net项目迁移到.net core操作指南》把需要新生力量的旧项目速度迁移到.net core

 

本系列文章,主要分享一些.net core比较优秀的社区资料和微软官方资料。我进行了知识点归类,让大家可以更清晰的学习.net core

首先感谢资料原作者的贡献。

第一篇:.net core 学习资料精选:入门

    介绍.net历史、开源之路、基础、路由、依赖注入、httpcontextcookie|sessionhttpclientgrpc、单元测试、发布部署等等。

第二篇:.net core 学习资料精选:进阶

    介绍.net工程化、aop、异常处理、缓存、日志、响应优化、上传下载、健康检查、后台任务、认证和授权、安全性(httpscorscsrf)、ef core 等等

第三篇:.net core 学习资料精选:高级&微服务架构

    介绍性能、原理、微服务架构、ddd等知识

 

这是第二篇,知识点如图:

   

 

.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面向切面编程

aopaspect-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 的实现(runmapuse,内置中间件)

     

 

#、过滤器filter

     

      asp.net core 被低估的过滤器

      asp.net core mvc filter的定义、注册和各种filter执行顺序

 

#、代码织入

l  编译时静态织入

框架:postsharp、fody

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

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

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

框架:castle dynamicproxy,

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

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

 

.net aop代码织入介绍

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

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

.net aop代码织入之《单元测试切面》

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

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

.net core 原生di+aop实现注解式编程

.net core 泛型仓储和声明式事物实现最优雅的crud操作

 

异常处理

restful api 中的错误处理设计

asp.net core 应用的错误处理[1]:三种呈现错误页面的方式

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

asp.net core 自定义errorhandlingmiddleware 全局异常捕获

 

缓存

.net core 缓存使用、配置、依赖策略

.net core memorycache 缓存过期策略(绝对、滑动、依赖、过期回调)

asp.net core 使用分布式缓存(redis、sqlserver)

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分布式日志框架

      .net core 快速搭建docker-elk分布式日志中心

 

响应优化

在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表达式

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.configweb.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,谢谢查阅,觉得文章对你有收获,请多帮推荐。欢迎向我提供更好的资料信息。