#、.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操做指南》
安裝 .NET Core Runtime 和.NET Core SDK
【微軟官方文檔】ASP.NET Core *.* 個版本新特性
[坑]安裝 .Net Core 2.2 SDK後,VS2017依然不能設置core2.2爲目標框架
.NET Core 運行程序注意事項(dotnet dll 與 dotnet run)
ASP.NET Core 中使用多個環境(開發、預發佈、生產)- 默認爲 Production
ASP.NET Core 動做結果(ActionResult)
ASP.NET Core 中控制器操做的多路徑返回類型(IActionResult)
.NET Core 3.0 新的System.Text.JsonAPI
ASP.NET Core 中的配置(json、xml、命令行、環境變量、內存變量等)
.Net Core 自定義配置源從遠程API讀取配置(ConfigurationProvider)
ASP.NET Core WebAPI中,Controller標註 [ApiController] 特性,其路由只能使用[route]特性方式
ASP.NET Core MVC 構建可讀性更高的ASP.NET Core 路由
ASP.NET Core 中的自定義模型綁定(IModelBinder)
什麼是控制反轉,和依賴注入:
控制反轉的意思就是:日常咱們須要一個類對象的時候須要new出來,而如今咱們把new一個類對象的工做交給了IOC容器,當咱們須要一個類對象的時候直接向IOC容器要,就能夠了,這個就是控制反轉。(控制權交個了IOC容器)
依賴注入的意思就是:當我須要一個類對象,IOC容器給咱們這個類對象的過程其實就是依賴注入,依賴注入有構造函數注入和屬性注入。
官方推薦經過構造函數。這也是所謂的顯式依賴。Asp.Net Core 的標準依賴注入容器不支持屬性注入。(能夠使用autofac或者其餘來實現屬性注入)
能夠參考 OSharp 框架,設計三個全局注入接口,來實現自動化注入:ISingletonDependency 和 ITransientDependency 、 IScopedDependency ( 單例、瞬時、範圍)。
案例1:使用nlog時,想根據須要使用不一樣的配置文件Nlog.config 寫日誌時,就能夠使用文章中介紹的 Factory 命名注入方案來實現
案例2:使用分佈式緩存 IDistributedCache 時,想根據須要在一個項目中同時使用redis和sqlserver
ASP.NET Core 中多個接口對應同一個實現的正確姿式
[OSharp]使用 IServiceProvider.GetService<T>() 實現按需注入,優化性能
#、ASP.NET Core 集合 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 Web API (ControllerBase、參數綁定源)
ASP.NET Core MVC 靜態文件目錄配置與訪問受權
新的 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 Core 2.0中的Razor Page不是WebForm
ASP.NET Core Razor頁面簡化了 ASP.NET MVC 應用程序
ASP.NET Core 中訪問 HttpContext 的方法
ASP.NET Core 中經過IHttpContextAccessor實現公用靜態HttpContext
常見方式:Cookie、Session、TempData、查詢字符串、HttpContext.Items、緩存、依賴關係注入
#、session
ASP.NET Core 在通用數據保護條例規則下使用 session
#、cookie
ASP.NET Core SameSite 設置引發 Cookie 在 QQ 瀏覽器中不起做用
[github]ASP.NET Core CookieManager
#、HttpClient
ASP.NET Core HttpClient的各類用法、生命週期管理
DotNetCore 使用Http請求及基於 Polly 的處理故障
DotNetCore 中 HttpClientFactory 類源碼分析
#、gRPC
ASP.NET Core 3.0 上的gRPC服務模板初體驗(多圖)
ASP.NET Core 使用Supervisor進行託管部署
配置 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# 單元測試