Asp.net Core 6系列学习
文章目录
Asp.net Core 概述
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成启用云且连接 Internet 的新式应用。
使用 ASP.NET Core,可以:
- 生成 Web 应用和服务、物联网 (IoT) 应用和移动后端。
- 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
- 部署到云或本地。
- 在 .NET Core 上运行。
ASP.NET Core 是对 ASP.NET 4.x 的重新设计,其中包括体系结构上的更改,产生了更精简、更模块化的框架。
一、在 ASP.NET 4.x 和 ASP.NET Core 之间进行选择
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。
ASP.NET 4.x 是一个成熟的框架,提供在 Windows 上生成基于服务器的企业级 Web 应用所需的服务。
ASP.NET Core | ASP.NET 4.x |
---|---|
针对 Windows、macOS 或 Linux 进行生成 | 针对 Windows 进行生成 |
Razor Pages 是在 ASP.NET Core 2.x 及更高版本中创建 Web UI 时建议使用的方法。 另请参阅 MVC、Web API 和 SignalR。 | 使用 Web FormsSignalR、MVCWeb APIWebHooks 或网页 |
每个计算机多个版本 | 每个计算机一个版本 |
使用 C# 或 F# 通过 Visual Studio、Visual Studio for Mac 或 Visual Studio Code 进行开发 | 使用 C#、VB 或 F# 通过 Visual Studio 进行开发 |
比 ASP.NET 4.x 性能更高 | 良好的性能 |
使用 .NET Core 运行时 | 使用 .NET Framework 运行时 |
二、适用于服务器应用的 .NET 与 .NET Framework
有两种支持的 .NET 实现可用于生成服务器端应用。
实现 | 包含的版本 |
---|---|
.NET | .NET Core 1.0 - 3.1、.NET 5 及更高版本的 .NET。 |
.NET Framework | .NET Framework 1.0 - 4.8 |
这两者共用许多相同的组件,你可在它们之间共享代码。 但两者之间存在根本的差异,可根据需要实现的目标进行选择。 本文介绍了在何种情况下进行选择。
在以下情况,对服务器应用程序使用 .NET:
- 用户有跨平台需求。
- 你正在以微服务为目标。
- 你正在使用 Docker 容器。
- 需要高性能和可扩展的系统。
- 需按应用程序提供并行的 .NET 版本。
在以下情况,对服务器应用程序使用 .NET Framework :
- 应用当前使用 .NET Framework(建议扩展而不是迁移)。
- 应用使用不可用于 .NET 的第三方库或 NuGet 包。
- 应用使用不可用于 .NET 的 .NET Framework 技术。
- 应用使用不支持 .NET 的平台。
三、ASP.NET Core Web UI
1.服务器和客户端呈现 UI 的优势和成本
有三种常见的方法可以使用 ASP.NET Core 构建新式 Web UI:
- 从服务器呈现 UI 的应用。
- 在浏览器的客户端上呈现 UI 的应用。
- 利用服务器和客户端 UI 呈现方法的混合应用。 例如,大多数 Web UI 呈现在服务器上,并会根据需要来添加客户端呈现的组件。
在服务器或客户端上呈现 UI 时,需要考虑其优点和缺点。
2.服务器呈现的 UI
优点:
- 客户端的需求最少,因为是由服务器执行逻辑和页面生成工作:
- 非常适用于低端设备和低带宽连接。
- 允许在客户端上使用各种浏览器版本。
- 快速加载初始页面。
- 尽可能少地使用或不使用 JavaScript 拉到客户端。
- 灵活地访问受保护的服务器资源:
- 数据库访问。
- 访问机密,如对 Azure 存储的 API 调用值。
- 静态站点分析优点,例如搜索引擎优化。
常见的服务器呈现的 Web UI 应用场景的示例:
- 动态站点,例如提供个性化页面、数据和窗体的站点。
- 显示只读数据,如事务列表。
- 显示静态博客页面。
- 面向公众的内容管理系统。
缺点:
- 计算和内存使用的成本都集中在服务器上,而不是分摊到每个客户端。
- 用户交互需要往返服务器才能生成 UI 更新。
四、可用的 ASP.NET Core Web UI 服务器呈现的模型
Razor Pages 和 MVC 是基于服务器的框架,用于通过 .Net 生成 Web 应用。
1.ASP.NET Core Razor Pages
Razor Pages 是一个基于页面的模型。 UI 和业务逻辑关注点保持分离状态,但都在页面内。
Razor Pages 创建新的基于页面或基于窗体的应用。
Razor Pages 入门比 ASP.NET Core MVC 要简单一些。
在服务器呈现的优点基础上,Razor Pages 的优点:
- 快速构建和更新 UI。 页面的代码与页面一起保存,同时保持 UI 和业务逻辑关注点相互分离。
- 可进行测试并缩放到大型应用。
- 组织 ASP.NET Core 页面,使用起来比 ASP.NET MVC 更简单:
- 视图的具体逻辑和视图模型可以一起保存在它们自己的命名空间和目录中。
- 相关页面的组可以保存在各自的命名空间和目录中。
2.ASP.NET Core MVC
ASP.NET MVC 在服务器上呈现 UI,并使用模型-视图-控制器 (MVC) 结构模式。
MVC 模式将应用分成三组主要组件:模型、视图和控制器。
用户请求被路由到控制器。 控制器负责使用模型来执行用户操作或检索查询结果。 控制器选择要显示给用户的视图,并为其提供所需的任何模型数据。
对 Razor Pages 的支持是建立在 ASP.NET Core MVC 基础之上的。
在服务器呈现的优点基础上,MVC 也有它的优点:
- 基于可缩放且成熟的模型生成大型 Web 应用。
- 明确分离关注点以获得最大的灵活性。
- 模型-视图-控制器的责任分离,确保了业务模型的发展,而不会与底层的实现细节紧密相连。
3.Blazor Server
Blazor 是一个使用 Blazor 生成交互式客户端 Web UI 的框架:
- 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI。
- 共享使用 .NET 编写的服务器端和客户端应用逻辑。
- 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
- 与新式托管平台(如 Docker)集成。
- 使用 .NET 和 Blazor 生成混合桌面和移动应用。
使用 .NET 进行客户端 Web 开发可提供以下优势:
- 使用 C# 代替 JavaScript 来编写代码。
- 利用现有的 .NET 库生态系统。
- 在服务器和客户端之间共享应用逻辑。
- 受益于 .NET 的性能、可靠性和安全性。
- 使用开发环境(例如 Visual Studio 或 Visual Studio Code)保持 Windows、Linux 或 macOS 上的工作效率。
- 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成。
Blazor Server 支持在 ASP.NET Core 应用中托管服务器呈现的 UI。 可通过 SignalR 连接处理客户端 UI 更新。 运行时保留在服务器上,并处理应用 C# 代码的执行。
4.Blazor WebAssembly
Blazor WebAssembly 是单页应用 (SPA) 框架,用于生成具有本文前面 Blazor Server 部分所述的一般特征的交互式客户端 Web 应用。
通过 WebAssembly,可在 Web 浏览器内运行 .NET 代码。 WebAssembly 是针对快速下载和最大执行速度优化的压缩字节码格式。 WebAssembly 是开放的 Web 标准,支持用于无插件的 Web 浏览器。 Blazor WebAssembly 适用于所有新式 Web 浏览器,包括移动浏览器。
当 Blazor WebAssembly 应用生成并运行时:
- C# 代码文件和 Razor 文件将被编译为 .NET 程序集。
- 该程序集和 .NET 运行时将被下载到浏览器。
- Blazor WebAssembly 启动 .NET 运行时,并配置运行时,以为应用加载程序集。 Blazor WebAssembly 运行时使用JavaScript 互操作处理文档对象模型 (DOM) 操作和浏览器 API 调用。
5.使用 JavaScript 框架(例如 Angular 和 React)的 ASP.NET Core 单页应用程序 (SPA)
使用热门的 JavaScript 框架(如 Angular 或 React)生成适用于 ASP.NET Core 应用的客户端逻辑。 ASP.NET Core 为 Angular 和 React 提供了项目模板,也可以用于其他 JavaScript 框架。
在前面列出的客户端呈现的优点基础上,将 ASP.NET Core SPA 与 JavaScript 框架结合使用也有一些优点:
- JavaScript 运行时环境已随浏览器提供。
- 大型社区和成熟的生态系统。
- 使用热门的 JS 框架(如 Angular 和 React)构建适用于 ASP.NET Core 应用的客户端逻辑。
缺点:
- 需要更多编码语言、框架和工具。
- 难以共享代码,因此一些逻辑可能会重复。
总结
MVC、Razor Pages 和 Blazor 都是 ASP.NET Core 框架的一部分,设计为可以结合使用。 Razor 组件可以通过托管的 Blazor WebAssembly 或 Blazor Server 解决方案集成到 Razor Pages 和 MVC 应用。 呈现视图或页面时,可以同时预呈现组件。