原文:bit.ly/3wFqDy9.NET 6 预览版 4 现已发布 , 其中包括对 ASP.NET Core 的许多新改进 。
作者:Daniel
译者:王亮
下面是此次预览版中 ASP.NET Core 的更新内容:
- 引入最小 API
- 异步流
- HTTP 日志中间件
- 新项目中使用 Kestrel 作为默认启动
- IConnectionSocketFeature
- 改进单页应用程序(SPA)模板
- 更新了 .NET 热重载
- Razor 组件中的泛型约束
- Blazor 错误边界(error boundaries)
- Blazor WebAssembly 的 AOT 编译
- .NET MAUI Blazor 应用程序
- 其他性能改进
如果你在 windows 上使用 Visual Studio , 我们建议安装 Visual Studio 2019 16.11 的最新预览版 。如果你在 macOS 上 , 我们建议安装 Visual Studio 2019 for Mac 8.10 的最新预览版 。
升级一个现有的项目要将一个现有的 ASP.NET Core 应用程序从 .NET 6 Preview 3 升级到.NET 6 Preview 4 。
- 将所有 Microsoft.AspNetCore.* 引用包更新为 6.0.0-preview.4.* 。
- 更新所有 Microsoft.Extensions.* 引用包更新为 6.0.0-preview.4.* 。
引入最小 API在 .NET 6 中 , 我们为 Web 应用的托管和路由引入了最小 API 。这为使用 .NET 构建第一个 Web 应用程序以及想要构建小型微服务和 HTTP API 的开发者打开了大门 。这些精简的 API 提供了 ASP.NET MVC 的优点 。
要尝试创建一个最小 API , 请创建一个新的 ASP.NET Core 空 Web 应用 。
dotnet new web -o MinApi
只需一个文件和几行代码 , 你现在就有一个功能齐全的 HTTP API 。文章插图
【.NET 6 Preview 4 已发布,ASP.NET Core 更新内容】
新的路由 API新的路由 API 允许用户路由到任何类型的方法 。这些方法可以使用类似控制器的参数绑定、JSON 格式化和 Action 结果 。
之前(使用现有的 Map APIs):
App.MapGet("/", async httpContext =>{await httpContext.Response.WriteAsync("Hello World!");});
现在(使用新的 Map 重载):app.MapGet("/", (Func<string>)(() => "Hello World!"));
C# 10 的改进这些 API 已经利用了较新的 C# 特性 , 如顶层语句 。在今年晚些时候与 .NET 6 一起发布的 C# 10 中 , 体验将变得更好 。例如 , 不再需要明确地把类型转换成 (Func<string>) 。下面的图片展示了 C# 10 支持的特性:文章插图
开发者从使用类和方法到使用 lambda , 拥有和使用 MVC 控制器及属性操作一样的功能 。
新的托管(hosting) API新的空 Web 模板使用的是 .NET 6 Preview 4 中引入的新的托管模式 。
var app = WebApplication.Create(args);app.MapGet("/", (Func<string>)(() => "Hello World!"));app.Run();
你并不局限于只使用新的路由 API 。下面是一个 Web 应用程序的例子 , 它被更新为使用新的托管模式 , 配置服务和添加中间件 。using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Hosting;using Microsoft.OpenApi.Models;var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllers();builder.Services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "Api", Version = "v1" });});var app = builder.Build();if (app.Environment.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Api v1"));}app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();
新的托管 API 减少了配置和启动 ASP.NET 应用程序所需的模板数量 。性能这些新的路由 API 的开销比基于控制器的 API 少得多 。使用新的路由 API , ASP.NET Core 能够在 TechEmpower[3] JSON 基准测试中达到约 80 万 RPS , 而 MVC 则达到约 50 万 RPS 。
推荐阅读
- 索尼|PS5现已支持VRR功能:无需系统更新 重启即可
- 进口果味啤酒,目前已经不再生产
- 郑欣宜|34岁星二代再获乐坛大奖,预告年中红馆开个唱,3个月已瘦20斤
- 治疗胃胀的药有哪些
- 翡翠|五版币现在已经升值了,这“四大黑马”都涨了,遇到就收藏起来
- 瘦身瑜伽的练习
- 华为|华为回应元宇宙布局:典型的炒作期 已找到其本质
- 腮红|羊毛卷已过时,22款当下流行发型送给大家,直接剪就对了
- 被子怎么洗?有哪些方法
- 华为|卖车挑战30万辆!华为董事长:目标已很难实现 华为还是新手