C# 11和.NET 7入门与跨平台开发(第7版)
- ISBN:9787302653288
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:656
- 出版时间:2024-02-01
- 条形码:9787302653288 ; 978-7-302-65328-8
本书特色
《C# 11和.NET 7入门与跨平台开发(第7版)》针对C# 11和.NET 7的全新特性进行全面修订,帮助你自信地使用C#编写代码。
你将全面学习面向对象编程,包括编写、测试和调试函数,实现接口,以及继承类等。之后,你将学习如何使用.NET API来执行不同的任务,如管理和查询数据、使用文件系统以及序列化。在学习过程中,你还将构建并部署一些跨平台项目,包括使用ASP.NET Core创建网站和服务。
为了避免不必要的图形用户界面代码让你分心,本书的前11章通过简单的控制台应用程序来讲解C#语言的构造和许多.NET库。掌握了基础知识后,你将在之后的章节中使用ASP.NET Core、MVC模式和Blazor构建网站、Web服务和浏览器应用。
内容简介
《C# 11和.NET 7入门与跨平台开发(第7版)》将为你学习C# 11和.NET 7奠定坚实的基础,使你能够自信地构建应用程序和服务。学习完本书,你将能够创建丰富的Web应用,并能牢牢掌握面向对象编程技术,进而能在此基础上进行项目开发。 ● 使用Blazor、Razor Pages、MVC模式和 ASP.NET Core的其他特性构建丰富的Web应用 ● 利用面向对象编程构建自己的类型 ● 编写、测试和调试函数 ● 使用LINQ查询和操作数据 ● 使用Entity Framework Core模型在应用程序中集成和更新数据库 ● 使用**的技术,包括Web API和*小API,构建和消费强大的服务
目录
1.1 设置开发环境 2
1.1.1 选择适合学习的工具和应用程序类型 3
1.1.2 跨平台部署 5
1.1.3 下载并安装Visual Studio 2022 for Windows 5
1.1.4 下载并安装Visual Studio Code 6
1.2 理解.NET 8
1.2.1 理解.NET Framework 8
1.2.2 理解Mono、Xamarin 和Unity项目 9
1.2.3 理解.NET Core 9
1.2.4 了解走向.NET 的过程 9
1.2.5 了解.NET 支持 10
1.2.6 现代.NET 的区别 12
1.2.7 了解.NET Standard 13
1.2.8 本书使用的.NET 平台和工具 14
1.2.9 Apps and Services with NET 7 中涵盖的主题 15
1.2.10 理解中间语言 15
1.2.11 比较.NET 技术 15
1.3 使用Visual Studio 2022 构建控制台应用程序 16
1.3.1 使用Visual Studio 2022 管理多个项目 16
1.3.2 使用Visual Studio 2022编写代码 16
1.3.3 使用Visual Studio 编译和运行代码 17
1.3.4 理解顶级程序 19
1.3.5 使用Visual Studio 2022 添加第二个项目 21
1.4 使用Visual Studio Code 构建控制台应用程序 22
1.4.1 使用Visual Studio Code 管理多个项目 22
1.4.2 使用Visual Studio Code编写代码 22
1.4.3 使用dotnet CLI 编译和运行代码 25
1.4.4 使用Visual Studio Code 添加第二个项目 26
1.5 使用.NET Interactive Notebook探索代码 27
1.6 检查项目的文件夹和文件 28
1.6.1 了解常见的文件夹和文件 28
1.6.2 理解GitHub 中的解决方案代码 28
1.7 充分利用本书的GitHub 存储库 29
1.7.1 对本书提出问题 29
1.7.2 反馈 29
1.7.3 从GitHub 存储库下载解决方案代码 30
1.7.4 在Visual Studio Code 和命令行中使用Git 30
1.8 寻求帮助 31
1.8.1 阅读微软文档 31
1.8.2 获取关于dotnet 工具的帮助 31
1.8.3 获取类型及其成员的定义 32
1.8.4 在Stack Overflow 上寻找答案 34
1.8.5 使用谷歌搜索答案 34
1.8.6 订阅官方的.NET 博客 35
1.8.7 观看Scott Hanselman 的视频 35
1.8.8 本书的配套图书 35
1.9 实践和探索 35
1.9.1 练习1.1:测试你掌握的知识 36
1.9.2 练习1.2:使用浏览器在任何地方练习C# 36
1.9.3 练习1.3:探索主题 36
1.9.4 练习1.4:探索现代.NET 的主题 37
1.10 本章小结 37
第2 章 C#编程基础 38
2.1 介绍C# 38
2.1.1 理解语言版本和特性 38
2.1.2 了解C#标准 42
2.1.3 了解C#编译器版本 43
2.2 理解C#语法和词汇 45
2.2.1 显示编译器版本 45
2.2.2 了解C#语法 46
2.2.3 语句 46
2.2.4 注释 47
2.2.5 块 47
2.2.6 语句和块的示例 48
2.2.7 了解C#词汇表 48
2.2.8 将编程语言与人类语言进行比较 48
2.2.9 改变C#语法的配色方案 49
2.2.10 如何编写正确的代码 49
2.2.11 导入名称空间 50
2.2.12 动词表示方法 53
2.2.13 名词表示类型、变量、字段和属性 54
2.2.14 揭示C#词汇表的范围 54
2.3 使用变量 56
2.3.1 命名和赋值 57
2.3.2 字面值 57
2.3.3 存储文本 57
2.3.4 存储数字 60
2.3.5 存储实数 61
2.3.6 存储布尔值 64
2.3.7 存储任何类型的对象 64
2.3.8 动态存储类型 65
2.3.9 声明局部变量 66
2.3.10 获取和设置类型的默认值 68
2.4 深入研究控制台应用程序 69
2.4.1 向用户显示输出 69
2.4.2 从用户那里获取文本输入 72
2.4.3 简化控制台的使用 73
2.4.4 获取用户的重要输入 74
2.4.5 向控制台应用程序传递参数 74
2.4.6 使用参数设置选项 76
2.4.7 处理不支持API 的平台 78
2.5 理解async 和await 79
2.6 实践和探索 80
2.6.1 练习2.1:测试你掌握的知识 81
2.6.2 练习2.2:测试你对数字类型的了解 81
2.6.3 练习2.3:练习数字大小和范围 81
2.6.4 练习2.4:探索主题 82
2.7 本章小结 82
第3 章 控制程序流程、转换类型和处理异常 83
3.1 操作变量 83
3.1.1 一元算术运算符 84
3.1.2 二元算术运算符 85
3.1.3 赋值运算符 86
3.1.4 逻辑运算符 86
3.1.5 条件逻辑运算符 87
3.1.6 按位和二元移位运算符 88
3.1.7 其他运算符 90
3.2 理解选择语句 90
3.2.1 使用if 语句进行分支 90
3.2.2 模式匹配与if 语句 91
3.2.3 使用switch 语句进行分支 92
3.2.4 模式匹配与switch 语句 94
3.2.5 使用switch 表达式简化
switch 语句 95
3.3 理解迭代语句 96
3.3.1 while 循环语句 96
3.3.2 do 循环语句 97
3.3.3 for 循环语句 97
3.3.4 foreach 循环语句 98
3.3.5 在数组中存储多个值 99
3.4 类型转换 105
3.4.1 隐式和显式地转换数字 105
3.4.2 使用System.Convert 类型进行转换 107
3.4.3 圆整数字 107
3.4.4 控制圆整规则 108
3.4.5 从任何类型转换为字符串 108
3.4.6 从二进制对象转换为字符串 109
3.4.7 将字符串转换为数字或日期和时间 110
3.5 处理异常 111
3.6 检查溢出 115
3.6.1 使用checked 语句抛出溢出异常 115
3.6.2 使用unchecked 语句禁用编译时溢出检查 116
3.7 实践和探索 117
3.7.1 练习3.1:测试你掌握的知识 118
3.7.2 练习3.2:探索循环和溢出 118
3.7.3 练习3.3:实践循环和运算符 118
3.7.4 练习3.4:实践异常处理 119
3.7.5 练习3.5:测试你对运算符的认识程度 119
3.7.6 练习3.6:探索主题 119
3.8 本章小结 120
第4 章 编写、调试和测试函数 121
4.1 编写函数 121
4.1.1 理解顶级程序和函数 121
4.1.2 乘法表示例 123
4.1.3 简述实参与形参 125
4.1.4 编写带返回值的函数 126
4.1.5 将数字从序数转换为基数 128
4.1.6 用递归计算阶乘 129
4.1.7 使用XML 注释解释函数 132
4.1.8 在函数实现中使用lambda 133
4.2 在开发过程中进行调试 135
4.2.1 在调试期间使用Visual Studio Code集成终端 135
4.2.2 创建带有故意错误的代码 136
4.2.3 设置断点并开始调试 137
4.2.4 使用调试工具栏进行导航 139
4.2.5 调试窗口 140
4.2.6 单步执行代码 140
4.2.7 自定义断点 141
4.3 在开发期间进行热重载 142
4.3.1 使用Visual Studio 2022 进行热重载 143
4.3.2 使用Visual Studio Code 和命令行进行热重载 143
4.4 在开发和运行时进行日志记录 144
4.4.1 理解日志记录选项 144
4.4.2 使用Debug 和Trace 类型 144
4.4.3 配置跟踪侦听器 146
4.4.4 切换跟踪级别 147
4.4.5 记录有关源代码的信息 152
4.5 单元测试 153
4.5.1 理解测试类型 153
4.5.2 创建需要测试的类库 154
4.5.3 编写单元测试 156
4.6 在函数中抛出和捕获异常 158
4.6.1 理解使用错误和执行错误 158
4.6.2 在函数中通常抛出异常 158
4.6.3 理解调用堆栈 159
4.6.4 在哪里捕获异常 162
4.6.5 重新抛出异常 162
4.6.6 实现tester-doer 模式 163
4.7 实践和探索 164
4.7.1 练习4.1:测试你掌握的知识 164
4.7.2 练习4.2:使用调试和单元测试练习函数的编写 165
4.7.3 练习4.3:探索主题 165
4.8 本章小结 165
第5 章 使用面向对象编程技术构建自己的类型 166
5.1 面向对象编程 166
5.2 构建类库 167
5.2.1 创建类库 167
5.2.2 在名称空间中定义类 168
5.2.3 理解成员 169
5.2.4 实例化类 169
5.2.5 导入名称空间以使用类型 170
5.2.6 理解对象 172
5.3 在字段中存储数据 173
5.3.1 定义字段 173
5.3.2 理解访问修饰符 174
5.3.3 设置和输出字段值 174
5.3.4 使用enum 类型存储值 175
5.3.5 使用enum 类型存储多个值 176
5.4 使用集合存储多个值 177
5.4.1 理解泛型集合 178
5.4.2 使字段成为静态字段 178
5.4.3 使字段成为常量 179
5.4.4 使字段只读 180
5.4.5 使用构造函数初始化字段 181
5.5 编写和调用方法 182
5.5.1 从方法返回值 182
5.5.2 使用元组组合多个返回值 182
5.5.3 定义参数并将参数传递给方法 185
5.5.4 重载方法 186
5.5.5 传递可选参数和命名参数 186
5.5.6 控制参数的传递方式 188
5.5.7 理解ref 返回 189
5.5.8 使用partial 关键字拆分类 189
5.6 使用属性和索引器控制访问 190
5.6.1 定义只读属性 190
5.6.2 定义可设置的属性 191
5.6.3 要求在实例化期间设置属性 193
5.6.4 定义索引器 195
5.7 有关方法的详细介绍 196
5.7.1 使用方法实现功能 196
5.7.2 使用运算符实现功能 199
5.7.3 使用局部函数实现功能 201
5.8 模式匹配和对象 202
5.8.1 定义飞机乘客 202
5.8.2 C# 9 及后续版本对模式匹配做了增强 203
5.9 使用记录 204
5.9.1 init-only 属性 204
5.9.2 理解记录 205
5.9.3 记录中的位置数据成员 206
5.10 实践和探索 206
5.10.1 练习5.1:测试你掌握的知识 207
5.10.2 练习5.2:探索主题 207
5.11 本章小结 207
第6 章 实现接口和继承类 208
6.1 建立类库和控制台应用程序 208
6.2 使用泛型安全地重用类型 210
6.2.1 使用非泛型类型 210
6.2.2 使用泛型类型 211
6.3 触发和处理事件 212
6.3.1 使用委托调用方法 212
6.3.2 定义和处理委托 213
6.3.3 定义和处理事件 215
6.4 实现接口 216
6.4.1 公共接口 216
6.4.2 排序时比较对象 216
6.4.3 使用单独的类比较对象 220
6.4.4 隐式和显式的接口实现 221
6.4.5 使用默认实现定义接口 222
6.5 使用引用类型和值类型
管理内存 223
6.5.1 定义引用类型和值类型 223
6.5.2 如何在内存中存储引用类型和值类型 224
6.5.3 类型的相等性 225
6.5.4 定义struct 类型 226
6.5.5 使用record struct 类型 228
6.5.6 释放非托管资源 228
6.5.7 确保调用Dispose 方法 229
6.6 使用空值 230
6.6.1 使值类型可为空 230
6.6.2 了解与null 相关的缩略词 232
6.6.3 理解可空引用类型 232
6.6.4 控制可空性警告检查特性 232
6.6.5 声明非可空变量和参数 233
6.6.6 检查null 235
6.7 从类继承 237
6.7.1 扩展类以添加功能 237
6.7.2 隐藏成员 237
6.7.3 覆盖成员 238
6.7.4 从抽象类继承 239
6.7.5 防止继承和覆盖 240
6.7.6 理解多态 241
6.8 在继承层次结构中进行类型转换 242
6.8.1 隐式类型转换 242
6.8.2 显式类型转换 242
6.8.3 避免类型转换异常 243
6.9 继承和扩展.NET 类型 244
6.9.1 继承异常 244
6.9.2 无法继承时扩展类型 246
6.10 编写更好的代码 248
6.10.1 将警告视为错误 248
6.10.2 了解警告波 250
6.10.3 使用分析器编写更好的代码 251
6.10.4 抑制警告 254
6.10.5 修改代码 254
6.11 实践和探索 257
6.11.1 练习6.1:测试你掌握的知识 257
6.11.2 练习6.2:练习创建继承层次结构 257
6.11.3 练习6.3:探索主题 258
6.12 本章小结 258
第7 章 打包和分发.NET 类型 259
7.1 NET 7 简介 259
7.1.1 NET Core 1.0 260
7.1.2 NET Core 1.1 260
7.1.3 NET Core 2.0 260
7.1.4 NET Core 2.1 260
7.1.5 NET Core 2.2 261
7.1.6 NET Core 3.0 261
7.1.7 NET Core 3.1 261
7.1.8 NET 5.0 261
7.1.9 NET 6.0 262
7.1.10 NET 7.0 262
7.1.11 使用.NET 5 及后续版本提高性能 262
7.1.12 检查.NET SDK 以进行更新 262
7.2 了解.NET 组件 263
7.2.1 程序集、NuGet 包和名称空间 263
7.2.2 微软.NET SDK 平台 264
7.2.3 理解程序集中的名称空间和类型 264
7.2.4 NuGet 包 265
7.2.5 理解框架 265
7.2.6 导入名称空间以使用类型 266
7.2.7 将C#关键字与.NET 类型相关联 266
7.2.8 使用.NET Standard 在旧平台之间共享代码 268
7.2.9 理解不同SDK 中类库的默认设置 269
7.2.10 创建.NET Standard 2.0 类库 270
7.2.11 控制.NET SDK 270
7.3 发布用于部署的代码 271
7.3.1 创建要发布的控制台应用程序 271
7.3.2 理解dotnet 命令 273
7.3.3 获取关于.NET 及其环境的信息 274
7.3.4 管理项目 274
7.3.5 发布自包含的应用程序 275
7.3.6 发布单文件应用 276
7.3.7 使用app trimming 系统减小应用程序的大小 277
7.4 反编译.NET 程序集 278
7.4.1 使用Visual Studio 2022 的ILSpy
扩展进行反编译 278
7.4.2 使用Visual Studio 2022 查看源链接 283
7.4.3 不能在技术上阻止反编译 283
7.5 为NuGet 分发打包自己的库 284
7.5.1 引用NuGet 包 284
7.5.2 为NuGet 打包库 285
7.5.3 使用工具探索NuGet 包 289
7.5.4 测试类库包 290
7.6 从.NET Framework 移植到现代.NET 290
7.6.1 能移植吗 291
7.6.2 应该移植吗 291
7.6.3 NET Framework 和现代.NET的区别 292
7.6.4 NET 可移植性分析器 292
7.6.5 NET 升级助手 292
7.6.6 使用非.NET Standard 类库 292
7.7 使用预览特性 294
7.7.1 需要预览特性 294
7.7.2 使用预览特性 294
7.8 实践和探索 295
7.8.1 练习7.1:测试你掌握的知识 295
7.8.2 练习7.2:探索主题 295
7.8.3 练习7.3:探索PowerShell 295
7.9 本章小结 296
第8 章 使用常见的.NET 类型 297
8.1 处理数字 297
8.1.1 处理大的整数 298
8.1.2 处理复数 298
8.1.3 理解四元数 299
8.1.4 为游戏和类似应用程序生成随机数 299
8.2 处理文本 300
8.2.1 获取字符串的长度 300
8.2.2 获取字符串中的字符 301
8.2.3 拆分字符串 301
8.2.4 获取字符串的一部分 301
8.2.5 检查字符串的内容 302
8.2.6 连接、格式化和其他的字符串成员 302
8.2.7 高效地连接字符串 304
8.3 模式匹配与正则表达式 304
8.3.1 检查作为文本输入的数字 304
8.3.2 改进正则表达式的性能 305
8.3.3 正则表达式的语法 305
8.3.4 正则表达式示例 306
8.3.5 拆分使用逗号分隔的复杂字符串 307
8.3.6 激活正则表达式语法着色 308
8.3.7 使用源生成器提高正则表达式的性能 311
8.4 在集合中存储多个对象 312
8.4.1 所有集合的公共特性 313
8.4.2 通过确保集合的容量来提高性能 314
8.4.3 理解集合的选择 314
8.4.4 使用列表 317
8.4.5 使用字典 319
8.4.6 使用队列 320
8.4.7 集合的排序 322
8.4.8 使用专门的集合 322
8.4.9 使用不可变集合 323
8.4.10 集合的*佳实践 323
8.5 使用Span、索引和范围 324
8.5.1 通过Span 高效地使用内存 324
8.5.2 用索引类型标识位置 324
8.5.3 使用Range 类型标识范围 325
8.5.4 使用索引、范围和Span 325
8.6 使用网络资源 326
8.6.1 使用URI、DNS 和IP 地址 326
8.6.2 ping 服务器 327
8.7 实践和探索 328
8.7.1 练习8.1:测试你掌握的知识 328
8.7.2 练习8.2:练习正则表达式 329
8.7.3 练习8.3:练习编写扩展方法 329
8.7.4 练习8.4:探索主题 329
8.8 本章小结 330
第9 章 处理文件、流和序列化 331
9.1 管理文件系统 331
9.1.1 处理跨平台环境和文件系统 331
9.1.2 管理驱动器 333
9.1.3 管理目录 334
9.1.4 管理文件 335
9.1.5 管理路径 336
9.1.6 获取文件信息 337
9.1.7 控制处理文件的方式 338
9.2 用流来读写 338
9.2.1 理解抽象和具体的流 338
9.2.2 写入文本流 340
9.2.3 写入XML 流 342
9.2.4 压缩流 344
9.2.5 使用tar 存档文件 346
9.2.6 读写tar 条目 350
9.3 编码和解码文本 350
9.3.1 将字符串编码为字节数组 351
9.3.2 对文件中的文本进行编码和解码 353
9.3.3 使用随机访问句柄读写文本 353
9.4 序列化对象图 354
9.4.1 序列化为XML 354
9.4.2 生成紧凑的XML 356
9.4.3 反序列化XML 文件 357
9.4.4 用JSON 序列化 358
9.4.5 高性能的JSON 处理 359
9.5 控制处理JSON 的方式 360
9.5.1 用于处理HTTP 响应的新的
JSON 扩展方法 363
9.5.2 从Newtonsoft 迁移到新的JSON 363
9.6 实践和探索 363
9.6.1 练习9.1:测试你掌握的知识 363
9.6.2 练习9.2:练习序列化为XML 364
9.6.3 练习9.3:探索主题 364
9.7 本章小结 365
第10 章 使用Entity Framework Core处理数据 366
10.1 理解现代数据库 366
10.1.1 理解旧的实体框架 367
10.1.2 理解Entity Framework Core 367
10.1.3 理解数据库优先和代码优先 368
10.1.4 EF Core 7 的性能改进 368
10.1.5 使用EF Core 创建控制台
应用程序 368
10.1.6 使用示例关系数据库 368
10.1.7 使用SQLite 369
10.1.8 为SQLite 创建Northwind示例数据库 370
10.1.9 使用SQLiteStudio 管理Northwind 示例数据库 371
10.1.10 为SQLite 使用轻量级的ADO.NET 提供程序 373
10.1.11 为Windows 使用SQL Server 373
10.2 设置EF Core 373
10.2.1 选择EF Core 数据库提供程序 373
10.2.2 连接到数据库 374
10.2.3 定义Northwind 数据库上下文类 374
10.3 定义EF Core 模型 375
10.3.1 使用EF Core 约定定义模型 375
10.3.2 使用EF Core 注解特性定义模型 376
10.3.3 使用EF Core Fluent API 定义模型 377
10.3.4 为Northwind 表构建EF Core模型 377
10.3.5 向Northwind 数据库上下文类添加表 380
10.3.6 安装dotnet-ef 工具 380
10.3.7 使用现有数据库搭建模型 381
10.3.8 自定义逆向工程模板 384
10.3.9 配置约定前模型 384
10.4 查询EF Core 模型 385
10.4.1 过滤结果中返回的实体 387
10.4.2 过滤和排序产品 389
10.4.3 获取生成的SQL 390
10.4.4 记录EF Core 391
10.4.5 使用Like 进行模式匹配 393
10.4.6 在查询中生成随机数 394
10.4.7 定义全局过滤器 395
10.5 使用EF Core 加载模式 396
10.5.1 使用Include 扩展方法立即加载实体 396
10.5.2 启用延迟加载 396
10.5.3 使用Load 方法显式加载实体 397
10.6 使用EF Core 修改数据 399
10.6.1 插入实体 399
10.6.2 更新实体 402
10.6.3 删除实体 403
10.6.4 更高效的更新和删除 404
10.6.5 池化数据库环境 407
10.7 使用事务 407
10.7.1 使用隔离级别控制事务 408
10.7.2 定义显式事务 408
10.8 定义Code First EF Core 模型 409
10.9 实践和探索 409
10.9.1 练习10.1:测试你掌握的知识 409
10.9.2 练习10.2:练习使用不同的序列化格式导出数据 410
10.9.3 练习10.3:探索主题 410
10.9.4 练习10.4:探索NoSQL数据库 410
10.10 本章小结 410
第11 章 使用LINQ 查询和操作数据 411
11.1 为什么使用LINQ 411
11.2 编写LINQ 表达式 412
11.2.1 LINQ 的组成 412
11.2.2 使用Enumerable 类构建LINQ表达式 412
11.2.3 理解延迟执行 414
11.2.4 使用Where 扩展方法过滤实体 415
11.2.5 以命名方法为目标 417
11.2.6 通过删除委托的显式实例化来简化代码 417
11.2.7 以lambda 表达式为目标 418
11.2.8 实体的排序 418
11.2.9 按项自身排序 419
11.2.10 使用var 或指定类型声明查询 419
11.2.11 根据类型进行过滤 420
11.2.12 使用LINQ 处理集合和bag 421
11.3 使用LINQ 与EF Core 422
11.3.1 构建EF Core 模型 423
11.3.2 序列的过滤和排序 425
11.3.3 将序列投影到新的类型中 427
11.3.4 连接和分组序列 429
11.3.5 聚合序列 431
11.3.6 小心使用Count 433
11.3.7 使用LINQ 分页 435
11.4 使用语法糖美化LINQ 语法 438
11.5 使用带有并行LINQ 的多个线程 439
11.6 创建自己的LINQ 扩展方法 439
11.7 使用LINQ to XML 442
11.7.1 使用LINQ to XML生成XML 442
11.7.2 使用LINQ to XML读取XML 443
11.8 实践和探索 444
11.8.1 练习11.1:测试你掌握的知识 444
11.8.2 练习11.2:练习使用LINQ进行查询 445
11.8.3 练习11.3:探索主题 445
11.9 本章小结 446
第12 章 使用ASP.NET Core 进行Web 开发 447
12.1 理解ASP.NET Core 447
12.1.1 经典ASP.NET 与现代ASP.NET Core 的对比 448
12.1.2 使用ASP.NET Core 构建网站 449
12.1.3 构建Web 服务和其他服务 450
12.2 ASP.NET Core 的新特性 450
12.2.1 ASP.NET Core 1.0 451
12.2.2 ASP.NET Core 1.1 451
12.2.3 ASP.NET Core 2.0 451
12.2.4 ASP.NET Core 2.1 451
12.2.5 ASP.NET Core 2.2 451
12.2.6 ASP.NET Core 3.0 452
12.2.7 ASP.NET Core 3.1 452
12.2.8 Blazor WebAssembly 3.2 452
12.2.9 ASP.NET Core 5.0 452
12.2.10 ASP.NET Core 6.0 453
12.2.11 ASP.NET Core 7.0 453
12.3 结构化项目 453
12.4 建立实体数据模型供本书剩余部分章节使用 454
12.4.1 使用SQLite 创建实体模型类库 455
12.4.2 使用SQL Server 创建实体模型类库 462
12.4.3 测试类库 465
12.5 了解Web 开发 466
12.5.1 HTTP 466
12.5.2 使用Google Chrome 浏览器发出HTTP 请求 468
12.5.3 了解客户端Web 开发技术 470
12.6 实践和探索 470
12.6.1 练习12.1:测试你掌握的知识 470
12.6.2 练习12.2:了解Web 开发中
常用的缩写 471
12.6.3 练习12.3:探索主题 471
12.7 本章小结 471
第13 章 使用ASP.NET Core Razor Pages
构建网站 472
13.1 了解ASP.NET Core 472
13.1.1 创建空的ASP.NET Core项目 472
13.1.2 测试和保护网站 474
13.1.3 控制托管环境 478
13.1.4 使网站能够提供静态内容 479
13.2 了解ASP.NET Core Razor Pages 481
13.2.1 启用Razor Pages 481
13.2.2 给Razor Pages 添加代码 482
13.2.3 通过Razor Pages 使用共享布局 483
13.2.4 使用后台代码文件与Razor Pages 485
13.3 使用Entity Framework Core 与ASP.NET Core 487
13.3.1 将Entity Framework Core配置为服务 487
13.3.2 使用Razor Pages 操作数据 489
13.3.3 将依赖服务注入Razor Pages 中 490
13.4 使用Razor 类库 491
13.4.1 禁用Visual Studio Code 的Compact Folders 功能 491
13.4.2 创建Razor 类库 492
13.4.3 实现分部视图以显示单个员工 494
13.4.4 使用和测试Razor 类库 495
13.5 配置服务和HTTP 请求管道 496
13.5.1 了解端点路由 496
13.5.2 配置端点路由 496
13.5.3 查看项目中的端点路由配置 496
13.5.4 配置HTTP 管道 498
13.5.5 总结关键的中间件扩展方法 499
13.5.6 可视化HTTP 管道 499
13.5.7 实现匿名内联委托作为中间件 500
13.5.8 启用对请求解压缩的支持 501
13.6 启用HTTP/3 支持 502
13.7 实践和探索 504
13.7.1 练习13.1:测试你掌握的知识 504
13.7.2 练习13.2:练习建立数据驱动的网页 504
13.7.3 练习13.3:练习为控制台应用程序构建Web 页面 504
13.7.4 练习13.4:探索主题 505
13.8 本章小结 505
第14 章 使用MVC 模式构建网站 506
14.1 设置ASP.NET Core MVC网站 506
14.1.1 创建ASP.NET Core MVC网站 506
14.1.2 为SQL Server LocalDB 创建认证数据库 507
14.1.3 探索默认的ASP.NET Core MVC网站 509
14.1.4 启动MVC 网站项目 510
14.1.5 了解访问者注册 511
14.1.6 查看MVC 网站项目结构 511
14.1.7 回顾ASP.NET Core Identity数据库 513
14.2 探索ASP.NET Core MVC网站 514
14.2.1 ASP.NET Core MVC 的初始化 514
14.2.2 MVC 的默认路由 516
14.2.3 理解控制器和操作 517
14.2.4 理解视图搜索路径约定 520
14.2.5 使用依赖服务进行记录 520
14.2.6 实体和视图模型 521
14.2.7 视图 523
14.2.8 理解如何使用标记助手避开缓存 525
14.3 自定义ASP.NET Core MVC网站 526
14.3.1 自定义样式 526
14.3.2 设置类别图像 526
14.3.3 Razor 语法和表达式 526
14.3.4 定义类型化视图 527
14.3.5 使用路由值传递参数 530
14.3.6 模型绑定程序 532
14.3.7 验证模型 535
14.3.8 使用HTML 辅助方法定义视图 537
14.3.9 使用标记助手定义视图 538
14.3.10 跨功能过滤器 538
14.3.11 使用输出缓存 543
14.4 查询数据库和使用显示模板 547
14.5 使用异步任务提高可伸缩性 550
14.6 实践与探索 551
14.6.1 练习14.1:测试你掌握的知识 551
14.6.2 练习14.2:通过实现类别详细信息页面练习实现MVC 552
14.6.3 练习14.3:理解和实现异步操作方法以提高可伸缩性 552
14.6.4 练习14.4:对MVC 控制器进行单元测试 552
14.6.5 练习14.5:探索主题 552
14.7 本章小结 552
第15 章 构建和消费Web 服务 554
15.1 使用ASP.NET Core Web API构建Web 服务 554
15.1.1 理解Web 服务缩写词 554
15.1.2 理解Web API 的HTTP 请求和响应 555
15.1.3 创建ASP.NET Core Web API项目 556
15.1.4 检查Web 服务的功能 559
15.1.5 为Northwind 示例数据库创建Web 服务 560
15.1.6 为实体创建数据存储库 562
15.1.7 实现Web API 控制器 565
15.1.8 配置客户存储库和Web API控制器 566
15.1.9 指定问题的细节 570
15.1.10 控制XML 序列化 570
15.2 解释和测试Web 服务 571
15.2.1 使用浏览器测试GET 请求 571
15.2.2 使用REST Client 扩展测试HTTP 请求 572
15.2.3 理解Swagger 575
15.2.4 使用Swagger UI 测试请求 575
15.2.5 启用HTTP 日志记录 578
15.2.6 W3CLogger 支持记录额外的请求头 580
15.3 使用HTTP 客户端消费Web 服务 580
15.3.1 了解HttpClient 类 580
15.3.2 使用HttpClientFactory 配置HTTP 客户端 581
15.3.3 在控制器中以JSON 格式获取客户 581
15.3.4 启动多个项目 583
15.3.5 启动Web 服务和MVC 客户端项目 585
15.4 为Web 服务实现高级功能 586
15.5 使用*小API 构建Web 服务 586
15.5.1 测试*小天气服务 588
15.5.2 向Northwind 网站主页添加天气预报 588
15.6 实践和探索 591
15.6.1 练习15.1:测试你掌握的知识 591
15.6.2 练习15.2:练习使用HttpClient创建和删除客户 591
15.6.3 练习15.3:探索主题 591
15.7 本章小结 591
第16 章 使用Blazor 构建用户界面 592
16.1 理解Blazor 592
16.1.1 JavaScript 592
16.1.2 Silverlight——使用插件的C#和.NET 593
16.1.3 WebAssembly——Blazor 的目标 593
16.1.4 理解Blazor 托管模型 593
16.1.5 理解Blazor 组件 594
16.1.6 比较Blazor 和Razor 594
16.2 比较Blazor 项目模板 595
16.2.1 Blazor 服务器项目模板 595
16.2.2 理解到页面组件的Blazor路由 600
16.2.3 运行Blazor 服务器项目模板 603
16.2.4 查看Blazor WebAssembly项目模板 604
16.3 使用Blazor 服务器构建组件 608
16.3.1 定义和测试简单的Blazor服务器组件 608
16.3.2 将组件转换成可路由的页面组件 609
16.3.3 将实体放入组件 610
16.3.4 为Blazor 组件抽象服务 613
16.3.5 使用EditForm 组件定义表单 615
16.3.6 构建共享的客户详细信息组件 615
16.3.7 构建创建、编辑和删除客户的组件 617
16.3.8 测试客户组件 619
16.4 使用Blazor WebAssembly 构建组件 619
16.4.1 为Blazor WebAssembly 配置服务器 620
16.4.2 为Blazor WebAssembly 配置客户端 622
16.4.3 测试Blazor WebAssembly 组件和服务 624
16.5 改进Blazor WebAssembly应用程序 626
16.6 实践和探索 626
16.6.1 练习16.1:测试你掌握的知识 626
16.6.2 练习16.2:通过创建乘法表组件进行练习 627
16.6.3 练习16.3:通过创建国家导航项进行练习 627
16.6.4 练习16.4:探索主题 628
16.7 本章小结 628
第17 章 结语 629
作者简介
Mark J. Price是一位拥有20多年C#编程经验的微软认证技术专家,他专注于C#编程以及构建Azure 云解决方案。自1993 年以来,Mark 已通过了80 多次微软编程考试,他特别擅长传道授业。从2001 年到2003年,Mark 在美国雷德蒙德全职为微软编写官方课件。当C#还处于alpha版本时,他的团队就为C#编写了**个培训教程。在微软任职期间,他为培训师上课,指导微软认证培训师快速掌握C#和.NET。Mark 职业生涯中的大部分时间都在培训各类学生,从16 岁的新人到70 岁的退休人员,其中大部分是专业开发人员。Mark 拥有计算机科学学士学位。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
情感计算
¥66.8¥89.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥48.3¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
LINUX实战——从入门到精通
¥48.3¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0