DotNetCore知識棧

 

#、.NET Core提供的特性html

1.開源、免費linux

2.輕量級、跨平臺nginx

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

4.高性能github

5.統一了MVC和WebAPI編程模型web

a)  好比:ASP.NET Core 中MVC 和Web API 直接或間接繼承同一個基類 ControllerBase,提供可以使用的API也一致化redis

b)  好比:舊ASP.NET時代,寫全局filter須要針對MVC 和Web API 分別編寫代碼,但在ASP.NET Core,直接使用一套中間件代碼便可sql

6.可測試性apache

7.微服務、容器化支持編程

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

 

#、遷移到.NET Core

目前市面上還存在不少傳統 .NET 舊項目,咱們須要根據公司狀況決定是否升級到.NET Core。

若是須要進行舊項目升級的,能夠參考文章:《.NET項目遷移到.NET Core操做指南

 

VS和.NET Core安裝

VS2019安裝教學

VS2019正式版註冊碼祕鑰

安裝 .NET Core Runtime 和.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 教程文檔

.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 依賴注入

全面理解 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實現屬性注入的代碼片斷

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
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 機制

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 入門

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 中的會話和應用狀態

#、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 服務

#、HttpClient

ASP.NET Core HttpClient的演進和避坑

ASP.NET Core HttpClient的各類用法、生命週期管理

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

DotNetCore 中 HttpClientFactory 類源碼分析

#、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 進行選擇性單元測試

相關文章
相關標籤/搜索