课程 20486-D: Developing ASP.NET Core MVC Web Applications

在为期 5 天的课程中,专业的 Web 开发人员将学习使用 .NET Core 工具和技术开发高级 ASP.NET Core MVC 应用程序。重点将放在增强网站应用程序性能和伸缩性的编码活动上。本课程还将对学生备考考试 70-486。

受众概况

本课程适用于在个人或团队、小型到大型开发环境中使用 Microsoft Visual Studio 的专业 Web 开发人员。本课程的考生对开发高级 Web 应用程序感兴趣,并希望全面管理呈现的 HTML。他们希望创建将用户界面、数据访问和应用程序逻辑分开的网站。

工作角色: 开发人员

获得的技能

  • 描述 Microsoft Web Technologies 堆栈,并选择适当的技术来开发任何给定的应用程序。
  • 设计 Web 应用程序的体系结构和实现方式,应用程序将满足一组功能要求、用户界面要求并解决业务模型。
  • 使用中间件配置 ASP.NET Core Web 应用程序的管道,并在 MVC 应用程序中利用依赖注入模式。

先决条件

在参加本课程之前,学生必须具备:

  • 使用 Visual Studio 2017 的经验。
  • 使用 C# 编程以及 Lambda 表达式,LINQ 和匿名类型等概念的经验。
  • 使用 .NET Framework 的经验。
  • 使用 HTML、CSS 和 JavaScript 的经验。
  • 使用 ADO.NET 查询和处理数据的经验。
  • XML 和 JSON 数据结构的知识。

课程大纲

模块 1: 探索 ASP.NET Core MVC

Microsoft ASP.NET Core MVC 和 ASP.NET Core 的其他 Web 技术可以帮助您创建和托管动态的功能强大且可扩展的 Web 应用程序。ASP.NET Core 有一部分是 ASP.NET Core MVC,是一个开放源代码、跨平台的框架,使您可以构建 Web 应用程序。您可以在 Windows、macOS、Linux 或任何其他支持它的平台上开发和运行 ASP.NET Core Web 应用程序。

ASP.NET Core MVC 支持测试驱动的敏捷开发周期。它还允许您使用最新的 HTML 标准和前端框架,例如 Angular,React 等等。

课程

  • Microsoft Web 技术概述
  • ASP.NET 4.x 概述
  • ASP.NET Core MVC 导论

实验: 探索 ASP.NET Core MVC

  • 探索 Razor Pages 应用程序
  • 探索 Web API 应用程序
  • 探索 MVC 应用程序

完成本课程后,学生将能够:

  • 了解 Microsoft Web 堆栈中可用的各种技术。
  • 描述 ASP.NET 中可供开发人员使用的不同编程模型。
  • 在 ASP.NET Core 和 ASP.NET 4.x 之间进行选择。
  • 描述 ASP.NET Core MVC 在 Web 技术堆栈中的作用,以及如何使用 ASP.NET Core MVC 构建 Web 应用程序。
  • 区分 MVC 模型、MVC 控制程序和 MVC 视图。

模块 2: 设计 ASP.NET Core MVC Web 应用程序

Microsoft ASP.NET Core MVC 是一种编程模型,可用于创建功能强大且复杂的 Web 应用程序。但是,要完全理解所有复杂的开发项目,尤其是大型项目,可能会充满挑战并且十分复杂。如果不完全了解项目的目的,就无法为客户的问题开发有效的解决方案。您需要知道如何识别一组业务需求,并规划 Model-View-Controller(MVC)Web 应用程序以满足这些需求。您创建的项目计划可确保利益相关者相信你了解了他们的要求,并向开发人员传达了 Web 应用程序的功能、其用户界面、结构和数据存储。通过编写详细而准确的项目计划,您可以确保有效利用 MVC 的强大功能来解决客户的业务问题。

课程

  • 在项目设计时间进行规划
  • 设计模型、控制程序和视图

实验: 设计 ASP.NET Core MVC Web 应用程序

  • 规划模型类
  • 规划控制程序
  • 规划视图
  • 创建 MVC Web 应用程序体系结构

学完本模块后,学生将能够:

  • 规划 ASP.NET Core MVC Web 应用程序的整体体系结构,并考虑诸如状态管理之类的各个方面。
  • 规划实现一组给定功能需求所需的模型、控制程序和视图。

模块 3: 在 ASP.NET Core 中配置中间件和服务

ASP.NET Core 是一个框架,允许我们构建许多不同类型的应用程序。在本模块中,您将学习如何利用 ASP.NET Core 框架通过现有的和自定义的中间件来处理请求和响应,以及如何配置服务以在中间件和应用程序的其他部分(例如控制程序)中使用。 中间件是一段代码,可以用作请求和响应管道的一部分,使我们可以根据任何相关参数来处理它们。这可能允许以完全不同的方式处理多个单独的请求,并接收单独的响应。

服务是公开功能的类,您以后可以在应用程序的不同部分中使用这些功能,而不必手动跟踪每个单独位置的作用域并实例化任何依赖项。这是通过使用依赖注入模式来完成的。

依赖注入模式是 ASP.NET Core 使用的一种技术,它使我们可以向代码中添加依赖项,而不必担心实例化对象、将它们保留在内存中或传递所需的依赖项。这使应用程序变得更灵活,并在每次更改服务时减少潜在的故障点。

课程

  • 配置中间件
  • 配置服务

实验: 在 ASP.NET Core 中配置中间件和服务

  • 使用静态文件
  • 创建自定义中间件
  • 使用依赖注入
  • 向控制程序注入服务

学完本模块后,学生将能够:

  • 使用现有的中间件来设置 ASP.NET Core 应用程序。
  • 创建自己的中间件,并使用它来定义自定义行为。
  • 了解依赖注入的基本原理,以及如何在 ASP.NET Core 中使用它。
  • 知道如何创建自定义服务,配置其范围并将其注入到中间件和 ASP.NET Core MVC 控制程序中。

模块 4: 开发控制程序

ASP.NET Core MVC 是用于通过使用模型视图控制程序(MVC)架构模式来构建 Web 应用程序的框架。控制程序本质上负责通过与模型进行交互,然后将结果传递给视图来处理 Web 请求。该模型表示业务层,有时称为域,并且可以包括数据对象、应用程序逻辑和业务规则。该视图使用从控制程序接收的数据来生成 HTML 或其他输出,并将其发送回浏览器。

在本模块中,您将学习如何开发控制程序。控制程序是 MVC 应用程序的核心。了解控制程序的工作方式对于能够创建适当的模型对象,对其进行操作并将它们传递给适当的视图至关重要。

控制程序是一个类。它包含几种方法。这些方法称为动作。当 MVC 应用程序接收到请求时,它将查找应处理该请求的控制程序和动作。它通过使用统一资源定位器(URL)路由确定这一点。

URL 路由是开发 MVC 应用程序所必需的另一个非常重要的概念。ASP.NET Core MVC 框架包括一个灵活的 URL 路由系统,使您可以在应用程序中定义 URL 映像规则。

为了最大限度地重复使用控制程序中的代码,重要的是要知道如何编写操作过滤程序。您可以在 Web 应用程序中的每个操作运行之前或之后,在控制程序中的每个操作或控制程序操作的其他组合上使用操作过滤程序运行代码。

课程

  • 编写控制程序和操作
  • 配置路由
  • 编写操作过滤程序

实验: 开发控制程序

  • 向 MVC 应用程序添加控制程序和操作
  • 使用路由表配置路由
  • 使用属性配置路由
  • 添加操作文件管理器

学完本模块后,学生将能够:

  • 将控制程序添加到 Web 应用程序中,以响应项目设计中指定的用户操作。
  • 将路由添加到 ASP.NET Core 路由引擎,并确保 URL 在 MVC Web 应用程序中便于使用。
  • 在操作过滤程序中编写代码,该过滤程序在控制程序操作之前或之后运行。

模块 5: 开发视图

视图是模型-视图-控制程序(MVC)编程模型的三个主要组成部分之一。您可以通过创建视图来定义 Web 应用程序的用户界面。视图是 HTML 标记和在 Web 服务器上运行的 C# 代码的组合。因此,要创建视图,您需要知道如何编写 HTML 标记和 C# 代码并使用 MVC 内置的各种帮助程序类。您还需要知道如何创建局部视图和视图组件,以呈现 HTML 的各个部分,这些部分可以在您的 Web 应用程序中重复使用。

课程

  • 使用 Razor 语法创建视图
  • 使用 HTML 帮助程序和卷标帮助程序
  • 在视图中重复使用代码

实验: 开发视图

  • 将视图添加到 MVC 应用程序
  • 添加局部视图
  • 添加视图组件

学完本模块后,学生将能够:

  • 创建一个 MVC 视图并向其添加 Razor 标记以向用户显示数据。
  • 在视图中使用 HTML 帮助程序和卷标帮助程序。在整个应用程序的多个位置重复使用 Razor 标记。

模块 6: 开发模型

大多数 Web 应用程序与各种类型的数据或对象进行交互。例如,电子商务应用程序管理产品、购物车、客户和订单。社交网络应用程序可能有助于管理用户、状态更新、评论、照片和视频。博客用于管理博客条目、评论、类别和标签。当您编写模型视图控制器(MVC)Web 应用程序时,您将创建一个 MVC 模型来为 Web 应用程序的数据建模。在此模型中,为每种类型的对象创建一个模型类。模型类描述每种类型的对像的属性,并且可以包括与业务流程匹配的业务逻辑。因此,该模型是 MVC 应用程序中的基本构建块。在本模块中,您将学习如何为模型创建代码。

课程

  • 创建 MVC 模型
  • 使用表格
  • 验证 MVC 应用程序

实验: 开发模型

  • 添加模型
  • 使用表格
  • 添加验证

学完本模块后,学生将能够:

  • 将模型添加到 MVC 应用程序并在其中编写代码以实现业务逻辑。
  • 使用显示和编辑数据注释。
  • 验证带有数据注释的用户输入。

模块 7: 在 ASP.NET Core 中使用 Entity Framework Core

Web 应用程序经常使用信息,并且通常需要该信息的数据存储区。通过呈现使用数据存储区中的数据的网页,您可以创建一个 Web 应用程序,该应用程序会随着用户输入、管理操作和发布事件而不断变化。数据存储区通常是一个数据库,但是偶尔会使用其他类型的数据存储区。在模型-视图-控制程序(MVC)应用程序中,您可以创建一个实现数据访问逻辑和业务逻辑的模型。或者,您可以使用存储库将业务逻辑与数据访问逻辑分开。存储库是控制程序可以调用以从数据存储区读取数据并将数据写入数据存储区的类。在编写 ASP.NET 应用程序时,可以使用 Entity Framework Core(EF Core)和 Language Integrated Query(LINQ)技术,这些技术使数据访问代码的编写和理解变得非常快捷简单。在本模块中,您将看到如何在 MVC 中构建数据库驱动的网站。

课程

  • Entity Framework Core 导论
  • 使用 Entity Framework Core
  • 使用 Entity Framework Core 连接到 Microsoft SQL Server

实验: 在 ASP.NET Core 中使用 Entity Framework Core

  • 添加 Entity Framework Core
  • 使用 Entity Framework Core 检索和存储数据
  • 使用 Entity Framework Core 连接到 Microsoft SQL Server

学完本模块后,学生将能够:

  • 将应用程序连接到数据库以访问和存储数据。
  • 说明 Entity Framework Core。
  • 使用 Entity Framework Core。
  • 使用 Entity Framework Core 连接到包括 Microsoft SQL Server 的数据库。

模块 8: 在 ASP.NET Core MVC 中使用 Layouts、CSS 和 JavaScript

在构建 Web 应用程序时,应为应用程序应用一致的外观。您应该在所有视图中包括一致的页眉和页脚部分。Microsoft ASP.NET Core MVC 包括诸如级联样式表单(CSS)样式和布局之类的功能,这些功能可以增强 Web 应用程序的外观和可用性。 在 ASP.NET Core MVC 中,可以使用 JavaScript 创建交互式 HTML 元素。您需要知道如何在 Web 应用程序中使用 JavaScript。为了简化向 Web 应用程序中添加 JavaScript 的工作,您需要知道如何使用 jQuery 之类的库。

课程

  • 使用 Layouts
  • 使用 CSS 和 JavaScript
  • 使用 jQuery

实验: 在 ASP.NET Core中使用 Layouts、CSS 和 JavaScript

  • 应用布局并链接视图
  • 使用 CSS
  • 使用 JavaScript
  • 使用 jQuery

学完本模块后,学生将能够:

  • 将一致的布局应用于 ASP.NET Core MVC 应用程序。
  • 将 JavaScript 代码添加到 Web 应用程序。
  • 在 Web 应用程序中使用 jQuery 库。

模块 9: 客户端开发

创建应用程序时,重要的是要知道如何开发应用程序的客户端和服务器端。在本模块中,您将学习客户端工具,这些工具将使您能够创建各种规模的广泛的 Web 应用程序。这些工具基于模块 8 “在 ASP.NET Core MVC 中使用 Layouts、CSS 和 JavaScript” 中涵盖的主题。

在本模块中,您将学习如何使用 Bootstrap 框架来设置 Web 应用程序的样式。然后,您将学习如何使用 Sass 和 Less,这是两个常见的级联样式表单(CSS)预处理程序,它们向 CSS 添加了功能,例如变量,嵌套规则和函数。这些极大地提高了复杂 Web 应用程序的可维护性。

接下来,您将学习如何在 Microsoft Visual Studio 构建过程中设置任务运行程序,例如 Grunt 和 Gulp,以及如何使用它们来编译 Sass 文件。您将学习如何使用 Gulp 任务运行程序执行 CSS 和 JavaScript 文件的捆绑和最小化操作,以及如何在编写代码时设置观察程序任务来编译 Sass 文件,而无需重建解决方案。

最后,您将学习响应式设计工具,该工具可让您根据 Web 浏览器或设备的功能和规格来自定义 Web 应用程序的显示。您将学习编写 CSS 媒体查询,如何使用 Bootstrap 响应式网格系统以及如何将 CSS flexbox 布局应用于视图。

课程

  • 应用样式
  • 使用任务运行程序
  • 响应式设计

实验: 客户端开发

  • 使用 Gulp 运行任务
  • 使用 Sass 进行样式设置
  • 使用 Bootstrap

学完本模块后,学生将能够:

  • 在 Microsoft ASP.NET Core 应用程序中使用 Bootstrap、Sass 和 Less。
  • 在 ASP.NET Core 应用程序中使用任务运行程序。
  • 确保 Web 应用程序在具有不同屏幕尺寸的设备上正确显示。

模块 10: 测试和故障排除

诸如 Web 应用程序之类的软件系统非常复杂,并且需要多个组件(通常由不同的开发人员编写)才能协同工作。错误的假设,不正确的理解,编码错误以及许多其他来源都可能导致导致异常或意外行为的错误。为了提高 Web 应用程序的质量并创建令人满意的用户体验,您必须从任何来源识别错误并加以消除。

传统上,测试人员在开发项目结束时执行大多数测试。但是,最近在整个项目生命周期中进行测试可以提高质量并确保生产软件中没有错误,这已被广泛接受。您需要了解如何在 Web 应用程序的小型组件上运行测试,以确保它们能够按预期运行,然后再将它们组合成一个完整的 Web 应用程序。

知道异常发生时如何处理也很重要。在应用程序运行时,您可能会遇到意外情况。重要的是,正确管理异常并提供良好的用户反馈,同时避免泄漏有关应用程序结构的信息。

最后,通过在整个应用程序中使用日志,您可以监控可能导致意外问题的用户活动,然后可以通过跟踪生产环境中发生的流程并查找额外的错误来寻找错误的解决方案,通常您无法确定这些错误是如何重现的。

课程

  • 测试 MVC 应用程序
  • 实施异常处理策略
  • 记录 MVC 应用程序

实验: 测试和故障排除

  • 测试模型
  • 使用假存储库测试控制程序
  • 在 MVC 项目中实施存储库
  • 添加异常处理
  • 添加日志

完成本课程后,学生将能够:

  • 针对模型-视图-控制程序(MVC)组件(例如模型类和控制程序)运行单元测试,并查找潜在的错误。
  • 构建一个 Microsoft ASP.NET Core MVC 应用程序,使该应用程序可以平稳、可靠地处理异常。
  • 运行使应用程序受益的日志记录提供程序,并使用通用的日志记录 API 运行它们。

模块 11: 管理安全性

由于 Web 应用程序通常针对仅使用浏览器来使用该应用程序的用户,因此与已安装的应用程序相比,可能会有更多的用户。但是,Web 应用程序的开放性意味着在构建 Web 应用程序时,必须始终将安全性放在首位。作为安全性的一部分,您必须决定哪些用户可以执行哪些操作,同时保护用户和您的应用程序免受可能访问应用程序的恶意第三方的侵害。

身份验证是利用几个参数来确保用户是他们声称的身份的行为。通过实施身份验证,您可以确定用户的身份,并在使用应用程序时为他们提供适当的内容。

授权是可以授予应用程序中已通过身份验证的用户访问特定操作或资源的过程。通过用户许可证,您可以防止用户访问他们不想要的敏感材料或执行他们不应该执行的操作。

最后,在生命周期的某个时刻,您的应用程序可能会受到恶意用户的攻击。这些手段和意图可能会有所不同,但不设防御的代价可能会很大。您可能会失去受影响的潜在用户,有价值的数据可能会被错误地更改,并且在最坏的情况下,整个应用程序可能变得无法使用。本模块将回顾一些最流行的攻击的解决方案。

课程

  • ASP.NET Core 中的身份验证
  • ASP.NET Core 中的授权
  • 抵御攻击

实验: 管理安全性

  • 使用身份
  • 添加授权
  • 避免跨站请求伪造攻击

学完本模块后,学生将能够:

  • 向您的应用程序添加基本身份验证。
  • 配置 Microsoft ASP.NET Core 身份。
  • 向您的应用程序添加基本授权。
  • 使用几种不同的授权方法。
  • 了解安全漏洞的工作原理以及如何更好地防御安全漏洞。

模块 12: 性能和通信

现代 Web 应用程序需要与用户进行复杂的交互。用户通常会在很短的时间内请求大量数据,同时还希望相关数据尽快出现。这很容易在未准备好的服务器上造成大量负载,从而导致不必要的复杂或重复操作,并给服务器带来沉重的负担。幸运的是,有多种减少负载的方法。 缓存使您可以存储通常重复的请求,从而避免了重复执行相同逻辑的需要。通过使用缓存,您可以重复使用已经加载的数据并将其呈现给用户。这为用户提供了快速的响应时间,并减少了执行操作逻辑所使用的系统资源。

状态同时允许实现不同请求之间的一致性状态。通过利用各种形式的状态管理,您可以将通常无状态的 Web 体验转变为针对各个客户定制的体验,而不同的用户在同一应用程序中可享受单独且相关的体验。

最后,SignalR 是一个框架,该框架允许将几种不同的通信协议抽象为易于使用的 API,从而使您可以在服务器和客户端上轻松创建一套工具,以促进双向通信。这使您可以专注于希望实现的逻辑,而不必迎合特定的浏览器。

课程

  • 实施缓存策略
  • 管理状态
  • 双向通信

实验: 性能和通信

  • 实施缓存策略
  • 管理状态
  • 双向通信

学完本模块后,学生将能够:

  • 在 Microsoft ASP.NET Core 应用程序中实现缓存。
  • 使用状态管理技术,通过为用户提供一致的体验来改善客户体验。
  • 通过使用 SignalR 实现双向通信,允许服务器在发生重要事件时通知客户端。

模块 13: 实施 Web API

大多数 Web 应用程序都需要与外部系统(例如移动应用程序)集成。您需要知道如何使用 Web API 来促进应用程序与外部系统的交互。您可以使用 Web API 在应用程序中实现代表性状态转移(REST)服务。REST 服务有助于减少应用程序经常性开销并限制在客户端和服务器系统之间传输的数据。您需要知道如何通过使用服务器端代码和 jQuery 代码来调用 Web API,以在应用程序中有效地实现 REST 风格的 Web API。

课程

  • 引入 Web API
  • 开发 Web API
  • 调用 Web API

实验: 实现 Web API

  • 使用 Microsoft Edge 添加并调用操作
  • 使用服务器端代码调用 Web API
  • 使用 jQuery 调用 Web API

学完本模块后,学生将能够:

  • 使用 ASP.NET Core Web API 创建服务。
  • 从服务器端代码和 jQuery 调用 Web API。

模块 14: 托管和部署

ASP.NET Core MVC 应用程序旨在向多个用户同时提供服务,而只需要安装服务器,并且客户端使用浏览器来访问它。这导致了要创建出非常理想的应用程序,这些应用程序不依赖于用户安装专用软件,并能确保各种机器上的客户端都可以访问这些应用程序。 为了设置生产环境的 ASP.NET Core 应用程序,您将需要编译代码并对其进行压缩,然后对其设置并在专用服务器上运行。 托管涉及使用专用服务器来包含已编译的应用程序,并将其作为基于 Web 的服务提供给用户。有很多不同的技术可以用来托管您的应用程序,您应该选择一种适合您要求的技术。

部署是一个过程,在该过程中,将项目代码进行编译,然后以一种能在托管环境要求范围内正常运作的方式将其传输到托管服务器。 Microsoft Azure 是 Microsoft 提供的一种云服务。它可以用于托管 ASP.NET Core 应用程序,并且是一个云技术市场中非常流行的工具。它可以根据要求在多个计费选项中提供便捷的 Web 应用程序相关服务。

课程

  • 本地托管和部署
  • 部署到 Microsoft Azure
  • Microsoft Azure 基础知识

实验: 托管和部署

  • 将 Web 应用程序部署到 Microsoft Azure
  • 将图像上传到 Azure Blob 存储

学完本模块后,学生将能够:

  • 在 IIS 上托管和部署 ASP.NET Core MVC 应用程序。
  • 在 Microsoft Azure 上托管和部署 ASP.NET Core MVC 应用程序。
  • 能够利用 Microsoft Azure 提供的服务来改善 Web 应用程序的功能。