.Net 6简介并和之前版本写法的对比是怎样的
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,.Net 6简介并和之前版本写法的对比是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。介绍vs2022正式版已经推出了,估计很
千家信息网最后更新 2025年01月16日.Net 6简介并和之前版本写法的对比是怎样的
.Net 6简介并和之前版本写法的对比是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
介绍
vs2022正式版已经推出了,估计很多人已经下载并开始创建.Net 6 开始尝鲜了, 本节我简要的给大家介绍一下.Net 6的一些改动。
正文
本次.Net6带来最明显的变化就是:
采用顶级语句,我们看不到
Program.Main()
了。隐式 using 指令,隐式 using 指令意味着编译器会根据项目类型自动添加一组 using 指令。
移除了Startup文件。
var builder = WebApplication.CreateBuilder(args);var app = builder.Build();app.Run();
对于这样的改动大家可能会觉得这是C# 10 带来的优化,但我的理解是.Net6为了新手更加方便入门,早期我们使用.Net Core 2/3/5 版本,还要给新人解释系统启动入口Program.Main()
以后不需要了,配置拆分成两个文件Program.cs和Startup.cs虽然做到了关注点分离,但是对于新人会难以理解这次也没了,当我们讨论Startup的时候不用在去解释如何调用的2个约定方法,即使它们没有显式实现接口,也可以调用它们。
我们来看一下之前的语法,我们有一大堆嵌套的 lambda,代码看上去非常复杂。
var hostBuilder = Host.CreateDefaultBuilder(args) .ConfigureServices(services => { services.AddControllers(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.Configure((ctx, app) => { if (ctx.HostingEnvironment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", () => "Hello World!"); endpoints.MapRazorPages(); }); }); }); hostBuilder.Build().Run();
升级到.Net 6之后,我们可以使用更简单的 API 来实现。
var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllers();var app = builder.Build();app.MapGet("/", () => "Hello World!");app.Run();
对比
我们将 2个版本的语法对比来看
向DI 容器添加服务
var hostBuilder = Host.CreateDefaultBuilder(args);hostBuilder.ConfigureServices(services => { services.AddControllers(); services.AddSingleton(); })var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllers();builder.Services.AddSingleton ();
日志记录
var hostBuilder = Host.CreateDefaultBuilder(args);hostBuilder.ConfigureLogging(builder => { builder.AddFile(); })var builder = WebApplication.CreateBuilder(args);builder.Logging.AddFile();
Serilog 集成
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() // <-- Add this line .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); });builder.Host.UseSerilog();
完成的来看效果
public interface IHelloService { string Hello(bool isHappy); } public class HelloService : IHelloService { public string Hello(bool isHappy) { var hello = $"Hello World"; if (isHappy) return $"{hello}, you seem to be happy today"; return hello; } }using MinimalApiDemo;using System.Security.Claims;var builder = WebApplication.CreateBuilder(args);builder.Services.AddScoped();// Add services to the container.builder.Services.AddControllers();// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbucklebuilder.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.MapGet("/Hello", (bool? isHappy, IHelloService service) =>{ if (isHappy is null) return Results.BadRequest("Please tell if you are happy or not :-)"); return Results.Ok(service.Hello((bool)isHappy));});app.Run();
关于.Net 6简介并和之前版本写法的对比是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
版本
指令
问题
写法
简介
文件
新人
方法
更多
语法
帮助
解答
解释
复杂
明显
易行
简单易行
不用
两个
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库中视图的概念和优点
数据库系统教程习题及答案
上海游戏软件开发的服务哪里好
ssh框架数据库连接
数据开发和软件开发的区别
网络安全法的处罚规定
web服务器安全管理制度
学生网络安全保护宣传活动
公司服务器连接老是中断
安徽服务器机柜规格
网络安全苗头
深圳环境监测软件开发多少钱
中国未来网络安全会怎么发展
第一次读串口少数据库
javamysql数据库结构
太原政务软件开发公司
手机上网如何设置网络安全密码
近年来网络安全形势和政策
重庆嵌入式软件开发如何收费
数据库插入记录实验
狠抓网络安全教育
沈阳android软件开发流程
2018年的网络安全问题
南通朗涯互联网科技有限公司
郑州个人存储服务器
安徽镜头软件开发
武汉dell服务器多少钱
网络安全几区可以插优盘
软件开发工程师平均年龄
8e数据库