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的区别