今年 6 月份的时候时候 .NET 团队就在 GitHub 公布了 ASP.NET Core 2.2 版本的 Roadmap(文末有链接),而前两天 ASP.NET Core 2.2 预览版 2 已经可以下载使用了,正式版大约会在今年年底的时候发布。
相对于 2.0 and 2.1 来说,这次更新算是一次小更新了,主要包含 Bug 修复、性能优化、增加一些小的特性、和 Merge 社区的 PR。
下面来总结一下 ASP.NET Core 2.2 有哪些新的东西。
ApiController 特性是 ASP.NET Core 2.1 引入的,应用在 Controller 类上,主要用来自动对 Model 进行验证并自动响应 400 错误。引入 ApiController 特性后比如下面的代码是多余的:
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
在版本 2.2,ApiController 特性提供了 API Explorer 元数据,可以更友好地生成 Swagger/OpenAPI 文档。然后还增加了一些默认约定,如果代码不符合约定,是会有建议的。比如下面的代码:
[ApiController]
public class CatalogController : ControllerBase
{
[HttpGet]
[Route("items/{id:int}")]
public async Task<ActionResult<CatalogItem>> GetItemById(int id)
{
}
...
}
会出现建议提示,通过快捷键 Ctrl+.,编辑器会建议你这么写:
[ApiController]
public class CatalogController : ControllerBase
{
[HttpGet]
[Route("items/{id:int}")]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
[ProducesResponseType(typeof(CatalogItem),(int)HttpStatusCode.OK)]
public async Task<ActionResult<CatalogItem>> GetItemById(int id)
{
}
...
}
会有一个叫 Dispatcher 的东西,它的设计是为了让路由匹配更早地出现在管道中,这样可对中间件可见,中间件通过它可以知道路由下一个指向目标的信息。
在 dotnet
CLI 中集成可以调用 API 的 REPL 工具。这个主要是方便快速调试 API 的,类似命令行的 curl 命令,但应该更强大。
可以根据写好的 API 元数据,生成调用 API 的客户端代码(C# 和 TypeScript)。
提供基于 OpenID 的授权服务,这个服务相当于项目的统一授权点,可用于 SPA、Native App 等。
Kestrel 和 HttpClient 的 HTTP/2 支持。
应用的健康检查,比如内存消耗。
SignalR 支持使用 Java 和 C++ 链接。
详情请查看官方 ASP.NET Core 2.2 Roadmap:
https://github.com/aspnet/Announcements/issues/307
即将发布的 ASP.NET Core 2.2 会有哪些新玩意儿?
原文:https://www.cnblogs.com/willick/p/aspnetcore2-2-2.html