描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302479901丛书名: .NET开发经典名著
《ASP.NET Core应用开发》通过一个跨平台Web应用程序
的开发、部署与管理的完整流程,指导你学习ASP.NET Core。
你将掌握微软革命性的开源ASP.NET Core技术,并学习如
何将MVC、Docker、Azure Web Apps、Visual Studio、C#、
JavaScript和Entity Framework融汇贯通。通过与一个虚拟的
Alpine Ski House开发团队并肩工作,你将见证四个全新迭代的
完整开发过程。你将看到这个团队是如何架构和设计他们的软
件,响应用户的反馈,以及完成开发、测试、部署、维护和重
构等各个环节的工作。
*终,你将了解如何更快、更稳定地创建一流水准的软件。
三位*微软MVP展示了如何:
◆ 使用ASP.NET Core和开源框架构建强大的跨平台应用程序
◆ 超越MVC,构建一个完整的ASP.NET Core应用程序
◆ 从项目开始的*天就开始生成并发布版本,快速部署迭
代中的产品
◆ 集成Azure支持,获得云服务的扩展能力
◆ 在Linux上运行或开发跨平台的解决方案
◆ 使用Docker获得一致的开发环境
◆ 使用Entity Framework Core 1.0访问数据
◆ 使用更新的Razor视图引擎生成HTML视图
◆ 使用身份确保安全性和提供权限管理
◆ 使用依赖注入提高可测试性与可维护性
◆ 在ASP.NET Core环境中使用和管理JavaScript
◆ 使用SASS编写可维护的靓丽CSS
◆ 充分利用标签助手和其他可重用组件
◆ 设计、组织并重构应用程序,灵活应对变化
目 录
第?Ⅰ部分 Alpine Ski House
第1章 一路走来 5
1.1 Active Server Pages(ASP) 6
1.2 ASP.NET 7
1.3 ASP.NET MVC 10
1.4 Web API 13
1.5 ASP.NET Core 14
1.6 本章小结 15
第2章 影响者 17
2.1 向后兼容性 18
2.2 Rails 18
2.3 Node.js 21
2.4 Angular和React 22
2.5 开源 23
2.6 OWIN 23
2.7 本章小结 24
第3章 模型、视图和控制器 25
3.1 MVC中的M、V和C 26
3.1.1 深入了解模型 26
3.1.2 视图 28
3.1.3 局部视图 28
3.1.4 控制器 29
3.2 MVC以外的内容 30
3.2.1 中间件 30
3.2.2 依赖注入 31
3.2.3 其他亮点 32
3.3 本章小结 32
第4章 定义项目范围 33
4.1 滑雪场 34
4.2 API接口 36
4.3 管理界面 37
4.4 综上所述 37
4.5 定义我们的领域模型 38
4.6 本章小结 39
第5章 生成 41
5.1 命令行生成 42
5.2 生成服务器 43
5.3 生成流水线 44
5.4 生成Alpine Ski House 46
5.5 本章小结 51
第6章 部署 53
6.1 选择Web服务器 54
6.2 Kestrel 54
6.3 反向代理 55
6.4 IIS 56
6.5 Nginx 58
6.6 发布 60
6.6.1 生成类型 61
6.6.2 生成安装包 62
6.6.3 关于Azure 63
6.6.4 Azure部署 65
6.7 容器部署 68
6.8 本章小结 68
第?Ⅱ部分 迭代回顾:千里之行
第7章 使用Microsoft Azure构建
Web应用程序 71
7.1 平台即服务 72
7.1.1 平台服务 72
7.1.2 搭建、删除和重建你的
服务 74
7.2 使用平台服务生成应用程序 75
7.2.1 创建一个存储账号 76
7.2.2 在Blob Containers中存储
图片 77
7.2.3 使用存储队列 79
7.2.4 使用Azure WebJobs进行
自动处理 79
7.3 扩展你的应用程序 81
7.3.1 多方位扩展 81
7.3.2 弹性扩展 81
7.3.3 扩展性上的考虑 83
7.4 本章小结 84
第8章 跨平台 85
8.1 在Ubuntu上运行 86
8.1.1 安装.NET Core 86
8.1.2 dotnet CLI 86
8.2 选择代码编辑器 89
8.3 Linux上的Alpine Ski House 89
8.4 .NET Core 92
8.5 本章小结 95
第9章 容器 97
9.1 可重复的环境 98
9.2 Docker 101
9.3 Windows容器 105
9.4 生产环境中的Docker 107
9.5 在云端 108
9.6 本章小结 109
第10章 Entity Framework Core 111
10.1 Entity Framework的基础
知识 112
10.1.1 查询单条记录 114
10.1.2 查询多条记录 114
10.1.3 保存数据 115
10.1.4 跟踪修改 115
10.1.5 使用迁移创建和更新
数据库 116
10.2 ApplicationDbContext 122
10.3 SkiCardContext 125
10.3.1 跨越上下文边界的
关联 126
10.3.2 连接控制器 128
10.4 门票类型 133
10.5 门票与验证 135
10.6 本章小结 139
第11章 Razor视图 141
11.1 今天,开发人员如何
创建网站 142
11.1.1 学习之前的成功经验 142
11.1.2 理解Razor的角色 143
11.2 掌握Razor的本质 143
11.2.1 幕后揭秘 143
11.2.2 使用Razor语法编写
表达式 145
11.2.3 切换到代码 146
11.2.4 显式使用标记 147
11.2.5 Razor解析器的控制符
速查表 148
11.3 使用更多C#功能 148
11.3.1 在视图中使用C#类型 148
11.3.2 定义模型 149
11.3.3 使用视图数据 149
11.4 使用布局 151
11.4.1 布局基础 151
11.4.2 在视图中包含部件 153
11.4.3 定义和使用局部视图 153
11.5 使用Razor高级功能增强
视图 154
11.5.1 在视图中注入服务 154
11.5.2 使用标签助手 155
11.5.3 避免视图重复 158
11.6 使用其他视图引擎 159
11.7 本章小结 159
第12章 配置和日志 161
12.1 抛弃web.config 162
12.1.1 配置你的应用程序 162
12.1.2 使用现成的配置提供
程序 164
12.1.3 创建自定义配置提供
程序 165
12.1.4 使用选项模式 167
12.2 作为一等公民的日志 168
12.2.1 创建清晰明确的日志 169
12.2.2 关于异常信息的设置 170
12.2.3 作为部署策略的日志
记录 171
12.2.4 ASP.NET Core中的日志
级别 171
12.2.5 使用日志作用域增强
日志功能 174
12.2.6 使用结构化日志框架 176
12.2.7 日志即服务
(Logging as a Service) 178
12.3 本章小结 179
第?Ⅲ部分 迭代回顾:激流勇进
第13章 身份标识、安全与权限
管理 185
13.1 纵深防御 185
13.1.1 内部威胁 186
13.1.2 外部威胁 187
13.2 用户密钥 187
13.3 ASP.NET Core MVC中的
标识管理 193
13.4 其他第三方认证提供程序 198
13.5 使用策略进行授权 202
13.5.1 全局应用策略 202
13.5.2 为选择的用户定义
策略 202
13.5.3 自定义授权策略 204
13.5.4 保护资源 205
13.5.5 跨域资源共享(CORS) 208
13.6 本章小结 209
第14章 依赖注入 211
14.1 什么是依赖注入 212
14.1.1 手工解析依赖 212
14.1.2 使用服务容器解析
依赖 213
14.2 ASP.NET Core中的依赖
注入 214
14.2.1 使用内置容器 215
14.2.2 使用第三方容器 217
14.3 本章小结 219
第15章 JavaScript的地位 221
15.1 编写优雅的JavaScript 222
15.2 我们是否需要JavaScript 223
15.3 组织 223
15.4 是否要实现单页面
应用(SPA) 224
15.5 构建JavaScript 225
15.5.1 Bundler & Minifier 225
15.5.2 Grunt 227
15.5.3 gulp 228
15.5.4 WebPack 230
15.5.5 哪个工具更适合我 232
15.6 TypeScript 232
15.6.1 ES2015到ES5的
编译器 233
15.6.2 类型系统 234
15.7 模块加载 236
15.8 选择一个框架 237
15.9 本章小结 238
第16章 依赖项管理 241
16.1 NuGet 242
16.2 npm 244
16.2.1 添加依赖项 245
16.2.2 使用npm模块 245
16.2.3 与Visual Studio的
集成 246
16.3 Yarn 247
16.4 Bower 249
16.4.1 添加依赖项 250
16.4.2 引用Bower程序包中的
资源 250
16.5 本章小结 251
第17章 前端与样式 253
17.1 使用样式表构建网站 254
17.1.1 回首往事 254
17.1.2 创建自己的样式表 256
17.2 使样式更时髦 257
17.2.1 SCSS基础 258
17.2.2 创建Mixin 262
17.2.3 组合Mixin和指令 263
17.3 建立开发工作流 263
17.3.1 使用命令行工具 264
17.3.2 结合Visual Studio Code 264
17.3.3 修改项目的生成任务 264
17.4 使用第三方框架 265
17.4.1 扩展CSS框架 266
17.4.2 自定义CSS框架的
基本面 266
17.4.3 在自定义样式表中利用
CSS框架 267
17.4.4 CSS框架的替代品 268
17.5 本章小结 268
第18章 缓存 269
18.1 缓存控制(Cache-Control)头 270
18.2 使用Data-Cache 273
18.2.1 内存缓存 273
18.2.2 分布式缓存 274
18.3 缓存的限度 276
18.4 本章小结 276
第?Ⅳ部分 迭代回顾:后冲刺
第19章 可重用组件 279
19.1 标签助手 280
19.1.1 一个标签助手的组成
部分 280
19.1.2 Script/Link/Environment
标签助手 280
19.1.3 cache标签助手 282
19.1.4 创建标签助手 283
19.2 视图组件 286
19.2.1 调用视图组件 287
19.2.2 联系客户服务视图
组件 287
19.3 局部视图 289
19.4 本章小结 290
第20章 测试 291
20.1 单元测试 291
20.1.1 xUnit 292
20.1.2 JavaScript测试 304
20.2 其他测试类型 308
20.3 本章小结 308
第21章 可扩展性 309
21.1 约定 310
21.2 中间件 312
21.2.1 配置管道 312
21.2.2 编写自己的中间件 314
21.2.3 管道分支 315
21.3 加载外部的控制器和视图 316
21.3.1 从外部项目中加载
视图 317
21.3.2 从外部程序集中加载
控制器 317
21.4 路由 318
21.4.1 特性路由 319
21.4.2 高级路由 320
21.5 dotnet工具 320
21.6 JavaScript服务和同构
应用程序 321
21.6.1 同构应用程序 321
21.6.2 Node服务 322
21.7 本章小结 322
第22章 国际化 323
22.1 可本地化的文本 325
22.1.1 字符串本地化 325
22.1.2 视图本地化 328
22.1.3 数据修饰特性 328
22.1.4 共享资源文件 329
22.2 设置当前的区域性 330
22.3 本章小结 333
第23章 重构,改善代码质量 335
23.1 什么是重构 336
23.2 测量质量 337
23.3 寻找重构时机 338
23.4 安全重构 339
23.5 数据驱动修改 346
23.6 代码清理示例 346
23.7 工具来相助 350
23.8 收获品质 351
23.9 本章小结 351
第24章 组织代码 353
24.1 仓库结构 354
24.2 源代码内的结构 354
24.3 平行结构 355
24.4 MediatR 356
24.4.1 消息模式简介 356
24.4.2 实现中介者模式 357
24.5 区域 360
24.6 本章小结 361
后记 363
前 言
ASP.NET Core MVC是微软面向 .NET开发者的的Web框架,它是如今广为人知的ASP.NET
MVC框架的下一代,并致力于开启跨平台开发、部署的能力。它广泛利用了各种各样的开源库,当然,它本身也是开源的。ASP.NET Core MVC帮助开发者独立思考关于业务逻辑、路由、服务以及视图的实现,并提供了一套新的配置和扩展系统。它使用了C#编程语言,以及Razor视图引擎。不管你是一个经验丰富的.NET开发者,还是一个新手,使用ASP.NET Core MVC来构建项目应该都是不错的开端。
本书展示了一个重构项目的初几个迭代版本,该项目是由一个虚构公司Alpine Ski House的团队重新开发的。每一章都介绍了一些在开发过程中团队所遇到的挑战,以及他们是如何克服这些难关的。除了每章前面的一个小故事之外,本书深入介绍了从ASP.NET Core MVC的特性,到构建、维护和部署应用程序所使用的相关工具。
除故事片段和关于ASP.NET Core MVC的技术内容之外,本书还讨论了新版的Entity Framework、包管理系统,以及其他在Web开发领域中流行的周边工具。除相关技术内容的介绍外,本书也附带了一个项目——正是Alpine Ski House的开发者们构建的那个项目。
本书读者对象
本书以一个程序员的视角,贯穿了使用ASP.NET Core开发一个全新应用程序,并将其发布到互联网上的所有必经步骤。不过仍然有相当多的程序员还没有接触过Web开发,或者还停留在Webforms时代,很少接触到如今全新的各种工具。本书将帮助他们掌握这些技巧、树立信心来跟上脚步,使用新兴的框架来构建现代应用程序。本书将帮助读者探索应用程序的架构,部署并构建适用于云端的应用程序。
阅读本书的前提条件
本书的读者需要拥有中高级的程序开发能力、熟练掌握C#、拥有Web开发的背景知识,并了解Visual Studio的基本功能。如果了解上一个版本的MVC会更有帮助,不过它不是必需的。熟悉使用命令行界面进行工作也是个加分项。在阅读本书后,你将有能力构建一个真实的、由关系型数据库驱动的应用程序,并可以将其部署在基于云端的基础架构。
本书可能不适合……
如果你是经验丰富的高级ASP.NET MVC开发者,始终在密切关注甚至参与了ASP.NET Core MVC开发的话,那么本书可能不太适合你。
本书结构安排
本书创新性地从开发者的视角出发,贯穿了一个完整应用程序开发的各个迭代环节。书中不仅包含了技术内容,也涵盖了如何从错误中吸取教训、根据用户的反馈进行调整,从零开始,逐步构建出一个完整的产品。
本书分为如下四个部分:
●
第Ⅰ部分:“Alpine Ski House”。介绍了一些背景知识,构建了示例应用程序,并引入了贯穿本书的所有虚构角色。
●
第Ⅱ部分:“迭代回顾:千里之行”。关注能够让应用程序运行起来的必要特性,对构建流水线进行配置,使配置实时生效,从而使整个团队都关注到项目进度。
●
第Ⅲ部分:“迭代回顾:激流勇进”。关注一些核心的特性能够在示例程序的基础上加上所需的业务逻辑。该部分中,我们使用了 Entity Framework Core来进行数据访问、使用 Razor 创建视图,还介绍了配置、日志、安全、用户管理,以及依赖注入。
●
第Ⅳ部分:“迭代回顾:后冲刺”。介绍了JavaScript、依赖管理,以及在前文介绍的基础上进行构架的内容。
在附录中包含了一些重要主题,比如测试、重构和扩展能力。
寻找本书切入点
本书中的不同章节涵盖了ASP.NET Core 框架中相关的各种技术。根据你的需要,以及你对微软技术栈的掌握程度,你可能会需要重点关注本书中某些特定的领域。可以通过如下表格来决定你阅读本书的切入点:
如果你……
阅读建议
是ASP.NET Core开发的新手,或者已经是ASP.NET Core的开发者
关注第Ⅰ、第Ⅱ和第Ⅲ部分,或者按照顺序阅读整本书
熟悉之前版本的ASP.NET 如果你只需要关注核心内容,可以略过前两章,并通读本书中的其他章节,以了解新的技术
对客户端开发感兴趣
阅读第Ⅳ部分的第15、16、17章,略读第20章中关于 JavaScript 服务的介绍
对跨平台开发感兴趣
整本书的内容都可应用在跨平台开发中,不过第8、9章的主题特别涉及了该内容
本书中的大部分章节都包括了动手示例,通过它们你可以练习刚刚学到的内容。不论你关注的是哪部分内容,请在你的系统中下载并安装示例应用程序。
本书的约定和特色
本书在介绍内容时使用了一些约定,了解它们可以让阅读变得更易理解。
●
本书中的代码是面向 C# 程序员的,使用的语法涵盖了 HTML、CSS、SCSS和Razor。
●
在两个按键之间使用加号( )表示同时按下两个键。比如“按下Alt Tab”的意思是你需要在按住Alt键的同时,按下Tab键。
●
在两个或多个菜单项之间的竖线符号(比如文件 | 关闭),意思是你需要先选择个菜单或菜单项,然后再选择下一个,以此类推。
系统要求
为了运行本书的示例应用程序,你需要如下的软、硬件配置:
● .NET Core 1.0及以上版本,可以跨平台安装,来自https://dot.net。
●
选择你的代码编辑器。我们使用的是Windows上的Visual Studio 2015(任何一个版本都可以)及以上版本,或者也可以使用Windows / Mac / Ubuntu Linux上的Visual Studio Code。
● SQL Server LocalDB(包含在Windows中的Visual Studio 2015及以上版本中)。对于Linux或者Mac的用户,你需要访问一个位于其他Windows机器或者MicrosoftAzure上的SQLServer数据库。
●
电脑的处理器至少是1.6GHz。
●
至少1GB内存。
● 4GB剩余磁盘空间。
●
互联网连接(用于下载软件和示例项目)。
根据你的Windows配置,可能需要本地管理员权限来安装或配置Visual Studio 2015。
下载:示例项目
本书中大部分章节都包含了来自这个示例项目中的代码片段,该项目可以在GitHub上找到:
https://github.com/AspNetMonsters/AlpineSkiHouse
按照GitHub上的指示下载并运行该示例代码。
注意:
除了示例项目之外,你的系统还需要安装.NET Core 1.0及以上的版本。
勘误表、更新及内容支持
我们尽了的努力来确保本书内容的正确性。你可以访问本书的更新(以勘误表的形式记录了相关的错误和纠正内容):
https://aka.ms/ASPCoreAppDev/errata
如果你发现了一个尚未列出的错误,请使用该页面提交错误。
可以在网站https://aka.ms/ASPCoreAppDev/downloads中下载所有的示例代码以及完整的应用程序。
请注意上述地址并不提供对微软的软、硬件产品的支持。如果需要这些支持,请访问http://support.microsoft.com。
期待您的反馈
在 MS Press,您的满意是我们首要的目标,您的反馈是我们有价值的资产。请通过如下地址告诉我们你对本书的看法:
http://aka.ms/tellpress
我们知道你公务繁忙,所以只保留了非常简短的几个问题。你的答案将会直接发送给MS Press的编辑(不需要提供你的个人信息)。非常感谢您的反馈!
保持关注
让我们持续保持交流,我们的Twitter是http://twitter.com/MicrosoftPress。
评论
还没有评论。