ASP.NET Core从入门到精通
上QQ阅读APP看书,第一时间看更新

1.2 ASP.NET Core

ASP.NET Core是一个跨平台的、高性能的开源框架,用来构建基于云且通过互联网连接的应用程序,它是在.NET Core平台下进行Web开发及后端接口开发的一种技术。本节将对ASP.NET Core进行介绍。

1.2.1 ASP.NET Core的特点

从微软对ASP.NET Core的官方定义,我们可以看到,它是“跨平台”的、“基于云”的。首先“跨平台”表示可以在Windows、macOS和Linux等多种平台上进行ASP.NET Core的开发和运行;而“基于云”则表示ASP.NET Core应用可以运行在云服务平台上,并且可以和云服务平台的其他产品进行集成。

ASP.NET Core主要具有如下优点:

 生成Web UI和Web API的统一场景。

 Razor Pages可以使基于页面的编码方式更简单高效。

 Blazor允许在浏览器中使用C#和JavaScript,这样可以共享全部使用.NET编写的服务器端和客户端应用逻辑。

 能够在Windows、macOS和Linux平台上进行开发和运行。

 集成新式客户端框架和开发工作流。

 支持使用gRPC托管远程过程调用(RPC)。

 内置依赖项注入。

 轻型的高性能模块化HTTP请求管道。

 能够托管部署在Kestrel、IIS、HTTP.sys、Nginx、Apache、Docker等多种服务器上。

 并行版本控制。

 简化新式 Web 开发的工具。

 针对可测试性进行构建。

 开放源代码和以社区为中心。

1.2.2 ASP.NET Core的版本

ASP.NET Core的版本从最初的1.0版本已经发展到最新的7.0版本,其中,ASP. Core 2.2及之前的版本可以运行在.NET Core或者.NET Framework上,而ASP.NET Core 3.x及更高版本只能运行在.NET Core上。下面分别介绍ASP.NET Core各个版本的新特性。

说明

ASP.NET Core的版本随着时间的推移会不断更新,ASP.NET Core 7.0版本为本书截稿时的最新版本。

1.ASP.NET Core 1.0

ASP.NET Core 1.0主要专注于实现一个最小化的API,用于为Windows、macOS或Linux构建跨平台的Web应用程序和服务。

2.ASP.NET Core 1.1

ASP.NET Core 1.1主要关注Bug的修复,以及实现特性和性能的全面改进,其主要新增了以下功能:

 URL重写中间件;

 响应缓存中间件;

 查看组件即标记帮助程序;

 MVC型中间件筛选器;

 基于Cookie的TempData提供程序;

 Azure App Service日志记录提供程序;

 Azure Key Vault配置提供程序;

 Azure和Redis存储数据保护密钥存储库;

 适用于Windows的WebListener服务器;

 WebSockets支持。

3.ASP.NET Core 2.0

ASP.NET Core 2.0专注于添加新功能,其主要新增了以下功能:

 Razor Pages;

 ASP.NET Core元包;

 运行时存储;

 .NET Standard 2.0;

 配置、日志记录、身份验证、Identity更新;

 Razor支持C# 7.1;

 SPA模板;

 增强了HTTP标头支持;

 自动使用防伪标记、预编译等。

4.ASP.NET Core 2.1

ASP.NET Core 2.1专注于添加新功能,其主要新增了以下功能:

 用于实时通信的SignalR;

 Razor类库;

 Identity UI库和基架;

 更好地支持HTTPS和GDPR(欧盟通用数据保护条例);

 [ApiController]和ActionResult<T>;

 IHttpClientFactory;

 集成测试。

5.ASP.NET Core 2.2

ASP.NET Core 2.2的重点是改进RESTful HTTP API的构建,以及将项目模板更新为Bootstrap4和Angular6等,其主要新增了以下功能:

 终结点路由;

 Kestrel中的HTTP/2;

 Kestrel配置;

 IIS进程内承载;

 SignalR Java客户端;

 项目模板更新;

 验证性能;

 HTTP客户端性能。

6.ASP.NET Core 3.0

ASP.NET Core 3.0之后的版本将运行时改进为.NET Core 3.0及更高版本,不再支持.NET Framework,其主要新增了以下功能:

 Blazor服务器;

 gRPC;

 SignalR;

 新的JSON序列化;

 新的Razor指令;

 IdentityServer4支持Web API和SPA的身份验证和授权;

 证书和Kerberos身份验证;

 泛型主机;

 默认情况下启用HTTP/2;

 ASP.NET Core 3.0仅在.NET Core 3.0上运行。

7.ASP.NET Core 3.1

ASP.NET Core 3.1主要关注性能改进,它是一个长期支持(LTS)版本,其主要新增了以下功能:

 Razor组件的分部类支持;

 组件标记帮助程序和将参数传递到顶级组件;

 HTTP.sys中对共享队列的支持;

 SameSite cookie的中断性变更;

 在Blazor应用中阻止事件的默认操作;

 在Blazor应用中停止事件传播;

 Blazor应用开发过程中的错误详细信息。

8.ASP.NET Core 5.0

ASP.NET Core 5.0主要关注Bug修复及性能改进,其主要新增了以下功能:

 ASP.NET Core MVC、Razor、Web API、Blazor、gRPC、SignalR、Kestrel改进;

 身份验证和授权改进;

 性能改进。

9.ASP.NET Core 6.0

ASP.NET Core 6.0专注于提高生产效率,比如用最小化的代码实现基本的网站和服务等,其主要新增了以下功能:

 ASP.NET Core MVC和Razor改进;

 Blazor、Kestrel、SignalR改进;

 最小API;

 Razor编译器;

 ASP.NET Core性能和API改进;

 使用.NET MAUI、WPF和Windows窗体生成Blazor Hybrid应用;

 身份验证和授权。

10.ASP.NET Core 7.0

ASP.NET Core 7.0主要关注性能改进,它是一个长期支持版本,其主要新增了以下功能:

 ASP.NET Core中的速率限制中间件;

 身份验证使用单个方案作为DefaultScheme;

 支持MVC视图和Razor页面中的可为空模型;

 在API控制器中使用DI进行参数绑定;

 最小API和API控制器优化;

 gRPC、SignalR、Blazor、Blazor Hybrid改进;

 性能(缓存中间件、HTTP/3等)改进优化。

1.2.3 ASP.NET Core与ASP.NET

ASP.NET Core与ASP.NET虽然只有一字之差,但它们是不同的两种技术,ASP.NET主要提供在Windows上生成基于服务器的企业级Web应用所需的服务,而ASP.NET Core是ASP.NET的重新设计,它们的主要区别如表1.2所示。

表1.2 ASP.NET Core与ASP.NET的区别