欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET?6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景

 更新時間:2022年01月25日 13:01:42   作者:CODE4NOTHING  
這篇文章主要介紹了.NET?6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景,NET?6是一個很優(yōu)秀的框架,這一點(diǎn)自從我最開始接觸.NET?Core?2起一年一年進(jìn)化到現(xiàn)在,就深切地感受到,那好東西就拿出來和大家分享一下,下面來看一下文章的學(xué)習(xí)介紹吧

前言:

想到要寫這樣一個系列博客,初衷有兩個:一是希望通過一個實(shí)踐項目,將.NET 6 WebAPI開發(fā)的基礎(chǔ)知識串聯(lián)起來,幫助那些想要入門.NET 6服務(wù)端開發(fā)的朋友們快速上手,對使用.NET 6開發(fā)后端服務(wù)的技術(shù)全貌有一個基本的認(rèn)識和掌握,順便把自己的技能樹檢查一遍;二是希望為國內(nèi)的.NET環(huán)境有一些小小的幫助,最早我自己是做C#桌面應(yīng)用出身的,但是隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的繁盛和微軟早年間的固執(zhí),使得國內(nèi)的.NET開發(fā)環(huán)境收縮到幾個固定的領(lǐng)域,以致于很多人今天依然認(rèn)為C#和.NET不適合做大型的企業(yè)級應(yīng)用,這個觀念需要改變了。我無意比較技術(shù)和語言之間的好壞,只是更愿意看到國內(nèi)的技術(shù)環(huán)境也能呈現(xiàn)出百家爭鳴的狀態(tài)。經(jīng)過微軟這么多年的改變和進(jìn)步,.NET 6是一個很優(yōu)秀的框架,這一點(diǎn)自從我最開始接觸.NET Core 2起一年一年進(jìn)化到現(xiàn)在,就深切地感受到,那好東西就拿出來和大家分享一下。

1.列說明

在這個系列博客中,我將會使用.NET 6從頭開始一步一步開發(fā)一個TodoList單體應(yīng)用,在這個過程中盡可能將多的知識點(diǎn)獨(dú)立成每篇文章,最后將應(yīng)用通過Docker進(jìn)行打包,并使用GithubActionAzure Container Instance服務(wù)實(shí)現(xiàn)CI/CD。

選擇TodoList的原因是這個項目足夠簡單,但是也足夠去覆蓋我希望覆蓋到的知識點(diǎn),對于讀者來說,有以下一些建議的前置要求:

  • 需要會寫C#,不需要.NET (Core)相關(guān)的開發(fā)經(jīng)驗(yàn)。
  • 需要后端服務(wù)的開發(fā)經(jīng)驗(yàn),對基本的服務(wù)端相關(guān)特性有一定的認(rèn)識。
  • 有對Clean Architecture的基本理解。

2.系列導(dǎo)航

2.1 使用.NET 6開發(fā)TodoList應(yīng)用文章索引

附:.NET 6 Web API項目代碼上的變化

2.1.1創(chuàng)建項目

mkdir ProjectName && cd ProjectName
dotnet new sln -n SampleApi
dotnet new project -f net6.0 -n SampleApi -o SampleApi
dotnet sln SampleApi.sln add SampleApi/SampleApi.csproj
dotnet restore
dotnet run -p SampleApi/SampleApi.csproj

2.1.2.NET 6 WebAPI Program.cs的變更

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

2.1.3Change 1: Top-level statements

頂級聲明使得我們在編寫Program類時可以不用再定義該類,省略Main函數(shù)定義,直接開始寫方法體。編譯器會在編譯階段為我們自動加上命名空間和相關(guān)定義。

2.1.4Change 2: Implicit using directives

隱式using指令是編譯器根據(jù)項目類型,在編譯階段自動生成一個名為CompanyEmployees.GlobalUsings.g.cs的文件,

內(nèi)容如下:

// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;


也可以在CompanyEmployees.csproj工程配置文件中修改以下屬性,禁用全局隱式using指令這一特性:

<!-- <ImplicitUsings>enable</ImplicitUsings> -->
<ImplicitUsings>disable</ImplicitUsings>


2.1.5Change 3: No Startup class

到了.NET 6,陪伴我們好幾個版本至今的ConfigureServices and Configure方法終于消失了,取而代之的是這兩部分的配置都集中在了Program.cs中。曾經(jīng)寫過.NET Core WebAPI的小伙伴不難看出來現(xiàn)在應(yīng)該寫在哪里。

對于一些大型項目來說,這兩部分我們肯定不能就這樣寫在Program.cs里面,后面將會想辦法把這兩部分單獨(dú)拆開進(jìn)行配置。

當(dāng)然,老版本的含有Startup.cs的項目在.NET 6下打開沒有任何問題。

2.2 關(guān)于Pipeline的一些知識點(diǎn)

2.2.1Pipeline Sequence

  • ExceptionHandler
  • HSTS
  • HttpsRedirection
  • Static Files
  • Routing
  • CORS
  • Authentication
  • Authorization
  • Custom Middlewares
  • Endpoint Configuration

2.2.2app.Run和app.Use

app.Run用于終止Pipeline的鏈?zhǔn)秸{(diào)用并向客戶端返回

public static void Run(this IApplicationBuilder app, RequestDelegate handler);
public delegate Task RequestDelegate(HttpContext context);


app.Use用于向Pipeline中插入一段邏輯作為鏈?zhǔn)秸{(diào)用的其中一個環(huán)節(jié)

public static IApplicationBuilder Use(this IApplicationBuilder app, Func<HttpContext,
Func<Task>, Task> middleware);


2.2.3app.Map和app.MapWhen

這兩個方法都是用于在middleware的鏈?zhǔn)秸{(diào)用中進(jìn)行分支Pipeline調(diào)用鏈處理。

public static IApplicationBuilder Map(this IApplicationBuilder app, PathString
pathMatch, Action<IApplicationBuilder> configuration)
  
public static IApplicationBuilder MapWhen(this IApplicationBuilder app,
Func<HttpContext, bool> predicate, Action<IApplicationBuilder> configuration)


app.MapGet、app.MapPost、app.MapPut、app.Delete、app.MapMethods

在.NET 6中一個新增的特性叫做Minimal APIs,允許應(yīng)用程序以這種形式響應(yīng)客戶端的請求,在快速構(gòu)建微服務(wù)應(yīng)用的過程中十分好用,在這個系列里,因?yàn)闃?gòu)建的是一個單體應(yīng)用,這部分知識點(diǎn)我打算放到第二個系列關(guān)于微服務(wù)開發(fā)實(shí)踐中去,看有沒有更合適的場景去展示。

到此這篇關(guān)于.NET 6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景的文章就介紹到這了,更多相關(guān)NET 6開發(fā)TodoList實(shí)現(xiàn)系列背景內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論