.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

相關文章
相關標籤/搜索