图书前言

前  言

ASP.NET Core是一个免费、开源的模块化Web框架,由Microsoft开发,运行在完整的.NET Framework(Windows)或.NET Core(跨平台)上。它专门为构建高效的HTTP服务设计,使这些服务可被各种类型的客户端访问和使用,包括Web浏览器、移动设备、智能电视、基于Web的智能家居工具等。

Angular是AngularJS的后继产品。AngularJS是世界知名的开发框架,其设计目标为向开发人员提供一个工具箱,使他们能够构建出响应式、跨平台、基于Web的应用,并且能够针对桌面和移动设备优化这些应用。它采用了结构丰富的模板方法,以及自然的、易写易读的语法。

从技术角度看,这两种框架没有太多共同之处:ASP.NET Core主要关注Web开发栈的服务器端部分,而Angular则用于处理Web应用程序的所有客户端部分,如用户界面(User Interface,UI)和用户体验(User Experience,UX)。但是,这两种框架之所以产生,是因为其创建者具有一个共同的构想:HTTP协议不限于提供Web页面;可以把它用作一个平台来构建基于Web的API,以有效地发送和接收数据。这种设想在万维网的前20年间逐渐发展,现在已经成为不可否认的、广泛认同的表述,也是几乎每种现代Web开发方法的基础。

对于这种视角的转变,存在许多很好的理由,其中最重要的理由与HTTP协议的根本特征有关:使用起来很简单,但足够灵活,能够适应万维网不断变化的环境的大部分开发需求。如今,HTTP协议的适用范围也变得很广:我们能够想到的几乎每种平台都有一个HTTP库,因此HTTP服务能够用于各种客户端,包括桌面和移动浏览器、IoT设备、桌面应用程序、视频游戏等。

《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》的主要目的是在一个开发栈中,把最新版本的ASP.NET Core和Angular结合起来,以演示如何使用它们来创建高性能的、能够被任何客户端无缝使用的Web应用程序和服务。

《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》面向的读者

《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》面向有经验的ASP.NET开发人员,你应该已经知道ASP.NET Core和Angular,想学习这两种框架的更多知识,并理解如何结合它们来创建适合生产环境的单页面应用程序(SPA)或渐进式Web应用程序(PWA)。但是,《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》提供了完整的代码示例,并逐个步骤讲解了实现过程,即使是新手或者刚入门的开发人员,理解《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》也不会有太大难度。

《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》内容

第1章介绍《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》将使用的两个框架的一些基本概念,以及可以创建的各种类型的Web应用程序,如SPA、PWA、原生Web应用程序等。

第2章详细介绍Visual Studio 2019提供的.NET Core and Angular模板的各种后端和前端元素,并且从高层面上解释了如何在典型的HTTP请求-响应周期中结合使用它们。

第3章全面介绍如何构建一个示例ASP.NET Core和Angular应用,该应用通过使用基于Bootstrap的Angular客户端来查询健康检查中间件,为最终用户提供诊断信息。

第4章介绍Entity Framework Core及其作为对象关系映射(Object-Relational Mapping,ORM)框架的能力,从SQL数据库部署(基于云和/或本地实例)一直讲解到数据模型设计,还包括在后端控制器中读写数据的各种技术。

第5章介绍如何使用ASP.NET Core后端Web API来公开Entity Framework Core数据,使用Angular消费该数据,然后使用前端UI向最终用户展示数据。

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

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

第8章介绍如何充分利用Visual Studio提供的各种调试工具,调试一个典型Web应用程序的后端和前端栈。

第9章详细介绍测试驱动开发(Test-Driven Development,TDD)和行为驱动开发(Behavior-Driven Development,BDD),并展示了如何使用xUnit、Jasmine和Karma来定义、实现和执行后端和前端单元测试。

第10章从高层面上介绍身份验证和授权的概念,并展示了如何使用一些技术和方法来恰当地实现专有的或第三方的用户身份系统。本章给出一个基于ASP.NET Identity和IdentityServer4的、可以工作的ASP.NET Core和Angular身份验证机制的实际例子。

第11章详细介绍如何使用服务工作线程、清单文件和离线缓存功能,将一个现有的SPA转换成为一个PWA。

第12章介绍如何部署前面章节中创建的ASP.NET Core和Angular应用,以及如何使用Windows Server 2019或Linux CentOS虚拟机把它们发布到云环境中。

最大限度利用《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》

下面列出撰写《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》及测试源代码时使用的软件包及相关版本号:

● Visual Studio 2019社区版16.4.3

● Microsoft .NET Core SDK 3.1.1

● TypeScript 3.7.5

● NuGet Package Manager 5.1.0

● Node.js 13.7.0[强烈建议使用Node Version Manager(NVM),来安装Node.js]

● Angular 9.0.0最终版

对于在Windows上部署:

● ASP.NET Core 3.1 Runtime for Windows

● .NET Core 3.1 CLR for Windows

对于在Linux上部署:

● ASP.NET Core 3.1 Runtime for Linux(YUM包管理器)

● .NET Core 3.1 CLR for Linux(YUM包管理器)

● Nginx HTTP Server(YUM包管理器)

  提示  如果你使用的是Windows平台,强烈建议使用NVM for Windows来安装Node.js,这是适用于Windows系统的一个非常出色的Node.js版本管理器。从下面的URL可以下载NVM for Windows。

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

强烈建议你使用与《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》相同的版本。如果你选择使用一个不同的版本,也没有问题,但你可能需要对源代码做一些修改和调整。

下载示例代码文件

可以在www.tup.com.cn/downpage,输入《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》中文书名或ISBN,下载《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》的示例代码文件以及参考资料。

也可扫描封底二维码下载示例代码文件以及参考资料。

《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》采用的约定

《ASP.NET Core 3全栈Web开发(第3版) 使用.NET Core 3.1 和 Angular 9》采用了一些排版约定。

代码块的格式如下所示:

<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

  注意  警告或重要的注意事项将采用这种格式。

  提示  提示和技巧将采用这种格式。