十四、答案

本节包含所有章节中问题的答案。

第一章——ASP.NET Core 5 简介

  1. .NETClassic 与 Windows 操作系统紧密结合。这阻止了任何跨平台的野心,而且对于云使用和微服务来说也不太理想。NET Core 消除了其中一些障碍;它提供了更干净的 API 表面和更精简的封装外形。
  2. 每年 11 月发布。每两年发布一次,都是长期支持。
  3. 基于 MVC 模式的 Web 应用主要由三个组件组成:M(如模型中所示)是应用的数据结构;V(如视图中所示)为用户界面;C(如控制器中所示)表示位于模型和视图之间的组件,并在它们之间洗牌数据。
  4. 这些属性仅用于在创建对象时设置,以后不能更改。
  5. 是的,从技术上讲这是可能的,但这很困难,而且非常令人沮丧。考虑执行 RESTORY API 或 GRPC 代替。

第二章跨平台设置

  1. Windows、Linux、MacOS、iOS 和 Android。
  2. 这是 Windows 的一个组件,允许您在 Windows 中运行 Linux,但它是以本机方式运行的,而不是作为仿真层。
  3. 独立的.NET 应用包含运行所需的一切,因此不需要单独安装.NET framework。这意味着它也可以在未安装.NET 的系统上运行,或者在安装了不同版本的 framework 的系统上运行。
  4. 编译跨平台应用会使应用在不同的平台上运行,但不能确保所有代码都适用于编译应用的平台。这意味着,作为一名开发人员,您必须使代码本身与平台兼容,而不仅仅是与可执行文件兼容。

第三章依赖注入

  1. 依赖注入(DI)有四种类型:构造函数、方法、属性和视图注入。构造函数注入是构建 ASP.NET Core 应用最常用的方法。
  2. There are three types of DI lifetimes: transient, scoped, and singleton.

    当您不确定应该如何注册服务时,请使用暂时生存期。这是使用最安全的选项,而且可能是最常用的,因为每次请求服务时都会创建服务。此生存期最适用于轻量级和无状态服务,因为它们在请求结束时被释放。但是,请注意,短暂的生命周期可能会影响应用的性能,特别是当您正在处理一个庞大的整体式应用时,其中依赖项引用是巨大而复杂的。

    如果希望每个客户端 web 请求创建一次对象,请使用作用域生存期。这是为了确保每个请求的相关调用(处理相关操作)都包含在相同的对象实例中。(使用作用域生存期的)一个很好的例子是注册数据库服务或上下文,例如 EntityFrameworkCore。

    对实例化成本很高的服务使用单例生存期,因为对象将存储在内存中(并且可以在应用中的所有注入中重用)。注册为单例的服务将只创建一次,并且在应用的整个生命周期内,所有依赖项将共享同一对象的同一实例。使用单例的一个好例子是注册记录器或应用配置。

  3. Add()方法是在 DI 容器中注册服务最常用的方法。Add()方法为服务创建注册,并且可能会创建重复注册,这可能会影响应用的行为。TryAdd()方法仅在没有为给定服务类型定义实现时注册服务。这可以防止您意外地替换以前注册的服务。所以,如果你想安全登记你的服务,那么考虑使用 AUTYT3ED 方法。

第五章——Blazor 入门

  1. 您可以使用 Blazor 服务器或 Blazor WebAssembly 创建 web 应用。Blazor 还支持构建本机和混合移动应用,称为 Blazor 移动绑定。
  2. Blazor 的最大卖点是不必学习硬核 JavaScript 来构建 SPA web 应用。学习框架本身很容易,只要你知道基本的 HTML 和 CSS。它旨在帮助 C#开发者利用他们的技能,在构建基于 SPA 的 web 应用时轻松过渡到 web 模式。

第 8 章-在 ASP.NET 中使用身份

  1. 认证是关于你是谁,授权是关于你能做什么。
  2. 对于这些用例中的大多数,推荐的流程是授权代码流(使用 PKCE)。
  3. Azure AD B2C 使与外部身份提供商的集成变得更容易,这既因为它将实现从代码中抽象出来,也因为它允许对注册和登录体验进行细粒度控制。

第 9 章-Docker 入门

  1. 与虚拟机相比,容器的存储空间更小,启动速度更快。这是因为容器的抽象在操作系统级别,而虚拟机的抽象在硬件级别。
  2. 尽管 Redis 可以支持持久卷,但它并不打算取代 RDBMS。
  3. 对您可以查看图像和容器,也可以轻松查看日志、端口和其他设置。
  4. 希望你喜欢这一章,就像我们喜欢写它一样。

第 10 章-部署到 AWS 和 Azure

  1. 虚拟网络(VNET)构成了一个基础设施即服务产品,允许您定义路由。这使得(设备和网络之间的)连接可以被授予或拒绝。例如,VNET 可能有一个规则,只允许特定的 IP 地址或端口接收来自 internet 的请求。
  2. 定义健康端点是一种常见做法,大多数本地和云负载平衡器都支持这种做法。AWS Elastic Beanstalk 和 Azure 应用服务都支持运行状况端点监视。
  3. AWS 和 Azure 都在 VisualStudio 中提供了优秀的工具。我们认为展示 ASP.NET Core 和 Visual Studio 如何在 Azure 以外的平台上得到广泛支持是很重要的。
  4. 我们故意忽略了关于哪个云提供商更好的判断。这两个云提供商都为托管 ASP.NET Core 应用提供了强大的支持,范围从小型组织到大型企业。

第 11 章-浏览器和 Visual Studio 调试

  1. PWA 是从服务器交付的,但它们仅在浏览器中运行。
  2. 会话和本地存储仅对正在运行的浏览器可见。在大多数情况下,最好的选择是建立一个数据库,以便向大量用户共享信息。
  3. 不,所有主要的浏览器都支持开发者工具。
  4. 是的,VisualStudio 可以调试在同一个项目中运行的 JavaScript 和 C。

第 12 章——与 CI/CD 集成

  1. 否,免费计划中提供 GitHub 操作。但是,您可以存储的数量和运行工作流的次数是有限制的。
  2. GitHub 可用于存储源代码、文档或任何文件集合。
  3. GitHub 操作提供了几种类型的触发器,允许将 CI/CD 进程拆分为多个文件。
  4. 在部署到 Azure 和 AWS 等云提供商时,CI/CD 非常有意义。在许多方面,云是 CI/CD 的理想选择,我们将在下一章中详细介绍这一点。

第 13 章——开发云原生应用

  1. IaaS——基础设施即服务,PaaS——平台即服务,SaaS——软件即服务。
  2. 写模式是经典的 SQL 模型,在这里输入新数据时需要遵守规则。写模式是输入动态数据和在使用数据时定义结构的更灵活的方法。
  3. “基础架构即代码”可帮助您以可重复且一致的方式大规模自动化资源的创建。