浅讲.Net 6 并与之前版本写法对比

技术浅讲.Net 6 并与之前版本写法对比 浅讲.Net 6 并与之前版本写法对比介绍
昨天vs2022正式版已经推出了,估计很多人已经下载并开始创建.Net 6 开始尝鲜了, 本节我简要的给大家介绍一

浅讲。净额6并与之前版本写法对比

介绍

昨天vs2022正式版已经推出了,估计很多人已经下载并开始创建。净额6开始尝鲜了,本节我简要的给大家介绍一下。净额6的一些改动。

正文

本次。Net6带来最明显的变化就是:

采用顶级语句,我们看不到程序。主()了。

隐式使用指令,隐式使用指令意味着编译器会根据项目类型自动添加一组使用指令。

移除了启动文件。

var builder=WebApplication .创建生成器(参数);

var app=builder .build();

应用程序.run();

对于这样的改动大家可能会觉得这是C# 10带来的优化,但我的理解是。Net6为了新手更加方便入门,早期我们使用。核心净额2/3/5版本,还要给新人解释系统启动入口程序。主()以后不需要了,配置拆分成两个文件Program.cs和Startup.cs虽然做到了关注点分离,但是对于新人会难以理解这次也没了,当我们讨论启动的时候不用在去解释如何调用的2个约定方法,即使它们没有显式实现接口,也可以调用它们。

我们来看一下之前的语法,我们有一大堆嵌套的,代码看上去非常复杂。

var hostBuilder=主机CreateDefaultBuilder(参数)。配置服务(服务=

{

服务AddControllers();

})。配置网络主机默认值(网络构建器=

{

网络构建器.配置((ctx,app)=

{

if (ctx .托管环境。is development())

{

应用程序.usedeveloper异常页();

}

应用程序.UseStaticFiles();

应用程序.UseRouting();

应用程序.使用端点(端点=

{

端点. MapGet(‘/’,()=’Hello World!’);

端点. MapRazorPages();

});

});

});

主机构建器.构建()。run();

升级到。净额6之后,我们可以使用更简单的应用程序接口来实现。

var builder=WebApplication .创建生成器(参数);

建筑商。服务。添加控制器();

var app=builder .build();

应用程序.MapGet(‘/’,()=’Hello World!’);

应用程序.run();

对比

我们将2个版本的语法对比来看

向DI 容器添加服务

var hostBuilder=主机createDefaultBuilder(args);

主机构建器.配置服务(服务=

{

服务AddControllers();

服务AddSingletonMyThingy();

})

var builder=WebApplication .创建生成器(参数);

建筑商。服务。添加控制器();

建筑商服务。AddSingletonMyThingy();

日志记录

var hostBuilder=主机createDefaultBuilder(args);

主机构建器.配置日志记录(生成器=

{

建筑商AddFile();

})

var builder=WebApplication .创建生成器(参数);

建筑商日志记录。AddFile();

Serilog 集成

公共静态IHostBuilder CreateHostBuilder(字符串[]参数)=

主持人CreateDefaultBuilder(参数)。UseSerilog()///-添加此行。配置网络主机默认值(网络构建器=

{

网络构建器.UseStartupStartup();

});

建筑商主持人。UseSerilog();

完成的来看效果

公共接口IHelloService

{

字符串你好(bool Ishappy);

}

公共类HelloService : IHelloService

{

公共字符串你好(bool isHappy)

{

var hello=$ ‘ Hello World

if (isHappy)

返回$'{hello},你今天好像很开心;

回报你好;

}

}

使用MinimalApiDemo

使用系统。安全。索赔;

var builder=WebApplication .创建生成器(参数);

建筑商服务。AddScopedIHelloService,hello service();

//向容器中添加服务。

建筑商。服务。添加控制器();

//了解更多关于在https://aka.ms/aspnetcore/swashbuckle配置swag/OpenAPI的信息

建筑商服务。AddEndpointsApiExplorer();

建筑商服务。AddSwaggerGen();

var app=builder .build();

//配置超文本传送协议请求管道。

if (app .环境。IsDevelopment())

{

应用程序.useswaggle();

应用程序.UseSwaggerUI();

}

应用程序.usehttpredirection();

应用程序.UseAuthorization();

应用程序.MapControllers();

应用程序.MapGet(‘/Hello ‘,(bool isHappy,IHelloService service)=

{

如果(isHappy为空)

返回结果’ BadRequest(‘请告诉我你是否快乐:-)’);

返回结果。好的(服务。你好((bool)Ishappy));

});

应用程序.run();

结语

效果我就不贴图了大家自己去实验一下吧,后面看情况如果有时间我会给大家更一篇网应用程序和WebApplicationBuilder的深入解析。

最后欢迎各位读者关注我的博客,https://github.com/MrChuJiu/Dppt/tree/master/src欢迎大家星星

联系作者:加群:867095512 @MrChuJiu

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81986.html

(0)

相关推荐

  • 动态初始化和静态初始化的区别(如何解决项目启动时初始化资源)

    技术中项目启动时实现初始化方法的加载参数是什么中项目启动时实现初始化方法的加载参数是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。spr

    攻略 2021年12月21日
  • 怎么优化JS代码

    技术怎么优化JS代码这篇文章主要讲解了“怎么优化JS代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么优化JS代码”吧!1、字符串的拼接 字符串的拼接在我们开发中会经

    攻略 2021年11月18日
  • 圣诞节应该送什么礼物,圣诞送什么好

    技术圣诞节应该送什么礼物,圣诞送什么好圣诞送什么礼物给女朋友每次过节都不知道应该给女友买什么,总是想把最好的送给她,却无从找寻最好的礼物圣诞节应该送什么礼物。不知道这个圣诞大家是不是也有这样的困惑——“圣诞送什么礼物给女

    生活 2021年10月25日
  • 如何理解Spring启动过程

    技术如何理解Spring启动过程这篇文章主要介绍“如何理解Spring启动过程”,在日常操作中,相信很多人在如何理解Spring启动过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理

    攻略 2021年10月20日
  • 野蛮生长的电子烟凛冬将至

    技术野蛮生长的电子烟凛冬将至 野蛮生长的电子烟凛冬将至11月26日,随着相关“烟草专卖法实施条例”的修改,电子烟正式纳入烟草管理规定。就在不久前,国家卫健委等8部门联合印发了《关于进一步加强青少年控烟工

    礼包 2021年11月30日
  • spring security csrf 认证控制(springboot如何关掉csrf)

    技术如何分析Spring对CSRF的防范这篇文章将为大家详细讲解有关如何分析Spring对CSRF的防范,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是 CSRF跨站

    攻略 2021年12月16日