浅讲。净额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