Asp.NET Core 學習路線精選

dotnet進階之路 發佈 2020-02-27T22:03:35+00:00

轉自:滴答的雨cnblogs.com/heyuquan/p/dotnet-basic-learning-resource.html開源跨平台的.NET Core,還沒上車的趕緊的,來不及解釋了……本系列文章,主要分享一些.NET Core比較優秀的社區資料和微軟官方資料。

轉自:滴答的雨

cnblogs.com/heyuquan/p/dotnet-basic-learning-resource.html

開源跨平台的.NET Core,還沒上車的趕緊的,來不及解釋了……

本系列文章,主要分享一些.NET Core比較優秀的社區資料和微軟官方資料。

我進行了知識點歸類,讓大家可以更清晰的學習.NET Core。

首先感謝資料原作者的貢獻。

第一篇:.NET Core 學習資料精選:入門

介紹.NET歷史、開源之路、基礎、路由、依賴注入、HttpContext、cookie|session、HttpClient、gRPC、單元測試、發布部署等等。

第二篇:.NET Core 學習資料精選:進階&高級

這是第一篇,知識點如圖:


一、.NET 簡介

1、.NET 開源之路



.NET FrameWork發展史

C# 語言版本發展史

2014.11月 .NET Core 項目啟動,2016.06月 .NET Core 1.0 發布

微軟 .NET Core3.0 規劃藍圖

.NET Core 3.0 下一個版本命名為:.NET 5


2、.NET Core提供的特性

1、開源、免費

2、輕量級、跨平台

3、組件化、模塊化、IOC+Nuget、中間件

4、高性能

5、統一了MVC和WebAPI編程模型

  • 比如:ASP.NET Core 中MVC 和Web API 直接或間接繼承同一個基類 ControllerBase,提供可使用的API也一致化
  • 比如:舊ASP.NET時代,寫全局filter需要針對MVC 和Web API 分別編寫代碼,但在ASP.NET Core,直接使用一套中間件代碼即可

6、可測試性

7、微服務、容器化支持

8、標準化 .NET API 規範- .NET STANDARD

3、遷移到.NET Core

目前市面上還存在很多傳統 .NET 舊項目,我們需要根據公司情況決定是否升級到.NET Core。

如果需要進行舊項目升級的,可以參考文章:《.NET項目遷移到.NET Core操作指南》

二、VS 和 .NET Core安裝

VS 2019安裝教學

VS 2019正式版註冊碼秘鑰

安裝 .NET CoreRuntime 和.NET Core SDK

【微軟官方文檔】ASP.NET Core *.* 個版本新特性

指定要使用的 .NET Core 版本

如何刪除 .NET Core 過時的運行時和 SDK

[坑]安裝 .Net Core 2.2 SDK後,VS2017依然不能設置core2.2為目標框架

三、基礎

ASP.NET Core開發者路線指南

微軟官方ASP.NET Core教程文檔https://docs.microsoft.com/zh-cn/aspnet/?view=aspnetcore-2.2#pivot=core

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

.NET Core 運行程序注意事項(dotnet dll 與 dotnet run)

ASP.NET Core API 一覽表

查詢 NET API 及類庫在各版本中實現情況

ASP.NET Core 項目目錄結構介紹

ASP.NET Core 程序自定義IP和埠的幾種方式

ASP.NET Core 中的Startup類

ASP.NET Core 中使用多個環境(開發、預發布、生產)- 默認為 Production

ASP.NET Core 動作結果(ActionResult)

ASP.NET Core 中控制器操作的多路徑返回類型(IActionResult)

.NET Core 3.0 新的System.Text.JsonAPI

四、配置

ASP.NET Core 中的配置(json、xml、命令行、環境變量、內存變量等)

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 中的模型綁定

ASP.NET Core 中的自定義模型綁定(IModelBinder)

ASP.NET Core 中的 URL 重寫中間件

六、依賴注入(IOC、DI)

什麼是控制反轉,和依賴注入:

控制反轉的意思就是:平常我們需要一個類對象的時候需要new出來,而現在我們把new一個類對象的工作交給了IOC容器,當我們需要一個類對象的時候直接向IOC容器要,就可以了,這個就是控制反轉。(控制權交個了IOC容器)

依賴注入的意思就是:當我需要一個類對象,IOC容器給我們這個類對象的過程其實就是依賴注入,依賴注入有構造函數注入和屬性注入。

[官方]在 ASP.NET Core 依賴注入

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2

全面理解 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 時,想根據需要在一個項目中同時使用redis和sqlserver

ASP.NET Core 中多個接口對應同一個實現的正確姿勢

ASP.NET Core 依賴注入擴展庫 Scrutor

[OSharp]使用 IServiceProvider.GetService<T>() 實現按需注入,優化性能

七、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 中使用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());
}


八、ASP.NET Core WebAPI

創建ASP.NET Core Web API (ControllerBase、參數綁定源)

ASP.Net Core WebAPI 幾種版本控制對比

使用 Web API 約定

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

九、ASP.NET Core:MVC 與 Razor Pages

ASP.NET Core MVC 靜態文件目錄配置與訪問授權

新的 Razor 機制

https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/sdk?view=aspnetcore-2.2

  • 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 配置:預編譯,動態編譯,混合編譯

ASP.NET Core SignalR 入門

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio

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

十一、狀態管理

常見方式:Cookie、Session、TempData、查詢字符串、HttpContext.Items、緩存、依賴關係注入

ASP.NET Core 中的會話和應用狀態

1、session

ASP.NET Core 在通用數據保護條例規則下使用 session

ASP.NET Core 使用Redis存儲Session

2、cookie

ASP.NET Core SameSite 設置引起 Cookie 在 QQ 瀏覽器中不起作用

[github]ASP.NET Core CookieManager

https://github.com/nemi-chand/CookieManager

十二、通信

對比 gRPC 服務和 HTTP API 服務

1、HttpClient

ASP.NET Core HttpClient的演進和避坑

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

DotNetCore 使用Http請求及基於 Polly 的處理故障

DotNetCore 中 HttpClientFactory 類源碼分析

2、gRPC

ASP.NET Core 3.0 上的gRPC服務模板初體驗(多圖)

ASP.NET Core gRPC的配置

十三、發布部署

ASP.NET Core 使用 IIS 進行託管部署

ASP.NET Core 部署到 Linux 進行託管

ASP.NET Core 使用Supervisor進行託管部署

ASP.NET Core 使用Docker進行容器化託管

配置 ASP.NET Core 以使用代理伺服器和負載均衡器

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

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

十四、單元測試

.NET Core 和 .NET Standard 單元測試最佳做法

使用 dotnet test 和 xUnit 在 .NET Core 中進行 C# 單元測試

使用 dotnet test 和 NUnit 在 .NET Core 中進行 C# 單元測試

使用 dotnet test 和 MSTest 在 .NET Core 中進行 C# 單元測試

使用 dotnet test --filter 進行選擇性單元測試

over,謝謝查閱,覺得文章對你有收穫,請多幫推薦。歡迎提供更好的資料信息。

關鍵字: