广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.NET 6开发TodoList应用实现系列背景
  • 389
分享到

.NET 6开发TodoList应用实现系列背景

2024-04-02 19:04:59 389人浏览 八月长安
摘要

目录1.列说明2.系列导航2.1 使用.NET 6开发TodoList应用文章索引2.1.1创建项目2.1.2.net 6 webapi Program.cs的变更2.1.3Chan

前言:

想到要写这样一个系列博客,初衷有两个:一是希望通过一个实践项目,将.NET 6 WEBapi开发的基础知识串联起来,帮助那些想要入门.NET 6服务端开发的朋友们快速上手,对使用.NET 6开发后端服务的技术全貌有一个基本的认识和掌握,顺便把自己的技能树检查一遍;二是希望为国内的.NET环境有一些小小的帮助,最早我自己是做C#桌面应用出身的,但是随着互联网产业的繁盛和微软早年间的固执,使得国内的.NET开发环境收缩到几个固定的领域,以致于很多人今天依然认为C#和.NET不适合做大型的企业级应用,这个观念需要改变了。我无意比较技术和语言之间的好坏,只是更愿意看到国内的技术环境也能呈现出百家争鸣的状态。经过微软这么多年的改变和进步,.NET 6是一个很优秀的框架,这一点自从我最开始接触.Net Core 2起一年一年进化到现在,就深切地感受到,那好东西就拿出来和大家分享一下。

1.列说明

在这个系列博客中,我将会使用.NET 6从头开始一步一步开发一个TodoList单体应用,在这个过程中尽可能将多的知识点独立成每篇文章,最后将应用通过Docker进行打包,并使用GitHubActionAzure Container Instance服务实现CI/CD。

选择TodoList的原因是这个项目足够简单,但是也足够去覆盖我希望覆盖到的知识点,对于读者来说,有以下一些建议的前置要求:

  • 需要会写C#,不需要.NET (Core)相关的开发经验。
  • 需要后端服务的开发经验,对基本的服务端相关特性有一定的认识。
  • 有对Clean Architecture的基本理解。

2.系列导航

2.1 使用.NET 6开发TodoList应用文章索引

附:.NET 6 Web API项目代码上的变化

2.1.1创建项目


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函数定义,直接开始写方法体。编译器会在编译阶段为我们自动加上命名空间和相关定义。

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, 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,允许应用程序以这种形式响应客户端的请求,在快速构建微服务应用的过程中十分好用,在这个系列里,因为构建的是一个单体应用,这部分知识点我打算放到第二个系列关于微服务开发实践中去,看有没有更合适的场景去展示。

到此这篇关于.NET 6开发TodoList应用实现系列背景的文章就介绍到这了,更多相关NET 6开发TodoList实现系列背景内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: .NET 6开发TodoList应用实现系列背景

本文链接: https://www.lsjlt.com/news/160933.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .NET 6开发TodoList应用实现系列背景
    目录1.列说明2.系列导航2.1 使用.NET 6开发TodoList应用文章索引2.1.1创建项目2.1.2.NET 6 WebAPI Program.cs的变更2.1.3Chan...
    99+
    2022-11-12
  • .NET 6开发TodoList应用怎么实现
    这篇文章主要介绍“.NET 6开发TodoList应用怎么实现”,在日常操作中,相信很多人在.NET 6开发TodoList应用怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.NE...
    99+
    2023-06-22
  • .NET 6开发TodoList应用之实现Repository模式
    目录需求目标原理和思路实现通用Repository实现引入使用验证总结参考资料需求 经常写CRUD程序的小伙伴们可能都经历过定义很多Repository接口,分别做对应的实现,依赖注...
    99+
    2022-11-12
  • .NET 6开发TodoList应用怎么实现查询排序
    这篇文章主要讲解了“.NET 6开发TodoList应用怎么实现查询排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.NET 6开发TodoList应用怎么实现查询排序...
    99+
    2023-06-22
  • .NET 6开发TodoList应用之如何实现PUT请求
    这篇文章将为大家详细讲解有关.NET 6开发TodoList应用之如何实现PUT请求,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求PUT请求本身其实可说的并不多,过程也和创建基本类似。在这篇...
    99+
    2023-06-22
  • .NET 6开发TodoList应用怎么实现数据塑形
    这篇文章主要介绍“.NET 6开发TodoList应用怎么实现数据塑形”,在日常操作中,相信很多人在.NET 6开发TodoList应用怎么实现数据塑形问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-22
  • .NET 6开发TodoList应用之使用MediatR实现POST请求
    目录需求目标原理与思路CQRS模式中介者Mediator模式MediatR实现引入MediatR实现Post请求验证创建TodoList验证创建TodoItem验证总结参考资料需求 ...
    99+
    2022-11-12
  • .NET 6开发TodoList应用中如何实现全局异常处理
    本篇文章为大家展示了.NET 6开发TodoList应用中如何实现全局异常处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。需求因为在项目中,会有各种各样的领域异常或系统异常被抛出来,那么...
    99+
    2023-06-22
  • .NET 6开发TodoList应用引入第三方日志库
    目录1.需求2.目标3.原理和思路4.实现4.1日志配置实现4.2主程序配置4.3注入使用5.验证1.需求 在我们项目开发的过程中,使用.NET 6自带的日志系统有时是不能满足实际...
    99+
    2022-11-12
  • .NET 6开发TodoList应用之实现DELETE请求与HTTP请求幂等性
    目录需求目标原理与思路实现验证总结需求 先说明一下关于原本想要去更新的PATCH请求的文章,从目前试验的情况来看,如果是按照.NET 6的项目结构(即只使用一个Program.cs完...
    99+
    2022-11-12
  • .NET 6开发TodoList应用中如何引入数据存储
    小编给大家分享一下.NET 6开发TodoList应用中如何引入数据存储,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一.需求作为后端CRUD程序员(bushi,数据存储是开发后端服务一个非常重要的组件。对我们的...
    99+
    2023-06-22
  • 怎么使用.NET 6开发TodoList应用引入数据存储
    本篇内容主要讲解“怎么使用.NET 6开发TodoList应用引入数据存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用.NET 6开发TodoList应用引入数据存...
    99+
    2023-06-22
  • .NET 6开发TodoList应用之请求日志组件HttpLogging介绍
    背景 因为在上篇演示Action Filter的时候可能是因为举的例子不够好,有小伙伴在评论区指出.NET 6新增加的特性可以实现在视图模型绑定之前允许记录Http请求日志的组件:H...
    99+
    2022-11-12
  • .NET 6开发TodoList应用中如何实现DELETE请求与HTTP请求幂等性
    本篇文章为大家展示了.NET 6开发TodoList应用中如何实现DELETE请求与HTTP请求幂等性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。需求先说明一下关于原本想要去更新的PAT...
    99+
    2023-06-22
  • .NET 6开发TodoList应用中如何引入第三方日志库
    这篇文章将为大家详细讲解有关.NET 6开发TodoList应用中如何引入第三方日志库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.需求在我们项目开发的过程中,使用.NET 6自带的日志系统...
    99+
    2023-06-22
  • 使用.NET 6开发TodoList应用之领域实体创建原理和思路
    需求 上一篇文章中我们完成了数据存储服务的接入,从这一篇开始将正式进入业务逻辑部分的开发。 首先要定义和解决的问题是,根据TodoList项目的需求,我们应该设计怎样的数据实体,如何...
    99+
    2022-11-12
  • 使用.NET 6开发TodoList应用之引入数据存储的思路详解
    目录需求目标原理和思路实现1. 引入Nuget包并进行配置2. 添加DBContext对象并进行配置3. 配置文件修改4. 主程序配置5. 本地运行MSSQL Server容器及数据...
    99+
    2022-11-12
  • Android开发如何实现Launcher3应用列表修改透明背景
    小编给大家分享一下Android开发如何实现Launcher3应用列表修改透明背景,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:Launcher时开机完成后第一个启动的应用,用来展示应用列表和快捷方式、小部件等。...
    99+
    2023-05-30
    android launcher3
  • .NET6开发TodoList应用之实现ActionFilter
    目录需求目标原理与思路实现验证总结需求 Filter在.NET Web API项目开发中也是很重要的一个概念,它运行在执行MVC响应的Pipeline中执行,允许我们将一些可以在多个...
    99+
    2022-11-12
  • .NET6开发TodoList应用实现结构搭建
    目录1.TodoList需求简介2.开发工具2.1.NET 62.2Visual Studio Code2.3Hoppscotch3.Clean Architecture简介4.搭建...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作