前言:
想到要写这样一个系列博客,初衷有两个:一是希望通过一个实践项目,将.net 6 webapi开发的基础知识串联起来,帮助那些想要入门.net 6服务眼部小细纹端开发的朋友们快速上手,对使用.net 6开发后端服务的技术全貌有一个基本的认识和掌握,顺便把自己的技能树检查一遍;二是希望为国内的.net环境有一些小小的帮助,最早我自己是做c#桌面应用出身的,但是随着互联网产业的繁盛和微软早年间的固执,使得国内的.net开发环境收缩到几个固定的领域,以致于很多家庭教育活动方案人今天依然认为c#和.net不适合做大型的企业级应用,这个观念需要改变了。我无意比较技术和语言之间的好坏,只是更愿意看到国内的技术环境也能呈现出百家争鸣的状态。经过微软这么多年的改变和进步,.net 6是一个很优秀的框架,这一点自从我最开始接触.net core 2
起一年一年进化到现在,就深切地感受到,那好东西就拿出来和大家分享一下。
在这个系列博客中,我将会使用.net 6从头开始一步一步开发一个todolist
单体应用,在这个过程中尽可能将多的知识点独立成每篇文章,最后将应用通过docker
进行打包,并使用github
的action
和azure container instance
服务实现ci/cd。
选择todolist的原因是这个项目足够简单,但是也足够去覆盖我希望覆盖到的知识点,对于读者来说,有以下一些建议的前置要求:
需要会写c#,不需要.net (core)
相关的开发经验。需要后端服务的开发经验,对基本的服务端相关特性有一定的认识。有对clean architecture
的基本理解。附:.net 6 web api项目代码上的变化
李兰娟简介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
var builder = webapplication.createbuilder(args);// add rvices to the container.builder.rvices.addcontrollers();builder.rvices.addendpointsapiexplorer();builder.rvices.addswaggergen();var app = builder.build();// configure the http request pipeline.if (app.environment.isdevelopment()){ app.uswagger(); app.uswaggerui();}app.uhttpsredirection();app.uauthorization();app.mapcontrollers();app.run();
顶级声明使得我们在编写program
类时可以不用再定义该类,省略main函数定义,直接开始写方法体。编译器会在编译阶段为我们自动加上命名空间和相关定义。
隐式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>
到了.net 6,陪伴我们好几个版本至今的configurervices and ce等于onfigure
方法终于消失了,取而代之的是这两部分的配置都集中在了program.cs
中。曾经写过.net core webapi
的小伙伴不难看出来现在应该写在哪里。
对于一些大型项目来说,这两部分我们肯定不能就这样写在program.cs
里面,后面将会想办法把这两部分单独拆开进行配置。
当然,老版本的含有startup.cs
的项目在.net 6下打开没有任何问题。
app.run
用于终止pipeline
的链式调用并向客户端返回
public static void run(this iapplicationbuilder app, requestdelegate handler);public delegate task requestdelegate(httpcontext context);
app.u
用于向pipeline
中插入一段逻辑作为链式调用的其中一个环节
public static iapplicationbuilder u(this iapplicationbuilder app, func<httpcontext,func<task>, task> middleware);
这两个方法都是用于在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应用实现系列背景的文章就介绍到这了,更多相关net 6开发todolist实现系列背景内容请搜索www.88755孤独造句1.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 07:21:38,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/247ce77573e4abfb3ec6a87dc541702f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:.NET 6开发TodoList应用实现系列背景.doc
本文 PDF 下载地址:.NET 6开发TodoList应用实现系列背景.pdf
留言与评论(共有 0 条评论) |