首页 > 图书中心 > C#入门经典:更新至C# 9和.NET 5

目录

目    录

 

第1章  C#与.NET入门 1

1.1  设置开发环境 1

1.1.1  使用Visual Studio Code进行

跨平台开发 1

1.1.2  使用GitHub Codespaces在云中

进行开发 2

1.1.3  使用Visual Studio 2019进行

Windows应用程序开发 3

1.1.4  使用Visual Studio for Mac 进行

移动应用程序开发 3

1.1.5  各章的推荐工具 3

1.1.6  跨平台部署 3

1.1.7  理解Visual Studio Code 版本 4

1.1.8  下载并安装 Visual Studio Code 5

1.1.9  安装其他扩展 5

1.2  理解.NET 6

1.2.1  理解.NET Framework 6

1.2.2  理解Mono 和Xamarin 项目 6

1.2.3  理解.NET Core 7

1.2.4  了解.NET 5的未来版本 7

1.2.5  了解.NET支持 8

1.2.6  .NET Core与.NET 5的区别 10

1.2.7  了解.NET Standard 10

1.2.8  本书使用的.NET平台和工具 11

1.2.9  理解中间语言 12

1.2.10  比较.NET技术 12

1.3  使用Visual Studio Code构建

控制台应用程序 12

1.3.1  使用Visual Studio Code编写代码 12

1.3.2  使用dotnet CLI编译和运行代码 14

1.3.3  编写顶级程序 14

1.4  从GitHub存储库下载解决

方案代码 15

1.4.1  使用Git和Visual Studio Code 15

1.4.2  备份图书解决方案代码存储库 15

1.5  寻求帮助 16

1.5.1  阅读微软文档 16

1.5.2  获取关于dotnet工具的帮助 16

1.5.3  获取类型及其成员的定义 17

1.5.4  在Stack Overflow上寻找答案 18

1.5.5  使用谷歌搜索答案 19

1.5.6  订阅官方的.NET博客 19

1.6  实践和探索 19

1.6.1  练习1.1:测试你掌握的知识 19

1.6.2  练习1.2:在任何地方练习C# 20

1.6.3  练习1.3:探索主题 20

1.7  本章小结 20

第2章  C#编程基础 21

2.1  介绍C# 21

2.1.1  理解语言版本和特性 21

2.1.2  发现C#编译器版本 24

2.1.3  启用特定的语言版本编译器 25

2.2  了解C#基本知识 26

2.2.1  了解C#语法 27

2.2.2  了解C#词汇表 28

2.3  使用变量 32

2.3.1  命名和赋值 32

2.3.2  存储文本 33

2.3.3  存储数字 34

2.3.4  存储布尔值 38

2.3.5  使用Visual Studio Code工作区 38

2.3.6  存储任何类型的对象 38

2.3.7  动态存储类型 39

2.3.8  声明局部变量 40

2.3.9  获取类型的默认值 41

2.3.10  存储多个值 41

2.4  处理空值 42

2.4.1  使值类型可空 42

2.4.2  启用可空引用类型和不可空

引用类型 44

2.4.3  声明不可为空的变量和参数 44

2.4.4  检查null 45

2.5  深入研究控制台应用程序 46

2.5.1  向用户显示输出 46

2.5.2  理解格式字符串 47

2.5.3  从用户那里获取文本输入 48

2.5.4  导入名称空间 48

2.5.5  简化控制台的使用 49

2.5.6  获取用户的重要输入 49

2.5.7  获取参数 50

2.5.8  使用参数设置选项 51

2.5.9  处理不支持API的平台 52

2.6  实践和探索 52

2.6.1  练习2.1:测试你掌握的知识 53

2.6.2  练习2.2:练习数字的大小和范围 53

2.6.3  练习2.3:探索主题 53

2.7  本章小结 54

第3章  控制程序流程和转换类型 55

3.1  操作变量 55

3.1.1  一元运算符 55

3.1.2  二元算术运算符 56

3.1.3  赋值运算符 57

3.1.4  逻辑运算符 57

3.1.5  条件逻辑运算符 58

3.1.6  按位和二元移位运算符 59

3.1.7  其他运算符 60

3.2  理解选择语句 61

3.2.1  使用if语句进行分支 61

3.2.2  if语句为什么应总是使用花括号 62

3.2.3  模式匹配与if语句 62

3.2.4  使用switch语句进行分支 63

3.2.5  模式匹配与switch语句 64

3.2.6  使用switch表达式简化switch

语句 65

3.3  理解迭代语句 66

3.3.1  while循环语句 66

3.3.2  do循环语句 66

3.3.3  for循环语句 67

3.3.4  foreach循环语句 67

3.4  类型转换 68

3.4.1  隐式和显式地转换数值 68

3.4.2  使用System.Convert类型进行

转换 70

3.4.3  圆整数字 70

3.4.4  从任何类型转换为字符串 71

3.4.5  从二进制对象转换为字符串 72

3.4.6  将字符串转换为数值或日期和

时间 73

3.4.7  在转换类型时处理异常 74

3.4.8  检查溢出 76

3.5  实践和探索 78

3.5.1  练习3.1:测试你掌握的知识 79

3.5.2  练习3.2:探索循环和溢出 79

3.5.3  练习3.3:实践循环和运算符 79

3.5.4  练习3.4:实践异常处理 80

3.5.5  练习3.5:测试你对运算符的认识

程度 80

3.5.6  练习3.6:探索主题 80

3.6  本章小结 81

第4章  编写、调试和测试函数 82

4.1  编写函数 82

4.1.1  编写乘法表函数 82

4.1.2  编写带返回值的函数 84

4.1.3  编写数学函数 86

4.1.4  使用XML注释解释函数 89

4.1.5  在函数实现中使用lambda 90

4.2  在开发过程中进行调试 92

4.2.1  创建带有故意错误的代码 92

4.2.2  设置断点 93

4.2.3  使用调试工具栏进行导航 94

4.2.4  调试窗格 94

4.2.5  单步执行代码 95

4.2.6  自定义断点 96

4.3  在开发和运行时进行日志记录 97

4.3.1  使用Debug和Trace类型进行

插装 97

4.3.2  写入默认的跟踪侦听器 98

4.3.3  配置跟踪侦听器 98

4.3.4  切换跟踪级别 99

4.4  单元测试函数 102

4.4.1  创建需要测试的类库 102

4.4.2  编写单元测试 103

4.4.3  运行单元测试 104

4.5  实践和探索 105

4.5.1  练习4.1:测试你掌握的知识 105

4.5.2  练习4.2:使用调试和单元测试

练习函数的编写 105

4.5.3  练习4.3:探索主题 106

4.6  本章小结 106

第5章  使用面向对象编程技术构建

自己的类型 107

5.1  面向对象编程 107

5.2  构建类库 108

5.2.1  创建类库 108

5.2.2  实例化类 110

5.2.3  管理多个文件 111

5.2.4  对象 111

5.3  在字段中存储数据 112

5.3.1  定义字段 112

5.3.2  理解访问修饰符 112

5.3.3  设置和输出字段值 113

5.3.4  使用enum类型存储值 114

5.3.5  使用enum类型存储多个值 115

5.3.6  使用集合存储多个值 116

5.3.7  使字段成为静态字段 117

5.3.8  使字段成为常量 118

5.3.9  使字段只读 118

5.3.10  使用构造函数初始化字段 119

5.3.11  使用默认字面量设置字段 120

5.4  写入和调用方法 121

5.4.1  从方法返回值 121

5.4.2  使用元组组合多个返回值 122

5.4.3  定义参数并将参数传递给方法 124

5.4.4  重载方法 124

5.4.5  传递可选参数和命名参数 125

5.4.6  控制参数的传递方式 126

5.4.7  使用partial关键字分割类 128

5.5  使用属性和索引器控制访问 128

5.5.1  定义只读属性 128

5.5.2  定义可设置的属性 129

5.5.3  定义索引器 130

5.6  模式匹配和对象 131

5.6.1  创建和引用.NET 5类库 131

5.6.2  定义飞机乘客 132

5.6.3  C# 9.0对模式匹配做了增强 133

5.7  使用记录 134

5.7.1  init-only属性 134

5.7.2  理解记录 135

5.7.3  简化数据成员 135

5.7.4  位置记录 136

5.8  实践和探索 136

5.8.1  练习5.1:测试你掌握的知识 137

5.8.2  练习5.2:探索主题 137

5.9  本章小结 137

第6章  实现接口和继承类 138

6.1  建立类库和控制台应用程序 138

6.2  简化方法 140

6.2.1  使用方法实现功能 140

6.2.2  使用运算符实现功能 141

6.2.3  使用局部函数实现功能 142

6.3  触发和处理事件 143

6.3.1  使用委托调用方法 143

6.3.2  定义和处理委托 144

6.3.3  定义和处理事件 145

6.4  实现接口 146

6.4.1  公共接口 146

6.4.2  排序时比较对象 146

6.4.3  使用单独的类比较对象 148

6.4.4  使用默认实现定义接口 149

6.5  使类型可以安全地与泛型

一起重用 151

6.5.1  使用泛型类型 152

6.5.2  使用泛型方法 153

6.6  使用引用类型和值类型管理内存 154

6.6.1  处理struct类型 154

6.6.2  释放非托管资源 155

6.6.3  确保调用Dispose方法 157

6.7  从类继承 158

6.7.1  扩展类 158

6.7.2  隐藏成员 158

6.7.3  覆盖成员 159

6.7.4  防止继承和覆盖 160

6.7.5  理解多态 161

6.8  在继承层次结构中进行

类型转换 162

6.8.1  隐式类型转换 162

6.8.2  显式类型转换 162

6.8.3  避免类型转换异常 163

6.9  继承和扩展.NET类型 164

6.9.1  继承异常 164

6.9.2  无法继承时扩展类型 165

6.10  实践和探索 167

6.10.1  练习6.1:测试你掌握的知识 167

6.10.2  练习6.2:练习创建继承层次

结构 167

6.10.3  练习6.3:探索主题 167

6.11  本章小结 168

第7章  理解和打包.NET类型 169

7.1  .NET 5简介 169

7.1.1  .NET Core 1.0 170

7.1.2  .NET Core 1.1 170

7.1.3  .NET Core 2.0 170

7.1.4  .NET Core 2.1 170

7.1.5  .NET Core 2.2 171

7.1.6  .NET Core 3.0 171

7.1.7  .NET 5 171

7.1.8  从.NET Core 2.0到.NET 5不断

提高性能 172

7.2  了解.NET组件 172

7.2.1  程序集、包和名称空间 173

7.2.2  导入名称空间以使用类型 175

7.2.3  将C#关键字与.NET类型相关联 175

7.2.4  使用.NET Standard类库在旧平台

之间共享代码 177

7.3  发布用于部署的应用程序 178

7.3.1  创建要发布的控制台应用程序 178

7.3.2  dotnet命令 179

7.3.3  发布自包含的应用程序 180

7.3.4  发布单文件应用 181

7.3.5  使用app trimming系统减小应用

程序的大小 182

7.4  反编译程序集 182

7.5  为NuGet分发打包自己的库 185

7.5.1  引用NuGet包 185

7.5.2  为NuGet打包库 186

7.5.3  测试包 188

7.6  从.NET Framework移植到.NET 5 189

7.6.1  能移植吗 189

7.6.2  应该移植吗 190

7.6.3  .NET Framework和.NET 5之间的

区别 190

7.6.4  .NET可移植性分析器 190

7.6.5  使用非.NET Standard类库 190

7.7  实践和探索 192

7.7.1  练习7.1:测试你掌握的知识 192

7.7.2  练习7.2:探索主题 192

7.8  本章小结 193

第8章  使用常见的.NET类型 194

8.1  处理数字 194

8.1.1  处理大的整数 195

8.1.2  处理复数 195

8.2  处理文本 196

8.2.1  获取字符串的长度 196

8.2.2  获取字符串中的字符 196

8.2.3  拆分字符串 196

8.2.4  获取字符串的一部分 197

8.2.5  检查字符串的内容 197

8.2.6  连接、格式化和其他的字符串

成员方法 198

8.2.7  高效地构建字符串 199

8.3  模式匹配与正则表达式 199

8.3.1  检查作为文本输入的数字 199

8.3.2  正则表达式的语法 200

8.3.3  正则表达式的例子 201

8.3.4  分割使用逗号分隔的复杂字符串 201

8.3.5  改进正则表达式的性能 202

8.4  在集合中存储多个对象 203

8.4.1  所有集合的公共特性 203

8.4.2  理解集合的选择 204

8.4.3  使用列表 206

8.4.4  使用字典 207

8.4.5  集合的排序 207

8.4.6  使用专门的集合 208

8.4.7  使用不可变集合 208

8.5  使用Span、索引和范围 209

8.5.1  高效地使用内存 209

8.5.2  用索引类型标识位置 209

8.5.3  使用Range值类型标识范围 209

8.5.4  使用索引和范围 210

8.6  使用网络资源 211

8.6.1  使用URI、DNS和IP地址 211

8.6.2  ping服务器 212

8.7  处理类型和属性 213

8.7.1  程序集的版本控制 213

8.7.2  阅读程序集元数据 214

8.7.3  创建自定义特性 215

8.7.4  更多地使用反射 217

8.8  处理图像 218

8.9  国际化代码 219

8.10  实践和探索 221

8.10.1  练习8.1:测试你掌握的知识 221

8.10.2  练习8.2:练习正则表达式 222

8.10.3  练习8.3:练习编写扩展方法 222

8.10.4  练习8.4:探索主题 222

8.11  本章小结 223

第9章  处理文件、流和序列化 224

9.1  管理文件系统 224

9.1.1  处理跨平台环境和文件系统 224

9.1.2  管理驱动器 225

9.1.3  管理目录 226

9.1.4  管理文件 228

9.1.5  管理路径 229

9.1.6  获取文件信息 230

9.1.7  控制如何处理文件 231

9.2  用流来读写 231

9.2.1  写入文本流 233

9.2.2  写入XML流 234

9.2.3  文件资源的释放 235

9.2.4  压缩流 237

9.2.5  使用Brotli算法进行压缩 238

9.2.6  使用管道的高性能流 240

9.2.7  异步流 240

9.3  编码和解码文本 240

9.3.1  将字符串编码为字节数组 241

9.3.2  对文件中的文本进行编码和解码 243

9.4  序列化对象图 243

9.4.1  序列化为XML 243

9.4.2  生成紧凑的XML 245

9.4.3  反序列化XML文件 246

9.4.4  用JSON序列化格式 246

9.4.5  高性能的JSON处理 248

9.5  实践和探索 249

9.5.1  练习9.1:测试你掌握的知识 249

9.5.2  练习9.2:练习序列化为XML 249

9.5.3  练习9.3:探索主题 250

9.6  本章小结 250

第10章  保护数据和应用程序 251

10.1  理解数据保护术语 251

10.1.1  密钥和密钥的大小 252

10.1.2  IV和块大小 252

10.1.3  salt 252

10.1.4  生成密钥和IV 253

10.2  加密和解密数据 253

10.3  哈希数据 257

10.4  签名数据 260

10.5  生成随机数 263

10.5.1  为游戏生成随机数 263

10.5.2  为密码生成随机数 264

10.6  密码学有什么新内容 264

10.7  用户的身份验证和授权 265

10.7.1  实现身份验证和授权 267

10.7.2  保护应用程序功能 269

10.8  实践和探索 270

10.8.1  练习10.1:测试你掌握的知识 270

10.8.2  练习10.2:练习使用加密和

哈希方法保护数据 270

10.8.3  练习10.3:练习使用解密

保护数据 270

10.8.4  练习10.4:探索主题 270

10.9  本章小结 271

第11章  使用Entity Framework Core

处理数据库 272

11.1  理解现代数据库 272

11.1.1  理解旧的实体框架 272

11.1.2  理解Entity Framework Core 273

11.1.3  使用示例关系数据库 273

11.1.4  为SQLite创建Northwind示例

数据库 275

11.1.5  使用SQLiteStudio管理Northwind

示例数据库 275

11.2  设置EF Core 276

11.2.1  选择EF Core数据提供程序 276

11.2.2  安装dotnet-ef工具 277

11.2.3  连接到数据库 277

11.3  定义EF Core模型 278

11.3.1  EF Core约定 278

11.3.2  EF Core注解特性 278

11.3.3  EF Core Fluent API 279

11.3.4  理解数据播种 280

11.3.5  构建EF Core模型 280

11.4  查询EF Core模型 287

11.4.1  过滤和排序产品 289

11.4.2  记录EF Core 291

11.4.3  使用查询标记进行日志记录 294

11.4.4  模式匹配与Like 294

11.4.5  定义全局过滤器 295

11.5  使用EF Core加载模式 296

11.5.1  立即加载实体 296

11.5.2  启用延迟加载 296

11.5.3  显式加载实体 297

11.6  使用EF Core操作数据 299

11.6.1  插入实体 299

11.6.2  更新实体 300

11.6.3  删除实体 301

11.6.4  池化数据库环境 302

11.6.5  事务 302

11.6.6  定义显式事务 303

11.7  实践和探索 303

11.7.1  练习11.1:测试你掌握的知识 303

11.7.2  练习11.2:练习使用不同的

序列化格式导出数据 304

11.7.3  练习11.3:研究EF Core文档 304

11.8  本章小结 304

第12章  使用LINQ查询和操作数据 305

12.1  编写LINQ查询 305

12.1.1  使用Enumerable类扩展序列 305

12.1.2  使用Where扩展方法过滤实体 306

12.1.3  实体的排序 309

12.1.4  根据类型进行过滤 310

12.2  使用LINQ处理集合 312

12.3  使用LINQ与EF Core 313

12.3.1  序列的筛选和排序 315

12.3.2  将序列投影到新的类型中 316

12.3.3  连接和分组序列 317

12.3.4  聚合序列 320

12.4  使用语法糖美化LINQ语法 320

12.5  使用带有并行LINQ的多个

线程 322

12.6  创建自己的LINQ扩展方法 324

12.7  使用LINQ to XML 327

12.7.1  使用LINQ to XML生成XML 327

12.7.2  使用LINQ to XML读取XML 327

12.8  实践和探索 328

12.8.1  练习12.1:测试你掌握的知识 328

12.8.2  练习12.2:练习使用LINQ

进行查询 329

12.8.3  练习12.3:探索主题 329

12.9  本章小结 329

第13章  使用多任务提高性能和

可伸缩性 330

13.1  理解进程、线程和任务 330

13.2  监控性能和资源使用情况 331

13.2.1  评估类型的效率 331

13.2.2  监控性能和内存使用情况 332

13.2.3  实现Recorder类 332

13.3  异步运行任务 335

13.3.1  同步执行多个操作 336

13.3.2  使用任务异步执行多个操作 337

13.3.3  等待任务 338

13.3.4  继续执行另一项任务 339

13.3.5  嵌套任务和子任务 340

13.4  同步访问共享资源 341

13.4.1  从多个线程访问资源 341

13.4.2  对资源应用互斥锁 342

13.4.3  理解lock语句并避免死锁 343

13.4.4  事件的同步 344

13.4.5  使CPU操作原子化 345

13.4.6  应用其他类型的同步 345

13.5  理解async和await 346

13.5.1  提高控制台应用程序的响应

能力 346

13.5.2  改进GUI应用程序的响应能力 347

13.5.3  改进Web应用程序和Web服务

的可伸缩性 347

13.5.4  支持多任务处理的常见类型 347

13.5.5  在catch块中使用await

关键字 348

13.5.6  使用async流 348

13.6  实践和探索 349

13.6.1  练习13.1:测试你掌握的知识 349

13.6.2  练习13.2:探索主题 349

13.7  本章小结 349

第14章  C#和.NET的实际应用 350

14.1  理解C#和.NET的应用模型 350

14.1.1  使用ASP.NET Core构建网站 350

14.1.2  使用Web内容管理系统

构建网站 351

14.1.3  理解Web应用程序 351

14.1.4  构建和使用Web服务 352

14.1.5  构建智能应用 352

14.2  ASP.NET Core的新特性 352

14.2.1  ASP.NET Core 1.0 352

14.2.2  ASP.NET Core 1.1 352

14.2.3  ASP.NET Core 2.0 353

14.2.4  ASP.NET Core 2.1 353

14.2.5  ASP.NET Core 2.2 353

14.2.6  ASP.NET Core 3.0 354

14.2.7  ASP.NET Core 3.1 354

14.2.8  Blazor WebAssembly 3.2 354

14.2.9  ASP.NET Core 5.0 354

14.3  理解SignalR 355

14.4  理解Blazor 356

14.4.1  JavaScript存在的问题 356

14.4.2  Silverlight 356

14.4.3  WebAssembly 356

14.4.4  服务器端或客户端Blazor 357

14.5  构建Windows桌面应用程序和

跨平台的移动应用程序 357

14.5.1  构建跨平台的移动应用程序 357

14.5.2  使用旧技术构建Windows桌面

应用程序 358

14.6  为Northwind示例数据库构建

实体数据模型 358

14.6.1  为Northwind实体模型创建

类库 358

14.6.2  为Northwind数据库上下文创建

类库 361

14.7  本章小结 363

第15章  使用ASP.NET Core Razor Pages

构建网站 365

15.1  了解Web开发 365

15.1.1  HTTP 365

15.1.2  客户端Web开发 367

15.2  了解ASP.NET Core 368

15.2.1  传统的ASP.NET与现代的

ASP.NET Core 369

15.2.2  创建ASP.NET Core项目 369

15.2.3  测试和保护网站 371

15.2.4  控制托管环境 373

15.2.5  启用静态文件和默认文件 374

15.3  了解Razor Pages 376

15.3.1  启用Razor Pages 376

15.3.2  定义Razor页面 376

15.3.3  通过Razor页面使用共享布局 377

15.3.4  使用后台代码文件与Razor

页面 379

15.4  使用Entity Framework Core与

ASP.NET Core 381

15.4.1  将Entity Framework Core配置为

服务 381

15.4.2  使用Razor页面操作数据 383

15.5  使用Razor类库 384

15.5.1  创建Razor类库 384

15.5.2  禁用压缩文件夹功能 385

15.5.3  在Razor类库中显示员工 386

15.5.4  实现分部视图以显示单个员工 387

15.5.5  使用和测试Razor类库 388

15.5.6  配置服务和HTTP请求管道 389

15.5.7  注册服务 390

15.5.8  配置HTTP请求管道 391

15.5.9  创建一个简单的ASP.NET Core

网站项目 394

15.6  实践和探索 395

15.6.1  练习15.1:测试你掌握的知识 395

15.6.2  练习15.2:练习建立数据驱动的

网页 395

15.6.3  练习15.3:练习为控制台应用

程序构建Web页面 395

15.6.4  练习15.4:探索主题 395

15.7  本章小结 396

第16章  使用MVC模式构建网站 397

16.1  设置ASP.NET Core MVC网站 397

16.1.1  创建和探索ASP.NET Core MVC

网站 397

16.1.2  审查ASP.NET Core MVC网站 399

16.1.3  回顾ASP.NET Core Identity

数据库 401

16.2  探索ASP.NET Core MVC网站 401

16.2.1  了解ASP.NET Core MVC的

启动 401

16.2.2  理解MVC使用的默认路由 403

16.2.3  理解控制器和操作 403

16.2.4  理解视图搜索路径约定 405

16.2.5  单元测试MVC 405

16.2.6  过滤器 405

16.2.7  实体和视图模型 407

16.2.8  视图 408

16.3  自定义ASP.NET Core MVC

网站 410

16.3.1  自定义样式 411

16.3.2  设置类别图像 411

16.3.3  Razor语法 411

16.3.4  定义类型化视图 412

16.3.5  测试自定义首页 414

16.3.6  使用路由值传递参数 415

16.3.7  模型绑定程序 417

16.3.8  验证模型 419

16.3.9  视图辅助方法 422

16.3.10  查询数据库和使用显示模板 422

16.3.11  使用异步任务提高可伸缩性 424

16.4  使用其他项目模板 425

16.5  实践与探索 427

16.5.1  练习16.1:测试你掌握的知识 427

16.5.2  练习16.2:通过实现类别详细

信息页面来练习实现MVC 427

16.5.3  练习16.3:理解和实现异步操作

方法以提高可伸缩性 427

16.5.4  练习16.4:探索主题 427

16.6  本章小结 428

第17章  使用内容管理系统构建网站 429

17.1  了解CMS的优点 429

17.1.1  了解CMS的基本特性 429

17.1.2  了解企业级CMS的特性 430

17.1.3  了解CMS平台 430

17.2  了解Piranha CMS 430

17.2.1  开源库和许可 431

17.2.2  创建Piranha CMS网站 431

17.2.3  探索Piranha CMS网站 432

17.2.4  编辑站点和页面内容 433

17.2.5  创建一个新的顶级页面 436

17.2.6  创建一个新的子页面 437

17.2.7  回顾博客归档 438

17.2.8  文章和页面评论 439

17.2.9  探索身份验证和授权 440

17.2.10  探索配置 441

17.2.11  测试新内容 442

17.2.12  了解路由 442

17.2.13  了解媒体 444

17.2.14  理解应用程序服务 444

17.2.15  理解内容类型 445

17.2.16  理解标准块 449

17.2.17  检查组件类型和标准块 450

17.3  定义组件、内容类型和模板 451

17.3.1  创建自定义区域 452

17.3.2  创建实体数据模型 453

17.3.3  创建自定义页面类型 454

17.3.4  创建自定义视图模型 454

17.3.5  为内容类型自定义内容模板 455

17.3.6  通过配置启动和导入数据库 458

17.3.7  学习如何使用项目模板

创建内容 460

17.4  测试Northwind CMS网站 461

17.4.1  上传图像并创建类别根目录 461

17.4.2  导入类别和产品内容 462

17.4.3  管理类别内容 463

17.4.4  Piranha如何存储内容 464

17.5  实践和探索 465

17.5.1  练习17.1:测试你掌握的知识 465

17.5.2  练习17.2:练习定义块类型,

用以呈现YouTube视频 465

17.5.3  练习17.3:探索主题 466

17.6  本章小结 466

第18章  构建和消费Web服务 467

18.1  使用ASP.NET Core Web API

构建Web服务 467

18.1.1  理解Web服务缩写词 467

18.1.2  创建ASP.NET Core Web API

项目 468

18.1.3  检查Web服务的功能 470

18.1.4  为Northwind示例数据库创建

Web服务 471

18.1.5  为实体创建数据存储库 473

18.1.6  实现Web API控制器 476

18.1.7  配置客户存储库和Web API

控制器 477

18.1.8  指定问题的细节 480

18.1.9  控制XML序列化 481

18.2  解释和测试Web服务 481

18.2.1  使用浏览器测试GET请求 481

18.2.2  使用REST Client扩展测试

HTTP请求 482

18.2.3  启用Swagger 485

18.2.4  使用Swagger UI测试请求 486

18.3  使用HTTP客户端消费服务 490

18.3.1  了解HttpClient类 490

18.3.2  使用HttpClientFactory配置

HTTP客户端 490

18.3.3  在控制器中以JSON的形式

获取客户 491

18.3.4  支持跨源资源共享 493

18.4  实现高级功能 494

18.4.1  实现健康检查API 495

18.4.2  实现Open API分析器和约定 495

18.4.3  实现临时故障处理 496

18.4.4  理解端点路由 496

18.4.5  配置端点路由 496

18.4.6  添加HTTP安全标头 498

18.4.7  保护Web服务 499

18.5  了解其他通信技术 499

18.5.1  了解WCF 499

18.5.2  了解gRPC 500

18.6  实践和探索 500

18.6.1  练习18.1:测试你掌握的知识 500

18.6.2  练习18.2:练习使用HttpClient

创建和删除客户 500

18.6.3  练习18.3:探索主题 500

18.7  本章小结 501

第19章  使用机器学习构建智能

应用程序 502

19.1  了解机器学习 502

19.1.1  了解机器学习的生命周期 502

19.1.2  了解用于训练和测试的数据集 503

19.1.3  了解机器学习任务 503

19.1.4  了解Microsoft Azure Machine 

Learning 504

19.2  理解ML.NET 504

19.2.1  了解Infer.NET 505

19.2.2  了解ML.NET学习管道 505

19.2.3  了解模型训练的概念 506

19.2.4  了解缺失值和键类型 506

19.2.5  了解特性和标签 506

19.3  进行产品推荐 507

19.3.1  问题分析 507

19.3.2  数据的收集和处理 507

19.3.3  创建NorthwindML网站项目 508

19.3.4  测试产品推荐网站 519

19.4  实践和探索 521

19.4.1  练习19.1:测试你掌握的知识 521

19.4.2  练习19.2:使用样本进行练习 521

19.4.3  练习19.3:探索主题 521

19.5  本章小结 522

第20章  使用Blazor构建Web用户

界面 523

20.1  理解Blazor 523

20.1.1  理解Blazor托管模型 523

20.1.2  理解Blazor组件 524

20.1.3  比较Blazor和Razor 524

20.1.4  比较Blazor项目模板 524

20.2  使用Blazor服务器构建组件 532

20.2.1  定义和测试简单的组件 532

20.2.2  将实体放入组件 533

20.2.3  为Blazor组件抽象服务 535

20.2.4  使用Blazor表单 537

20.3  使用Blazor WebAssembly

构建组件 542

20.3.1  为Blazor WebAssembly配置

服务器 543

20.3.2  为Blazor WebAssembly配置

客户端 545

20.3.3  Web应用程序的渐进式支持 548

20.4  实践和探索 550

20.4.1  练习20.1:测试你掌握的知识 550

20.4.2  练习20.2:练习创建组件 550

20.4.3  练习20.3:探索主题 550

20.5  本章小结 551

第21章  构建跨平台的移动应用程序 552

21.1  了解XAML 552

21.1.1  使用XAML简化代码 553

21.1.2  选择常见的控件 553

21.1.3  理解标记扩展 554

21.2  了解Xamarin和Xamarin. Forms 554

21.2.1  Xamarin.Forms扩展了Xamarin 554

21.2.2  移动先行,云先行 554

21.2.3  不同移动平台的市场份额 555

21.2.4  了解一些额外功能 555

21.2.5  了解Xamarin.Forms用户界面

组件 556

21.3  使用Xamarin.Forms构建移动

应用程序 557

21.3.1  添加Android SDK 558

21.3.2  创建Xamarin.Forms解决方案 558

21.3.3  创建具有双向数据绑定的

实体模型 559

21.3.4  为拨打电话号码创建组件 562

21.3.5  为客户列表和客户详细信息创建

视图 565

21.3.6  测试移动应用程序 569

21.4  在移动应用程序中消费Web

服务 571

21.4.1  配置Web服务以允许不安全

的请求 572

21.4.2  配置iOS应用程序以允许不安全

的连接 572

21.4.3  配置Android应用程序,允许

进行不安全连接 573

21.4.4  添加用于消费Web服务的

NuGet包 573

21.4.5  从Web服务中获取客户 574

21.5  实践和探索 575

21.5.1  练习21.1:测试你掌握的知识 575

21.5.2  练习21.2:探索主题 576

21.6  本章小结 576

附录部分(请扫描封底二维码获取)

附录A  练习题答案

附录B  构建Windows桌面应用程序

 

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘