零、前言

ASP.NET Core 是一个由 Microsoft 开发的免费开源模块化 web 框架,它运行在完整的.NET framework(Windows)或.NET Core(跨平台)之上。它是专门为构建高效的 HTTP 服务而设计的,可供大量客户访问和使用,包括 web 浏览器、移动设备、智能电视、基于 web 的家庭自动化工具等。

AngularJS 是 AngularJS 的继承者,AngularJS 是一个世界知名的开发框架,其目的是为编码人员提供工具箱,用于构建针对桌面和移动设备进行优化的反应式和跨平台的基于 web 的应用。它的特点是基于自然、易于编写且可读的语法的结构丰富的模板方法。

从技术上讲,这两个框架几乎没有共同之处:ASP.NET Core 主要集中在 web 开发堆栈的服务器端部分,而 Angular 则致力于涵盖 web 应用的所有客户端方面,如用户界面UI用户体验UX),但它们都是由于各自创作者的共同愿景而产生的:tHTTP 协议不仅限于服务于网页;它还可以作为一个可行的平台,用于构建基于 web 的 API,以有效地发送和接收数据。这一概念在万维网生命的最初 20 年中慢慢形成,现在是一个不可否认的、被广泛认可的说法,也是几乎所有现代网络开发方法的基本支柱。

至于这种视角转换背后的原因,有很多很好的原因,其中最重要的是与 HTTP 协议的固有特性有关:它使用起来相当简单,并且足够灵活,能够满足万维网所处的不断变化的环境的大多数发展需要。更不用说它现在有多普遍了:我们能想到的几乎任何平台都有一个 HTTP 库,因此 HTTP 服务可以覆盖广泛的客户端,包括桌面和移动浏览器、物联网设备、桌面应用、视频游戏等等。

本书的主要目的是将 ASP.NET Core 和 Angular 的最新版本整合到一个开发堆栈中,以演示如何使用它们创建任何客户端都可以无缝使用的高性能 web 应用和服务。

这本书是给谁的

本书面向经验丰富的 ASP.NET 开发人员,他们已经了解 ASP.NET Core 和 Angular,希望了解更多关于它们的信息,并了解如何将它们结合起来创建一个生产就绪的单页应用SPA)或渐进式 Web 应用PWA ). 然而,完整文档化的代码示例(也可在 GitHub 上获得)和分步实现教程使本书即使对于初学者和刚刚起步的开发人员也很容易理解。

这本书涵盖的内容

第 1 章准备介绍了我们将在本书中使用的框架的一些基本概念,以及可以创建的各种 web 应用(SPA、PWA、原生 web 应用等)。

第 2 章环顾四周,详细概述了 Visual Studio 2019 附带的.NET Core 和 Angular 模板提供的各种后端和前端元素,并提供了一些关于它们如何在典型 HTTP 请求-响应周期中协同工作的高级解释。

第 3 章前端和后端交互提供了一个全面的教程,用于构建示例 ASP.NET Core 和 Angular 应用,该应用通过使用基于引导的 Angular 客户端查询健康检查中间件,向最终用户提供诊断信息。

第 4 章实体框架核心数据模型构成了实体框架核心及其作为对象关系映射ORM框架的能力的旅程,从 SQL 数据库部署(基于云和/或本地实例)到数据模型设计,包括从后端控制器读取和写入数据的各种技术。

第 5 章获取和显示数据介绍了如何使用 ASP.NET Core 后端 web API 公开实体框架核心数据,使用 Angular 消费该数据,然后使用前端 UI 向最终用户展示。

第 6 章表单和数据验证详细介绍了如何在后端 web API 中实现 HTTP PUT 和 POST 方法,以便使用 Angular 执行插入和更新操作,以及服务器端和客户端数据验证

第 7 章代码调整和数据服务探讨了一些有用的重构和改进,以增强应用的源代码,并包括对 Angular 数据服务的深入分析,以了解为什么以及如何使用它们。

第 8 章后端和前端调试介绍如何充分利用 Visual Studio 提供的各种调试工具,正确调试典型 web 应用的后端和前端堆栈。

第 9 章ASP.NET Core 和 Angular 单元测试测试驱动开发TDD)和行为驱动开发BDD)开发实践进行了详细的回顾,并探讨了如何定义、实施,并使用 xUnit、Jasmine 和 Karma 执行后端和前端单元测试。

第 10 章身份验证和授权从较高层次介绍了身份验证和授权的概念,并介绍了正确实施专有或第三方用户身份系统的一些技术、方法和方法。其中包括一个基于 ASP.NET Identity 和 IdentityServer 4 的 ASP.NET Core 和 Angular 身份验证机制的实际示例。

第 11 章渐进式网络应用深入探讨了如何使用服务人员、清单文件和离线缓存功能将现有 SPA 转换为 PWA。

第 12 章Windows 和 Linux 部署教您如何部署前几章创建的 ASP.NET 和 Angular 应用,并使用 Windows Server 2019 或 Linux CentOS 虚拟机在基于云的环境中发布它们。

充分利用这本书

以下是用于编写本书和测试源代码的软件包(以及相关版本号):

  • Visual Studio 2019 社区版 16.4.3
  • Microsoft.NET Core SDK 3.1.1
  • 打字稿 3.7.5
  • NuGet 软件包管理器 5.1.0
  • Node.js 13.7.0(我们强烈建议使用节点版本管理器,也称为NVM进行安装)
  • Angular 9.0.0 决赛

Windows上部署:

  • ASP.NET Core 3.1 Linux 运行时(YUM 软件包管理器)
  • .NET Core 3.1 CLR for Linux(YUM 软件包管理器)
  • Nginx HTTP 服务器(YUM 包管理器)

Linux上部署:

  • ASP.NET Core 3.1 Linux 运行时(YUM 软件包管理器)
  • .NET Core 3.1 CLR for Linux(YUM 软件包管理器)
  • Nginx HTTP 服务器(YUM 包管理器)

If you're on Windows, I strongly suggest installing Node.js using NVM for Windows-a neat Node.js version manager for the Windows system. You can download it from the following URL:

https://github.com/coreybutler/nvm-windows/releases.

我们强烈建议使用本书中使用的相同版本–或更新版本,但风险自负!除了笑话,如果你喜欢使用不同的版本,那很好,只要你知道,在这种情况下,你可能需要对源代码进行一些手动更改和调整。

下载示例代码文件

您可以从您的账户www.packt.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册www.packt.com
  2. 选择“支持”选项卡。
  3. 点击代码下载。
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/ASP.NET-Core-3-and-Angular-9-Third-Edition 。如果代码有更新,它将在现有 GitHub 存储库中更新。

我们的丰富书籍和视频目录中还有其他代码包,请访问https://github.com/PacktPublishing/ 。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:https://static.packt-cdn.com/downloads/9781789612165_ColorImages.pdf

使用的惯例

本书中使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:“导航到/ClientApp/src/app/cities文件夹。”

代码块设置如下:

<mat-form-field [hidden]="!cities">
    <input matInput (keyup)="loadData($event.target.value)"
        placeholder="Filter by name (or part of it)...">
</mat-form-field>

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

import { FormGroup, FormControl } from '@angular/forms';

class ModelFormComponent implements OnInit {
  form: FormGroup; 

  ngOnInit() {
 this.form = new FormGroup({
 title: new FormControl()
 });
  }
}

任何命令行输入或输出的编写方式如下:

> dotnet new angular -o HealthCheck

粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个例子:“一个简单的添加一个新城市按钮将同时解决这两个问题。”

Warnings or important notes appear like this. Tips and tricks appear like this.

联系

我们欢迎读者的反馈。

一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中注明书名,并发送电子邮件至customercare@packtpub.com

勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/support/errata,选择您的书籍,单击 errata 提交表单链接,然后输入详细信息。

盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packt.com与我们联系,并提供该材料的链接。

如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com

评论

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。

有关 Packt 的更多信息,请访问Packt.com