电竞比分网-中国电竞赛事及体育赛事平台

分享

.NET Core 學(xué)習(xí)資料精選:入門

 蘭亭文藝 2019-08-09

作者:滴答的雨

鏈接:https://www.cnblogs.com/heyuquan/p/dotnet-basic-learning-resource.html

開(kāi)源跨平臺(tái)的.NET Core,還沒(méi)上車的趕緊的,來(lái)不及解釋了……

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

我進(jìn)行了知識(shí)點(diǎn)歸類,讓大家可以更清晰的學(xué)習(xí).NET Core。

首先感謝資料原作者的貢獻(xiàn)。

第一篇:.NET Core 學(xué)習(xí)資料精選:入門

介紹.NET歷史、開(kāi)源之路、基礎(chǔ)、路由、依賴注入、HttpContext、cookie|session、HttpClient、gRPC、單元測(cè)試、發(fā)布部署等等。

第二篇:.NET Core 學(xué)習(xí)資料精選:進(jìn)階&高級(jí)

這是第一篇,知識(shí)點(diǎn)如圖:

一、.NET 簡(jiǎn)介

1、.NET 開(kāi)源之路

.NET FrameWork發(fā)展史

C# 語(yǔ)言版本發(fā)展史

2014.11月 .NET Core 項(xiàng)目啟動(dòng),2016.06月 .NET Core 1.0 發(fā)布

微軟 .NET Core3.0 規(guī)劃藍(lán)圖

.NET Core 3.0 下一個(gè)版本命名為:.NET 5

2、.NET Core提供的特性

1、開(kāi)源、免費(fèi)

2、輕量級(jí)、跨平臺(tái)

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

4、高性能

5、統(tǒng)一了MVC和WebAPI編程模型

  • 比如:ASP.NET Core 中MVC 和Web API 直接或間接繼承同一個(gè)基類 ControllerBase,提供可使用的API也一致化

  • 比如:舊ASP.NET時(shí)代,寫(xiě)全局filter需要針對(duì)MVC 和Web API 分別編寫(xiě)代碼,但在ASP.NET Core,直接使用一套中間件代碼即可

6、可測(cè)試性

7、微服務(wù)、容器化支持

8、標(biāo)準(zhǔn)化 .NET API 規(guī)范- .NET STANDARD

3、遷移到.NET Core

目前市面上還存在很多傳統(tǒng) .NET 舊項(xiàng)目,我們需要根據(jù)公司情況決定是否升級(jí)到.NET Core。

如果需要進(jìn)行舊項(xiàng)目升級(jí)的,可以參考文章:《.NET項(xiàng)目遷移到.NET Core操作指南》https://www.cnblogs.com/heyuquan/p/dotnet-migration-to-dotnetcore.html

二、VS 和 .NET Core安裝

VS 2019安裝教學(xué)

VS 2019正式版注冊(cè)碼秘鑰

安裝 .NET CoreRuntime 和.NET Core SDK

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

指定要使用的 .NET Core 版本

如何刪除 .NET Core 過(guò)時(shí)的運(yùn)行時(shí)和 SDK

[坑]安裝 .Net Core 2.2 SDK后,VS2017依然不能設(shè)置core2.2為目標(biāo)框架

三、基礎(chǔ)

ASP.NET Core開(kāi)發(fā)者路線指南

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

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

.NET Core 運(yùn)行程序注意事項(xiàng)(dotnet dll 與 dotnet run)

ASP.NET Core API 一覽表

查詢 NET API 及類庫(kù)在各版本中實(shí)現(xiàn)情況

ASP.NET Core 項(xiàng)目目錄結(jié)構(gòu)介紹

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

ASP.NET Core 中的Startup類

ASP.NET Core 中使用多個(gè)環(huán)境(開(kāi)發(fā)、預(yù)發(fā)布、生產(chǎn))- 默認(rèn)為 Production

ASP.NET Core 動(dòng)作結(jié)果(ActionResult)

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

.NET Core 3.0 新的System.Text.JsonAPI

四、配置

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

ASP.NET Core 中的選項(xiàng)模式

.Net Core 自定義配置源從遠(yuǎn)程API讀取配置(ConfigurationProvider)

邁向現(xiàn)代化的 .Net 配置指北(配置到類自動(dòng)映射)

五、路由、模型綁定

ASP.NET Core WebAPI中,Controller標(biāo)注 [ApiController] 特性,其路由只能使用[route]特性方式

ASP.NET Core MVC 構(gòu)建可讀性更高的ASP.NET Core 路由

ASP.NET Core 中的模型綁定

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

ASP.NET Core 中的 URL 重寫(xiě)中間件

六、依賴注入(IOC、DI)

什么是控制反轉(zhuǎn),和依賴注入:

控制反轉(zhuǎn)的意思就是:平常我們需要一個(gè)類對(duì)象的時(shí)候需要new出來(lái),而現(xiàn)在我們把new一個(gè)類對(duì)象的工作交給了IOC容器,當(dāng)我們需要一個(gè)類對(duì)象的時(shí)候直接向IOC容器要,就可以了,這個(gè)就是控制反轉(zhuǎn)。(控制權(quán)交個(gè)了IOC容器)

依賴注入的意思就是:當(dāng)我需要一個(gè)類對(duì)象,IOC容器給我們這個(gè)類對(duì)象的過(guò)程其實(shí)就是依賴注入,依賴注入有構(gòu)造函數(shù)注入和屬性注入。

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

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

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

  • 官方推薦通過(guò)構(gòu)造函數(shù)。這也是所謂的顯式依賴。Asp.Net Core 的標(biāo)準(zhǔn)依賴注入容器不支持屬性注入。(可以使用autofac或者其他來(lái)實(shí)現(xiàn)屬性注入)

ASP.NET Core 中依賴注入的N種玩法

ASP.NET Core 自定義特性實(shí)現(xiàn)屬性注入

ASP.NET Core 原生DI實(shí)現(xiàn)批量注冊(cè)

  • 可以參考 OSharp 框架,設(shè)計(jì)三個(gè)全局注入接口,來(lái)實(shí)現(xiàn)自動(dòng)化注入:ISingletonDependency 和 ITransientDependency 、 IScopedDependency ( 單例、瞬時(shí)、范圍)。

ASP.NET Core 中如何注入同一個(gè)接口的多個(gè)實(shí)現(xiàn)

  • 案例1:使用nlog時(shí),想根據(jù)需要使用不同的配置文件Nlog.config 寫(xiě)日志時(shí),就可以使用文章中介紹的 Factory 命名注入方案來(lái)實(shí)現(xiàn)

  • 案例2:使用分布式緩存 IDistributedCache 時(shí),想根據(jù)需要在一個(gè)項(xiàng)目中同時(shí)使用redis和sqlserver

ASP.NET Core 中多個(gè)接口對(duì)應(yīng)同一個(gè)實(shí)現(xiàn)的正確姿勢(shì)

ASP.NET Core 依賴注入擴(kuò)展庫(kù) Scrutor

[OSharp]使用 IServiceProvider.GetService<T>() 實(shí)現(xiàn)按需注入,優(yōu)化性能

七、ASP.NET Core 集合 Autofac 的使用

AutoFac三種注入方式:按類型、按名稱、按鍵

ASP.NET Core 2.0 之旅---AutoFacIOC容器的使用教程

ASP.NET Core 2.0 之旅---AutoFac倉(cāng)儲(chǔ)泛型的依賴注入(泛型注入)

ASP.NET Core 2.0 之旅---數(shù)據(jù)訪問(wèn)倉(cāng)儲(chǔ)模式的事務(wù)管理(uow+rp)

ASP.NET Core 中使用Autofac實(shí)現(xiàn)屬性注入的代碼片段

public IServiceProvider ConfigureServices(IServiceCollection services)
{
// 第一步:替換系統(tǒng)默認(rèn)Controller創(chuàng)建器(否則Controller下面無(wú)法使用屬性注入)
// 在 services.AddMvc() 之前
services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
services.AddMvc();

var builder = new ContainerBuilder();


// 第二步:找到所有Controller的類型
// 通過(guò)Autofac對(duì)Controller類型進(jìn)行屬性注冊(cè) 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

創(chuàng)建ASP.NET Core Web API (ControllerBase、參數(shù)綁定源)

ASP.Net Core WebAPI 幾種版本控制對(duì)比

使用 Web API 約定

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

九、ASP.NET Core:MVC 與 Razor Pages

ASP.NET Core MVC 靜態(tài)文件目錄配置與訪問(wèn)授權(quán)

新的 Razor 機(jī)制 

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

  • ASP.NET Core Razor SDK

  • ASP.NET Core 的 Razor 語(yǔ)法參考

  • ASP.NET Core 中的 Razor 頁(yè)面介紹(OnGet、OnPost、單頁(yè)多Handler方式)

  • ASP.NET Core 中 Razor 頁(yè)面的IPageFilter

  • ASP.NET Core 中 Razor 頁(yè)面的路由和應(yīng)用約定

  • ASP.NET Core Razor 配置:預(yù)編譯,動(dòng)態(tài)編譯,混合編譯

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頁(yè)面 vs MVC

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

  • ASP.NET Core Razor頁(yè)面簡(jiǎn)化了 ASP.NET MVC 應(yīng)用程序

十、HttpContext

ASP.NET Core 中訪問(wèn) HttpContext 的方法

ASP.NET Core 中通過(guò)IHttpContextAccessor實(shí)現(xiàn)公用靜態(tài)HttpContext

十一、狀態(tài)管理

常見(jiàn)方式:Cookie、Session、TempData、查詢字符串、HttpContext.Items、緩存、依賴關(guān)系注入

ASP.NET Core 中的會(huì)話和應(yīng)用狀態(tài)

1、session

ASP.NET Core 在通用數(shù)據(jù)保護(hù)條例規(guī)則下使用 session

ASP.NET Core 使用Redis存儲(chǔ)Session

2、cookie

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

[github]ASP.NET Core CookieManager

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

十二、通信

對(duì)比 gRPC 服務(wù)和 HTTP API 服務(wù)

1、HttpClient

ASP.NET Core HttpClient的演進(jìn)和避坑

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

DotNetCore 使用Http請(qǐng)求及基于 Polly 的處理故障

DotNetCore 中 HttpClientFactory 類源碼分析

2、gRPC

ASP.NET Core 3.0 上的gRPC服務(wù)模板初體驗(yàn)(多圖)

ASP.NET Core gRPC的配置

十三、發(fā)布部署

ASP.NET Core 使用 IIS 進(jìn)行托管部署

ASP.NET Core 部署到 Linux 進(jìn)行托管

ASP.NET Core 使用Supervisor進(jìn)行托管部署

ASP.NET Core 使用Docker進(jìn)行容器化托管

配置 ASP.NET Core 以使用代理服務(wù)器和負(fù)載均衡器

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

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

十四、單元測(cè)試

.NET Core 和 .NET Standard 單元測(cè)試最佳做法

使用 dotnet test 和 xUnit 在 .NET Core 中進(jìn)行 C# 單元測(cè)試

使用 dotnet test 和 NUnit 在 .NET Core 中進(jìn)行 C# 單元測(cè)試

使用 dotnet test 和 MSTest 在 .NET Core 中進(jìn)行 C# 單元測(cè)試

使用 dotnet test --filter 進(jìn)行選擇性單元測(cè)試

over,謝謝查閱,覺(jué)得文章對(duì)你有收獲,請(qǐng)多幫推薦。歡迎提供更好的資料信息。


編號(hào)349,輸入編號(hào)直達(dá)本文

●輸入m獲取文章目錄

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多