零、前言

每天,软件开发人员、应用架构师和 IT 项目经理都在尽可能快地构建应用,以便成为各自市场的领导者:上市时间是最重要的。 不幸的是,这些应用的质量和性能往往不如预期,因为它们没有经过充分的测试、优化和保护。

在过去的几年里,ASP.NET 已经发展成为 web 应用开发市场上最一致、最稳定、功能最丰富的框架之一。 它提供了所有您能想到的关于性能、稳定性和安全性的预期特性。

一段时间以来,IT 市场一直在变化。 现在需要遵循不同的标准,客户期望实现工业化、高性能和可伸缩的应用,而开发人员要求框架能够提供更高的生产力和可扩展性,以适应特定的业务需求。 这使得微软对他们的网络技术进行了彻底的反思。

因此,微软建立了 ASP.NET Core,它使开发人员能够做以下工作:

  • 创建应用并在特定环境中编译它们,然后在任何环境(如 Linux、Windows 或 macOS)中运行它们
  • 使用带有附加功能的第三方库
  • 使用各种工具、框架和库
  • 为前端开发采用最新的最佳实践
  • 开发灵活、响应迅速的 web 应用

ASP.NET Core 2.0 和 Microsoft Visual Studio 2017 一起包含了一些特性,可以让你作为一个 web 开发人员的生活更轻松、更高效。 例如,Visual Studio 提供项目模板,您可以使用这些模板来开发您的 web 应用。 Visual Studio 还支持几种开发模式,包括在开发期间使用 Microsoft Internet Information Services (IIS)直接测试您的 web 应用,以及使用内置 web 服务器和通过 FTP 开发您的 web 应用。

使用 Visual Studio 中的调试器,您可以运行应用并逐步检查代码的关键区域以发现问题。 使用 Visual Studio Editor,您可以有效地开发用户界面。

当您准备部署应用时,Visual Studio 可以轻松创建部署包,用于在 Azure、Amazon Web Services 和 Docker 或任何其他平台(包括 Linux 和 macOS)上进行部署。 这些只是 ASP 中内置的一些特性.NET Core 框架与 Visual Studio 结合使用时。

这本书提供了最新的最佳实践和 ASP.NET Core 指导,让你快速跟上速度。 这本书的每个部分介绍了具体的 ASP.NET Core 2.0 特性以一种易于阅读的格式提供详细的示例。 按部就班的指示立即产生工作结果。 ASP 的大部分关键特性.NET Core 使用简洁、易于理解和可重用的示例进行说明。 这些例子丰富多彩,既能说明功能,又不显得生硬。

除了显示 ASP.NET Core 特性示例,本书包含每个特性的实际应用,以便您可以在现实世界中应用这些技术。 在阅读这本书并应用这些练习之后,您将在构建高效的 web 应用方面有一个良好的开端,这些应用包括现代特性,如 MVC、web api、自定义视图组件和标记助手。

我们希望这本书能在你的日常工作中帮助你,作为一个开发人员,阅读它会给你带来和写作它给我们带来的一样多的乐趣。

很久以前,NGWS 和。net 框架

下面是一小段历史,来解释。net 框架这些年是如何演变的,以及为什么你今天必须考虑。NET Core 框架:

微软在 20 世纪 90 年代末开始致力于我们现在所知道的。net 框架,并在 2001 年底发布了。net Framework 1.0 的第一个测试版。

最初,这个框架被命名为下一代 Windows 服务 NGWS(内部代码为 Lightning/Project 42)。 一开始,开发人员只能使用 VB.NET 作为编程语言。 超过 10 个框架版本之后,已经实现了很多。 今天,您可以在大量的语言、框架和技术之间进行选择。

一开始,InterDev 是开发 ASP Pages 的主要开发环境,您必须使用命令行 VBC 编译器工具来编译您的代码。

我们心爱的 Visual Studio 开发环境的第一个版本于 2002 年 2 月发布,它为 Windows 客户机和 Windows 服务器家族(NT 4、Windows 98、Windows ME、Windows XP,然后是 Windows 2000)带来了一个通用的运行时环境。

大约在同一时间,微软提供了一个更轻的框架,名为 Compact framework,用于在 Windows Mobile 上执行 Windows CE。 最后一个版本是在 2008 年 1 月发布的版本 3.5 RTM,之后被新的移动技术取代。

第一个. net SDK 发布于 2003 年 4 月,当时是. net Framework 1.1,并包含在 Visual Studio 2003 中。 它是第一个包含在 Windows Server 操作系统中的版本,并与 Windows 2003 一起发布。

. net Framework 2.0 是在 2006 年 1 月 Windows 98 和 Windows Me 期间发布的。 它对公共语言运行时(CLR)进行了重大升级。 它是第一个完全支持 64 位计算并与 Microsoft SQL Server 完全集成的版本。 它还引入了新的 Web Pages Framework,提供了皮肤、模板、母版页和样式表等特性。

. net Framework 3.0 (WinFX)于 2006 年 11 月发布。 它包含了一组新的托管代码 api。 这个版本添加了一些新技术来构建新类型的应用,例如 Windows Presentation Foundation (WPF)、Windows Communication Foundation (WCF)、Windows Workflow Foundation (WWF)和 Windows CardSpace(后来集成到 Windows Identity Foundation 中)。

. net Framework 3.5 在一年后的 2007 年扩展了 WinFX 特性。 这个版本包含了 Linq、ADO 等关键特性。 净,ADO.NET 实体框架和 ADO。 净数据服务。 此外,它还附带了两个新的程序集,这两个程序集后来成为了 MVC 框架的基础:System.Web.Abstraction 和 System.Web.Routing。

.NET Framework 4.0 于 2009 年 5 月发布; 它为公共语言运行时(CLR)提供了一些主要的升级,并添加了 Parallel 扩展来改进对并行计算、动态分派、命名参数和可选参数的支持,以及代码契约和 BigIntegerComplex 数字格式。

在。net Framework 4.0 发布之后,微软发布了一系列改进,以 Windows Server AppFabric 框架的形式构建微服务。 本质上,它提供了一个 InMemory 分布式缓存和一个应用服务器场。

.NET Framework 4.5 于 2012 年 8 月发布; 它增加了一个所谓的 Metro 风格的应用(后来演变成通用 Windows 平台应用)、核心特性和微软扩展框架(MEF)。

关于 ASP.NET,这个版本更兼容 HTML5, jQuery,并提供捆绑和缩小,以提高网页性能。 它也是第一个支持 WebSockets 和异步 HTTP 请求和响应的。

.NET Framework 4.6.1 于 2015 年 11 月发布; 它需要 Windows 7 SP1 或更高版本,这是一个重要的版本。 其中的一些新特性和 api 包括对 AlwaysOn、Always Encrypted 的 SQL 连通性的支持,以及在使用 Azure SQL 数据库时改进的连接弹性。 它还为使用更新后的系统的分布式事务添加了 Azure SQL 数据库支持。 事务 api,并在 RyuJIT、GC 和 WPF 中提供了许多其他性能、稳定性和可靠性相关的修复。

.NET Framework 4.6.2 于 2016 年 3 月发布; 它增加了对超过 260 个字符的路径、X.509 证书中的 FIPS 186-3 DSA 以及数据注释的本地化的支持,并且资源文件被移动到 App_LocalResources 文件夹。 此外,ASP.NET 会话提供程序和本地缓存管理器与异步框架兼容。

.NET Framework 4.7 于 2017 年 4 月发布; 它包含在 Windows 10 creator 更新中。 一些新特性包括椭圆曲线加密的增强加密和改进的传输层安全(TLS)支持,尤其是在版本 1.2 中。 它还引入了对象缓存存储,使开发人员能够通过实现 ICacheStoreProvider 接口轻松地提供自定义提供者。

在应用和内存监视器之间还有一个更好的集成,并且著名的内存限制了反应,这使得开发人员能够在 CLR 截断内存中缓存的对象并覆盖默认行为时观察到它。

然后,微软从一开始就考虑到开源多平台,开发了一个全新的。net 框架。 它被介绍为 ASP.NET 5,后来重命名为 ASP.NET Core 框架。

2016 年 6 月,理查德•兰德(Richard Lander)发布了第一个版本 1.0; ASP.NET MVC 和 Web API 框架合并到一个单一的框架包中,您可以通过 NuGet 轻松地添加到您的项目中。

第二版,.NET Core Framework 1.1,于 2017 年 11 月发布; 它运行在更多的 Linux 发行版上,性能得到了提高,它与 Kestrel 一起发布,在 Azure 上的部署得到了简化,生产力得到了提高。 Entity Framework Core 开始支持 SQL Server 2016。

请注意。net Core Framework 1.0 和 1.1 将被微软支持到 2019 年 6 月。

. NET Core 框架的最新版本是 2.0。 首个预览版于 2017 年 5 月发布。 第二版预览版于 2017 年 6 月出版,也是本书的最终版,已于 2017 年 8 月出版。

微软已经极大地改进了。NET Core 框架。 这些改进和扩展是。net Core 2.0 愿景的结果; 它使您能够在更多的地方使用更多的代码。

.NET Core 2.0 中包含了以下改进:

  • 相对于。net Core 1.x,大量 API 增加(>100%)
  • 支持。net 标准 2.0
  • 支持引用。net 框架库和 NuGet 包
  • 对 Visual Basic 的支持

此外,.NET Standard 2.0 带来了以下新特性:

  • 更大的 API 表面——它扩展到涵盖。net 框架和 Xamarin 之间的交集。 这也使得。net Core 2.0 更大,因为它实现了。net Standard 2.0。 . net 标准增加的 api 总数约为 20000 个。
  • 它可以引用现有的。net 框架库。 最好的办法是不需要重新编译,所以这包括现有的 NuGet 包。
  • . net Core 支持更多的 Linux 发行版。 三星电子正在努力为移动操作系统 Tizen 提供支持。
  • 最重要的是,. net Core 是。net 世界中最快的应用运行时。

另外,请注意大多数常规库都可以在 GitHub 上找到。 任何想要扩展或改变任何标准行为的人都可以分叉并重新构建它们。

这本书的内容

这本书被组织成解释 ASP 的多个章节.NET Core 2.0 特性以一种简单易懂的格式和实际示例呈现。 ASP 的大部分关键特性.NET Core 2.0 使用简洁、高效的例子和循序渐进的指令来说明立即产生的工作结果。

你不需要按任何顺序阅读章节就能发现这本书有用。 除了第一章,每一章都是独立的,第一章详细介绍了 ASP 的基本原理.NET core—如果您从未涉足过桌面应用开发之外的领域,那么您可能想先阅读一下它。

以下主题将贯穿全书:

第一章,什么是 ASP ? NET Core 2.0 ? ,描述了 ASP 的特点和功能.NET Core 2.0,但也有技术限制,这应该允许您了解在哪些情况下它可能很适合您自己的需求和期望什么。

第二章,环境设置详细说明了如何设置您的开发环境以及如何创建您的第一个 ASP.NET Core 2.0 应用。 您将学习如何使用 Visual Studio 2017 或 Visual Studio Code,如何安装运行时,以及如何使用 Nuget 检索所有必要的 ASP.NET Core 2.0 依赖。

第三章,在 VSTS 中创建一个连续集成管道,展示了如何建立一个完整的 Visual Studio Team Services (VSTS)连续集成管道。 您将学习如何使用云中的 VSTS 完全自动化构建、测试和部署应用。

第四章、ASP 的基本概念; NET Core 2.0 -第 1 部分,阐述了 ASP 的基本结构和概念.NET Core 2.0 应用。 它展示了所有内容在内部是如何工作的,以及可以使用哪些类和方法来覆盖基本行为。 同时也为其他章节提供了理论背景。

第五章、ASP 的基本概念; NET Core 2.0 -第 2 部分,在第 4 章中介绍了 ASP 的基本概念.NET Core 2.0 -第 1 部分,本章将深入探讨 asp.net 的核心.NET Core 2.0 概念。 您将了解由 ASP 提供的组件和功能.NET Core 来构建响应式 web 应用。

第六章,创建 MVC 应用,提供了所有的概念和必要的一切来创建您的第一个 ASP.NET Core 2.0 MVC 应用。 您将学习 MVC 应用的细节,以及如何有效地实现它们。 此外,您将看到单元测试和集成测试如何帮助您构建 bug 更少的更好的应用,从而降低维护成本。

第七章,创建 Web API 应用,涵盖了 Web API 框架,并提供了创建您的第一个 ASP.NET Core 2.0 Web API。 您将看到不同的 Web API 样式,如 RPC、REST 和 HATEOAS,并了解何时使用它们以及如何以有效的方式实现它们。

第八章,访问数据使用实体框架核心 2,展示了如何访问数据库使用实体框架核心 2,在使用的所有高级功能(代码首先,流利的 API、数据迁移、InMemory 数据库,等等)提供。

第 9 章保钉 NET Core 2.0 应用,说明了如何使用内置的 ASP.NET Core 2.0 的用户身份验证特性,以及如何通过添加外部提供者来扩展这些特性。 如果你需要保护你的应用,那么这一章就是你想去的地方。

第十章ASP 的托管和部署 NET Core 2.0 应用,是关于当托管和部署您的 ASP. NET Core 2.0 应用时,您所拥有的各种选项.NET Core 2.0 web 应用。 您将了解如何为给定的用例选择适当的解决方案,这将允许您为自己的应用做出更好的决策。

第十一章管理和监督 ASP.NET Core 2.0 Applications,最后将是关于如何管理和监督部署后的产品应用的一章。 它将极大地帮助您诊断您的 ASP 问题.NET Core 2.0 web 应用在运行时,减少了理解和修复 bug 的时间。

你写这本书需要什么

你将需要 Visual Studio 2017 社区版或 Visual Studio Code,这两者都是免费的测试和学习目的,能够遵循本书中的代码示例。 您还可以使用您选择的任何其他文本编辑器,然后使用 dotnet 命令行工具,但是建议使用前面提到的开发环境之一,以提高生产率。

在本书的后面,我们将使用数据库,所以你也需要一个版本的 SQL Server(任何版本中的任何版本都可以)。 我们建议使用 SQL Server 2016 Express Edition,测试也是免费的。

在接下来的章节中可能会介绍其他的工具或框架。 我们将解释当它们被使用时如何检索它们。

如果你需要为 Linux 开发,那么 Visual Studio Code 和 SQL Server 2016 是你的主要选择,因为它们是唯一运行在 Linux 上的。

此外,你还需要 Azure 订阅和 Amazon Web 服务订阅来阅读书中展示的一些例子。 有多个章节专门向您展示如何利用云。

这本书是给谁的

这本书是为那些想要用 ASP 构建现代 web 应用的开发人员编写的。 2.0 NET Core。 没有 ASP 的先验知识.NET 或。NET Core 是必需的。 但是,需要具备基本的编程知识。 此外,以前的 Visual Studio 经验会有所帮助,但不是必需的,因为详细的说明将指导您通过本书的示例。 本书还可以帮助从事基础设施工程和操作的人员在 ASP 运行时监视和诊断问题.NET Core 2.0 web 应用。

约定

在这本书中,你会发现许多不同的文本样式来区分不同种类的信息。 下面是这些风格的一些例子以及对它们含义的解释。

文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 url、用户输入和 Twitter 句柄如下所示:“启动 Visual Studio 2017,打开Tic-Tac-ToeASP。 您创建的 NET Core 2.0 项目,创建三个名为ControllersServicesViews的新文件夹,并在Views文件夹中创建名为Shared的子文件夹。

一段代码设置如下:

    [HttpGet] 
    public IActionResult EmailConfirmation (string email) 
    { 
      ViewBag.Email = email; 
      return View(); 
    } 

任何命令行输入或输出都写如下。 为了提高可读性,输入命令可能被分成几行,但需要在提示符中连续输入一行:

sudo apt-get install code

新词语、重要词语以粗体显示。 您在屏幕上看到的单词,例如菜单或对话框中,会出现如下文本:“打开 Visual Studio 2017,转到 Team Explorer 选项卡,并单击 Branches 按钮”。

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

读者的反馈

我们欢迎读者的反馈。 让我们知道你对这本书的看法——你喜欢或不喜欢这本书。 读者反馈对我们来说很重要,因为它能帮助我们开发出你能真正从中获益最多的游戏。

要向我们发送一般性的反馈,只需发送电子邮件feedback@packtpub.com,并在邮件的主题中提到这本书的标题。

如果有一个主题,你有专业知识,你有兴趣写或贡献一本书,请参阅我们的作者指南www.packtpub.com/authors

客户支持

现在,你已经自豪地拥有了一本书,我们有一些东西可以帮助你从购买中获得最大的好处。

下载示例代码

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

你可以按以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的 SUPPORT 选项卡上。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入书名。
  5. 选择您想要下载代码文件的书。
  6. 从下拉菜单中选择你购买这本书的地方。
  7. 点击代码下载。

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

  • WinRAR / 7-Zip for Windows
  • 泥柱/学校不洁净
  • 7-Zip / PeaZip for Linux

该书的代码包也托管在 GitHub 上的以下存储库:

我们还可以在https://github.com/PacktPublishing/中找到丰富的图书和视频目录中的其他代码包。 检查出来!

勘误表

尽管我们已经竭尽全力确保内容的准确性,但错误还是会发生。 如果你在我们的书中发现错误,也许是文本或代码上的错误,如果你能向我们报告,我们将不胜感激。 通过这样做,您可以使其他读者免受挫折,并帮助我们改进这本书的后续版本。 如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交表格链接,并输入您的勘误表详细信息。 一旦您的勘误表被核实,您的提交将被接受,勘误表将被上载到我们的网站或添加到该标题的勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请访问https://www.packtpub.com/books/content/support并在搜索字段中输入书名。 所需信息将出现在勘误表部分。

盗版

在互联网上盗版受版权保护的材料是一个贯穿所有媒体的持续问题。 在 Packt,我们非常重视版权和授权的保护。 如果您在网上发现我们的作品以任何形式的非法拷贝,请立即提供我们的地址或网站名称,以便我们进行补救。

请通过copyright@packtpub.com与我们联系,并提供疑似盗版资料的链接。

我们感谢您的帮助,保护我们的作者和我们的能力,为您带来有价值的内容。

问题

如果您对本书的任何方面有任何疑问,您可以通过questions@packtpub.com与我们联系,我们将尽力解决问题。