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

 

    开源跨平台的.NET Core,还没上车的赶忙的,来不及解释了……html

    本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料。我进行了知识点归类,让你们能够更清晰的学习.NET Corelinux

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

第一篇:.NET Core 学习资料精选:入门git

    介绍.NET历史、开源之路、基础、路由、依赖注入DI、HttpContextcookie|sessionHttpClientgRPC、单元测试、发布部署等等。程序员

第二篇:.NET Core 学习资料精选:进阶github

    介绍.NET工程化、AOP、异常处理、缓存、日志、响应优化、上传下载、健康检查、后台任务、认证和受权、安全性(HttpsCORSCSRF)、EF Core 等等web

第三篇:.NET Core 学习资料精选:高级&微服务架构redis

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

 

这是第一篇,知识点如图: apache

           

 

.NET 简介

#.NET 开源之路

clip_image004[8]

.NET 时间轴

.NetFrameWork发展史

C# 语言版本发展史

.NET 生态系统概览(开源&跨平台)

2014.11月 .NET Core 项目启动,2016.06月 .NET Core 1.0 发布

.NET Core 3.0 新特性:支持 Windows 桌面应用(windows only)

image

.NET Core 3.0 正式公布:新特性详细解读

.NET Core 3.0 下一个版本命名为:.NET 5

【翻译】.NET Core3.1发布(及各版本支持时长)

clip_image006[8]

.NET Core Roadmap

image

 

#.NET Core提供的特性

1.免费和最宽松的开源协议

.NET Core从属于.NET基金会,由微软进行官方支持。使用最宽松的MIT和Apache 2开源协议,文档协议遵循CC-BY。这将容许任何人任何组织和企业任意处置,包括使用,复制,修改,合并,发表,分发,再受权,或者销售。惟一的限制是,软件中必须包含上述版权和许可提示,后者协议将会除了为用户提供版权许可以外,还有专利许可,而且受权是免费,无排他性的(任何我的和企业都能得到受权)而且永久不可撤销,用户使用.NET Core彻底不用担忧收费问题,你能够很自由的部署在任何地方.

2.轻量级、跨平台

3.组件化、模块化、IOC+Nuget、中间件

4.高性能

5.统一了MVCWebAPI编程模型

a)  好比:ASP.NET Core MVC Web API 直接或间接继承同一个基类 ControllerBase,提供可以使用的API也一致化

b)  好比:旧ASP.NET时代,写全局filter须要针对MVC Web API 分别编写代码,但在ASP.NET Core,直接使用一套中间件代码便可

6.可测试性

7.微服务、容器化支持

8.标准化 .NET API 规范- .NET STANDARD

 

#、迁移到.NET Core

目前市面上还存在不少传统 .NET 旧项目,咱们须要根据公司状况决定是否升级到.NET Core

若是须要进行旧项目升级的,能够参考文章:《.NET项目迁移到.NET Core操做指南

 

VS.NET Core安装

Vistual Studio

  VS2019安装教学

  VS2019正式版注册码秘钥

  Visual Studio 中使用Libman管理客户端库

  [坑]安装 .Net Core 2.2 SDK后,VS2017依然不能设置core2.2为目标框架

  把.net Core 项目迁移到VS2019 for MAC(无需改一行代码)

调试

  VS2019自带 反编译 与 Reflector 反编译工具比较

  Visual Studio 2017中使用SourceLink调试Nuget包源码(SourceLink方式)

  Visual Studio 2017调试开源项目代码(下载源代码文件方式)

VS Code 开发.NET Core

  使用VS Code 开发.NET CORE 程序指南

  完整构建VSCode开发调试环境

.NET Core SDK

安装 .NET Core Runtime 和.NET Core SDK

如何为.NETCore安装汉化包智能感知

Linux/MacOS 安装 .NET Core SDK 命令

.NET Core 卸载工具 (dotnet-core-uninstall) 

修改nuget包默认存放路径,避免C盘膨胀

【微软官方文档】ASP.NET Core *.* 个版本新特性

指定要使用的 .NET Core 版本

如何删除 .NET Core 过期的运行时和 SDK

 

基础

术语:

  程序员须要知道的缩写和专业名词

  后端开发术语大全

  一文读懂QPS、TPS、PV、UV、GMV、IP、RPS

ASP.NET Core开发者路线指南

微软官方 asp.net core 教程文档(入口)

.NET Core 命令行接口 (CLI) 工具

.NET Core应用的三种部署方式

.NET Core RID 目录 (参数:-r|--runtime)

.NET Core 目标框架 (参数:-f|--framework

  dotnet publish 发布的文件中包含pdb文件,不论模式是Debug仍是Release。能够经过配置:

     <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
          <DebugType>None</DebugType>
          <DebugSymbols>false</DebugSymbols>
          ……
     </PropertyGroup>

--self-contained 自包含参数。将.NET Core运行时及.NET Core类库随应用一块儿打包,这样能够彻底避免老项目在系统.NET Core运行时升级时,带来莫名异常的问题

.NET Core 运行程序注意事项(dotnet dll 与 dotnet run)

core api 支持状况

ASP.NET Core API 一览表

查询 NET API 及类库在各版本中实现状况

ASP.NET Core 项目目录结构介绍

ASP.NET Core 端口配置

  NetCore 启动地址配置详解

  Asp.Net Core WebAPI 端口修改(host.json)

  Net Core3.0配置项目端口号

ASP.NET Core 中的Startup类

[视频]基于Webhost分析netcore启动原理

ASP.NET Core 中使用多个环境(开发、预发布、生产)- 默认为 Production

ASP.NET Core 动做结果(ActionResult)

ASP.NET Core 中控制器操做的多路径返回类型(IActionResult)

.NET Core 3.0 新的 System.Text.Json API

 

配置

ASP.NET Core 中的配置(json、xml、命令行、环境变量、内存变量等)

ASP.NET Core 中的选项模式

ASP.NET Core 中IOptions、IOptionsMonitor以及IOptionsSnapshot

ASP.NET Core 为选项数据添加验证

.Net Core 自定义配置源从远程API读取配置(ConfigurationProvider)

迈向现代化的 .Net 配置指北(配置到类自动映射)

 

路由、模型绑定

ASP.NET Core WebAPI中,Controller标注 [ApiController] 特性,其路由只能使用[route]特性方式

ASP.NET Core MVC 构建可读性更高的ASP.NET Core 路由

ASP.NET Core 3.x 为何采用新的 Endpoint Routing 路由系统

ASP.NET Core 3.0中使用动态控制器路由

ASP.NET Core 中的模型绑定

ASP.NET Core 中的自定义模型绑定(IModelBinder)

ASP.NET Core 中的 URL 重写中间件

ASP.NET Core Web API 入参解析InputFormatter

 

控制反转、依赖注入

什么是控制反转,和依赖注入:

     依赖倒置原则(Dependence inversion principle,DIP):软件设计原则,要依赖于抽象,不要依赖具体实现。

控制反转(Inversion of Control,IoC):IOC是一种实现DIP原则的模式。日常咱们须要一个类对象的时候须要new出来,而如今咱们把new一个类对象的工做交给了IOC容器,当咱们须要一个类对象的时候直接向IOC容器要,就能够了,这个就是控制反转。(控制权交个了IOC容器)

依赖注入(Dependency Injection,DI):DI是实现IOC的一种方式。当我须要一个类对象,IOC容器给咱们这个类对象的过程其实就是依赖注入,依赖注入有构造函数注入和属性注入。

[官方]ASP.NET Core 依赖注入

全面理解 ASP.NET Core 依赖注入

官方推荐经过构造函数。这也是所谓的显式依赖。Asp.Net Core 的标准依赖注入容器不支持属性注入。(可使用autofac或者其余来实现属性注入)

ASP.NET Core 中依赖注入的N种玩法

ASP.NET Core 自定义特性实现属性注入

ASP.NET Core 原生DI实现批量注册

能够参考 OSharp 框架,设计三个全局注入接口,来实现自动化注入ISingletonDependency ITransientDependency IScopedDependency ( 单例、瞬时、范围)。

ASP.NET Core 中如何注入同一个接口的多个实现

案例1:使用nlog时,想根据须要使用不一样的配置文件Nlog.config 写日志时,就可使用文章中介绍的 Factory 命名注入方案来实现

案例2:使用分布式缓存 IDistributedCache 时,想根据须要在一个项目中同时使用redissqlserver

ASP.NET Core 中多个接口对应同一个实现的正确姿式

ASP.NET Core 依赖注入扩展库 Scrutor

[OSharp]使用 IServiceProvider.GetService<T>() 实现按需注入,优化性能

在WPF中使用.NET Core 3.0依赖项注入和服务提供程序

 

#ASP.NET Core 结合 Autofac 的使用

AutoFac三种注入方式:按类型、按名称、按键

Asp.Net Core 2.0 之旅---AutoFacIOC容器的使用教程(批量注入)

Asp.Net Core 2.0 之旅---AutoFac仓储泛型的依赖注入(泛型注入)

Asp.Net Core 2.0 之旅---数据访问仓储模式的事务管理(uow+rp)

ASP.NET Core 技巧之伪属性注入(属性注入会形成类型的依赖关系隐藏,测试不友好等)

 

ASP.NET Core 中使用Autofac实现属性注入的代码片断

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    // 第一步:替换系统默认Controller建立器(不然Controller下面没法使用属性注入)
    // 在 services.AddMvc() 以前
    services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
    services.AddMvc();

    var builder = new ContainerBuilder();

    // 第二步:找到全部Controller的类型
    // 经过Autofac对Controller类型进行属性注册 PropertiesAutowired()
    var assembly = this.GetType().GetTypeInfo().Assembly;
    var manager = new ApplicationPartManager();
    manager.ApplicationParts.Add(new AssemblyPart(assembly));
    manager.FeatureProviders.Add(new ControllerFeatureProvider());
    var feature = new ControllerFeature();
    manager.PopulateFeature(feature);
    builder.RegisterTypes(feature.Controllers.Select(ti => ti.AsType()).ToArray()).PropertiesAutowired();
    // 第三步:配置 ContainerBuilder,返回 IServiceProvider 
    builder.Populate(services);
    return new AutofacServiceProvider(builder.Build());
}

 

#、构造函数注入&属性注入

描述来源于Abp.io中文文档:查看详情

构造方法注入

        是将依赖项注入类的首选方式.这样,除非提供了全部构造方法注入的依赖项,不然没法构造类.所以,该类明确的声明了它必需的服务.

属性注入

        public class MyService : ITransientDependency
        {
                public ILogger<MyService> Logger { get; set; }

                public MyService()
                {
                        Logger = NullLogger<MyService>.Instance;
                }

        }

对于属性注入依赖项,使用公开的setter声明公共属性.这容许DI框架在建立类以后设置它.
属性注入依赖项一般被视为可选依赖项.这意味着没有它们,服务也能够正常工做.Logger就是这样的依赖项,MyService能够继续工做而无需日志记录.
为了使依赖项成为可选的,咱们一般会为依赖项设置默认/后备(fallback)值.在此示例中,NullLogger用做后备.所以,若是DI框架或你在建立MyService后未设置Logger属性,则MyService依然能够工做但不写日志.
属性注入的一个限制是你不能在构造函数中使用依赖项,由于它是在对象构造以后设置的.
当你想要设计一个默认注入了一些公共服务的基类时,属性注入也颇有用.若是你打算使用构造方法注入,那么全部派生类也应该将依赖的服务注入到它们本身的构造方法中,这使得开发更加困难.可是,对于非可选服务使用属性注入要很是当心,由于它使得类的要求难以清楚地看到.

 

ASP.NET Core WebAPI

建立ASP.NET Core Web API (ControllerBase、参数绑定源)

版本控制

RESTful API版本控制策略

ASP.Net Core WebAPI 几种版本控制对比(nuget:Microsoft.AspNetCore.Mvc.Versioning)

ASP.NET Core 构建带有版本控制的 API 接口(结合SwaggerUI)

使用 ASP.NET Core WebAPI 小技巧

使用 Web API 约定

使用 Web API 分析器告警缺失的约定

WebApi管理和性能测试工具WebApiBenchmarks

ASP.NET Core AutoWrapper 自定义响应输出

 

ASP.NET CoreMVC Razor Pages

ASP.NET Core MVC 静态文件目录配置与访问受权

ASP.NET Core 十种方式扩展你的 Views

ASP.NET Core 中的特殊视图文件(_Layout.cshtml、_ViewStart.cshtml、_ViewImports.cshtml)

新的 Razor 机制

ASP.NET Core Razor SDK

ASP.NET Core 的 Razor 语法参考

ASP.NET Core 中的 Razor 页面介绍(OnGet、OnPost、单页多Handler方式)

ASP.NET Core 中 Razor 页面的IPageFilter

ASP.NET Core 中 Razor 页面的路由和应用约定

ASP.NET Core Razor 配置:预编译,动态编译,混合编译

WebForm & MVC & Razor Pages

[译]ASP.NET:WebForms vs MVC

ASP.NET Core Razor页面 vs MVC

[译]ASP.Net Core 2.0中的Razor Page不是WebForm

ASP.NET Core Razor页面简化了 ASP.NET MVC 应用程序

 

HttpContext

ASP.NET Core 中访问 HttpContext 的方法

ASP.NET Core 中经过IHttpContextAccessor实现公用静态HttpContext

 

状态管理

常见方式:CookieSessionTempData、查询字符串、HttpContext.Items、缓存、依赖关系注入

ASP.NET Core 中的会话和应用状态

Cookie 的 SameSite 属性(注意http>>https重定向跨域致使的cookie丢失问题)

#session

ASP.NET Core 在通用数据保护条例规则下使用 session

ASP.NET Core 使用Redis存储Session

#cookie

ASP.NET Core SameSite 设置引发 Cookie 在 QQ 浏览器中不起做用

[github]ASP.NET Core CookieManager

 

通讯

对比 gRPC 服务和 HTTP API 服务

.NET Core 基于Websocket的在线聊天室

#HttpClient

传统.NET HttpClient坑

ASP.NET Core HttpClient的演进和避坑

C#中HttpClient使用注意:静态化、预热和长链接

ASP.NET Core HttpClient的各类用法、生命周期管理

DotNetCore 使用Http请求及基于 Polly 的处理故障

DotNetCore 中 HttpClientFactory 类源码分析

#RPC

  Grpc

       ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

       ASP.NET Core 3.0 使用gRPC

       ASP.NET Core gRPC的配置

       [github]基于gRPC的实时网络引擎:MagicOnion

  DotNetty

       [github]Azure开源的网络通讯框架DotNetty

#、SignalR

ASP.NET Core SignalR 简介

[如鹏网九节公开课].NET Core 中使用SignalR实现聊天服务器

SignalR 在5分钟内完成通讯链接和消息发送

SignalR 中丰富多彩的消息推送方式

在后台主机中托管SignalR服务并广播心跳包

 

发布部署

nginx 之 https 证书配置

.Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布

ASP.NET Core 使用 IIS 进行托管部署

ASP.NET Core 部署到 Linux 进行托管

在Linux上使用 pm2 守护你的 .NET Core 应用程序--(pm2 github starts 31.1k)

在Linux上使用Nginx + supervisor部署ASP.NET Core程序--(supervisor github starts 5.8k)

ASP.NET Core 使用Docker进行容器化托管

配置 ASP.NET Core 以使用代理服务器和负载均衡器

  使用 Nginx 在 Linux 上托管 ASP.NET Core

  使用 Apache 在 Linux 上托管 ASP.NET Core

ASP.NET Core nginx反向代理部署

 

单元测试

.NET Core 和 .NET Standard 单元测试最佳作法

.NET 测试篇之Moq框架简单使用

使用 dotnet test 和 xUnit 在 .NET Core 中进行 C# 单元测试

使用 dotnet test 和 NUnit 在 .NET Core 中进行 C# 单元测试

使用 dotnet test 和 MSTest 在 .NET Core 中进行 C# 单元测试

使用 dotnet test --filter 进行选择性单元测试

 

视频教程

ASP.NET Core MVC 2.x 全面教程 -- solenovex

ASP.NET Core 3.0 入门视频 -- solenovex

NetCore 视频教程(Blog.Core)--- 老张

 

一些坑

dotnet core windows和linux的时区处理  (开源库:nodatime)

 

 

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

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

  

        

原文出处:https://www.cnblogs.com/heyuquan/p/dotnet-basic-learning-resource.html

相关文章
相关标签/搜索