这篇文章主要介绍“.NET 6开发TodoList应用怎么实现”,在日常操作中,相信很多人在.NET 6开发TodoList应用怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.NET 6开发TodoList应用怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1.列说明
选择TodoList的原因是这个项目足够简单,但是也足够去覆盖我希望覆盖到的知识点,对于读者来说,有以下一些建议的前置要求:
需要会写C#,不需要.
NET (Core)
相关的开发经验。需要后端服务的开发经验,对基本的服务端相关特性有一定的认识。
有对
Clean Architecture
的基本理解。
2.系列导航
2.1 使用.NET 6开发TodoList应用文章索引
附:.NET 6 Web API项目代码上的变化
2.1.1创建项目
mkdir ProjectName && cd ProjectNamedotnet new sln -n SampleApidotnet new project -f net6.0 -n SampleApi -o SampleApidotnet sln SampleApi.sln add SampleApi/SampleApi.csprojdotnet restoredotnet 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函数定义,直接开始写方法体。编译器会在编译阶段为我们自动加上命名空间和相关定义。
2.1.4Change 2: Implicit using directives
隐式using
指令是编译器根据项目类型,在编译阶段自动生成一个名为CompanyEmployees.GlobalUsings.g.cs
的文件,
内容如下:
// <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
中。曾经写过.NET Core WebAPI
的小伙伴不难看出来现在应该写在哪里。
对于一些大型项目来说,这两部分我们肯定不能就这样写在Program.cs
里面,后面将会想办法把这两部分单独拆开进行配置。
当然,老版本的含有Startup.cs
的项目在.NET 6下打开没有任何问题。
2.2 关于Pipeline的一些知识点
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
的链式调用并向客户端返回
public static void Run(this IApplicationBuilder app, RequestDelegate handler);public delegate Task RequestDelegate(HttpContext context);
app.Use
用于向Pipeline
中插入一段逻辑作为链式调用的其中一个环节
public static IApplicationBuilder Use(this IApplicationBuilder app, Func<HttpContext,Func<Task>, Task> middleware);
2.2.3app.Map和app.MapWhen
这两个方法都是用于在middleware
的链式调用中进行分支Pipeline
调用链处理。
public static IApplicationBuilder Map(this IApplicationBuilder app, PathStringpathMatch, 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
,允许应用程序以这种形式响应客户端的请求,在快速构建微服务应用的过程中十分好用,在这个系列里,因为构建的是一个单体应用,这部分知识点我打算放到第二个系列关于微服务开发实践中去,看有没有更合适的场景去展示。
到此,关于“.NET 6开发TodoList应用怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!