.NET Core 学习资料精选:进阶


2019.09月就要正式发布.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 学习资料精选:高级&微服务架构

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

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

   640?wx_fmt=png


.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、日志记录等等

      640?wx_fmt=png

      ASP.NET Core Middleware 的实现(Conventional Middleware 和IMiddleware)

      ASP.NET Core Middleware 的实现(Run,Map,Use,内置中间件)

      【机翻】 【人工翻译】

#、过滤器Filter

      640?wx_fmt=png

      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代码织入之《案例:构建一个汽车租赁应用》

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

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

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

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

浅谈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等知识,不过这篇文章会过几个月整理出,中间打算研究一些开源框架,并分享给大家。


原文链接:https://www.cnblogs.com/heyuquan/p/dotnet-advance-learning-resource.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

640?wx_fmt=jpeg

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

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

相关文章

P4389 付公主的背包(生成函数,多项式exp)

P4389 付公主的背包 考虑生成函数有: ∏i1n11−xvi对其取对数得,∑i1nln⁡11−xviF(x)11−xv,G(x)ln⁡F(x)G(x)∫F′(x)F(x)dxG(x)∫vxv−11−xvdxG(x)∫∑n≥0vxvnv−1dxG(x)∑n≥0vxvnvvnvG(x)∑n≥0xv(n1)n1G(x)∑n≥1xvnn对于原式:∑i1n∑j1∞xvijj…

VS Code 1.38 发布!

今天(北京时间 2019 年 9 月 5 日),微软发布了 Visual Studio Code 1.38 版本。此版本主要更新的内容包括:Preserve case for global search and replace - 进行全局替换字符串时保留大小写。Settings editor string array valida…

HDU 5730 Shell Necklace(生成函数 多项式求逆)

Shell Necklace 由题意可得f[n]∑i1na[i]f[n−i]f[n] \sum\limits_{i 1} ^{n} a[i] f[n - i]f[n]i1∑n​a[i]f[n−i],设f[n]f[n]f[n]的生成函数为F(x)F(x)F(x),a[n]a[n]a[n]的生成函数为A(n)A(n)A(n) F(x)A(x)∑n≥0xn∑ijnaifn−i由于a00&#xff0c…

.NET Core 收徒,有缘者,可破瓶颈

最近感悟天命,偶有所得,故而打算收徒若干,以继吾之传承。有缘者,可破瓶颈,职场巅峰指日可待。入门基本要求:1、工作经验:1年或以上。2、拜师费用:3999元(RMB)…

【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程

一、前言在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署。在本文中,我们将继续介绍利用Docker部署Nginx服务实现负载均衡。文章最后附有Nginx部署的视频全过程。注:查看公众号历史文章&#xff0c…

P2012 拯救世界2(指数型生成函数)

P2012 拯救世界2 三种基因,我们分别列出其生成函数: F(x)∑n≥0xnn!exG(x)∑n≥0x2n1(2n1)!12(∑n≥0xnn!−∑n≥0(−1)nxnn!)12(ex−e−x)H(x)∑n≥0x2n(2n)!12(∑n≥0xnn!∑n≥0(−1)nxnn!)12(exe−x)F(x) \sum_{n \geq 0} \frac{x ^ n}{n!} e ^ x\…

开源导入导出通用库Magicodes.ExporterAndImporter发布

导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨。GitHub地址:https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语…

第一个错误的版本

题目描述 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, …, n],你…

P4705 玩游戏(生成函数,多项式ln)

P4705 玩游戏 有ansk∑i1n∑j1m(aibj)knm先舍弃nm不管ansk∑r0k∑i1n∑j1mCkrairbjk−r∑r0k∑i1n∑j1mk!r!(k−r)!airbjk−rk!∑r0k(1r!∑i1nair)(1(k−r)!∑j1mbjk−r)不难发现这就是一个卷积的形式了,但是我们现在还不知道∑i1nair,∑i1mbir,(r∈[0,k])设A(x)为∑…

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶…

netcore 中的动态代理与RPC实现(微服务专题)

一、关于RPC的调用1. 调用者(客户端Client)以本地调用的方式发起调用;  2. Client stub(客户端存根)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体; …

多项式除法,多项式取模

多项式除法 给定一个nnn次多项式F(x)F(x)F(x)和mmm次多项式G(x)G(x)G(x),要求R(x),Q(x)R(x), Q(x)R(x),Q(x),满足F(x)R(x)G(x)Q(x)F(x) R(x)G(x) Q(x)F(x)R(x)G(x)Q(x)。 R(x)R(x)R(x)是一个n−mn - mn−m阶多项式,Q(x)Q(x)Q(x)是一个小于…

[翻译] .NET Core 3.0 Preview 9 发布

原文: Announcing .NET Core 3.0 Preview 9今天,我们宣布推出 .NET Core 3.0 Preview 9。就像 Preview 8 一样,我们专注于打磨 .NET Core 3.0 的最终版本,而不是添加新功能。如果这些最终版本看起来不像早期预览版那么令人兴奋,我…

南昌网络赛E Interesting Series

Interesting Series 可求得通项Fnan−1a−1F_n \frac{a ^ n - 1}{a - 1}Fn​a−1an−1​,一个等比数列的前nnn项和,value(s)Fsum(s)value(s) F_{sum(s)}value(s)Fsum(s)​。 题目要我们求的是Answer(K)∑s∈subsetofSand∣s∣Kvalue(s)Answer(K) \s…

谈谈“学习”这件事儿

曾经有童鞋在我博客留言:楼主你是如何学习的,肿么那么牛逼(注:真不牛逼,只不过我讲的你刚好不知道,在你心中就形成了好牛逼的样子)曾经也有童鞋加我好友,开头第一句则是:…

牛客练习赛50 F tokitsukaze and Another Protoss and Zerg

tokitsukaze and Another Protoss and Zerg 考虑生成函数,每一场的生成函数为∑j1b[i]Cb[i]j∑j1a[i]Ca[i]jxj\sum\limits_{j 1} ^{b[i]}C_{b[i]} ^ j \sum\limits_{j 1} ^{a[i]}C_{a[i]} ^{j} x ^ jj1∑b[i]​Cb[i]j​j1∑a[i]​Ca[i]j​xj, 进一步…

持续集成之应用k8s自动部署

持续集成之应用k8s自动部署Intro上次我们提到了docker容器化及自动化部署[1],这仅仅适合个人项目或者开发环境部署,如果要部署到生产环境,必然就需要考虑很多因素,比如访问量大了如何调整部署,如何更好的应对大并发的情…

Fizz Buzz

题目描述 写一个程序,输出从 1 到 n 数字的字符串表示。 如果 n 是3的倍数,输出“Fizz”; 如果 n 是5的倍数,输出“Buzz”; 3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。 示例: n 15,返…

多项式全家桶(半)

快速傅里叶变换(FFT) 多项式表示 系数表示法: 一个nnn次多项式可以用n1n 1n1个系数表示出来:f(x)a0a1xa2x2⋯an−1xn−1anxnf(x) a_0 a_1 x a_2 x ^ 2 \dots a_{n - 1} x ^{n- 1} a_n x ^nf(x)a0​a1​xa2​x2⋯an−1​xn−1an​xn。 点值表示…

持续集成之应用容器化及自动化部署

通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署IntroAzure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的好消息,在 Github 的 Marketplace 里有个 Azure Pipeline,就是微软的 Azure DevOps …