第1章 .NETCore介绍 1
1.1 .NET Core简介 2
1.1.1 什么是.NET Core 2
1.1.2 开源 3
1.1.3 与.NET Framework对比 3
1.1.4 与Mono比较 4
1.1.5 未来动向 4
1.1.6 ASP.NET Core 3.0的新增功能 5
1.2 .NET Core环境安装 7
1.2.1 Windows安装.NET Core 7
1.2.2 Linux安装NET Core 9
1.3 第一个.NET Core程序 10
1.3.1 创建首个应用程序 10
第2章 ASP.NETCore初识 12
2.1 ASP.NET Core MVC概述 13
2.1.1 什么是MVC模式 13
2.1.2 什么是ASP.NET Core MVC 14
2.2 ASP.NET Core MVC项目结构 16
2.2.1 wwwroot 16
2.2.2 Startup 17
2.2.3 Appsettings 18
2.2.4 Program 19
2.3 ASP.NET Core初步 20
2.3.1 .NET Core request 20
2.3.2 .NET Core Response 21
2.3.3 .NET Core获取绝对路径 22
2.3.4 .NRT Core中获取用户请求ip地址 23
2.3.5 使用nginx后.NET Core无法获取ip问题 23
2.4 ASP.NET Core使用Session 24
2.4.1 启用session 24
2.4.2 使用Session 25
2.4.3 Session存储对象 25
2.5 ASP.NET Core使用Cookie 27
2.5.1 使用传统Cookie 27
2.5.2 使用加密Cookie 27
2.6 URL编码解码与GDPR规则 29
2.6.1 URL编码解码 29
2.6.2 GDPR规则 30
第3章 Core MVC筛选器与中间件 32
3.1 .NET Core筛选器 33
3.1.1 筛选器的工作原理 33
3.1.2 实现 35
3.1.3 筛选器作用域和执行顺序 37
3.1.4 取消和设置短路 40
3.1.5 依赖关系注入 41
3.1.6 授权筛选器 45
3.1.7 资源筛选器 47
3.1.8 操作筛选器 48
3.1.9 异常筛选器 50
3.1.10 结果筛选器 52
3.1.11 在筛选器管道中使用中间件 57
3.2 .NET Core中间件 58
3.2.1 使用IApplicationBuilder创建中间件管道 58
3.2.2 执行顺序 60
3.2.3 Use、Run和Map 61
3.2.4 内置中间件 64
第4章 ASP.NETCore路由与Kestrel 67
4.1 ASP.NET Core路由 68
4.1.1 路由基础 68
4.1.2 与早期版本路由的差异 70
4.1.3 使用路由中间件 75
4.1.4 路由模板参考 77
4.1.5 保留的路由名称 79
4.1.6 路由约束参考 79
4.1.7 正则表达式 80
4.1.8 自定义路由约束 81
4.2 ASP.NET Core使用Kestrel 81
4.2.1 Kestrel介绍 81
4.2.2 KestrelServer分析 83
第5章 Entity Framework Core 90
5.1 入门 91
5.1.1 Contoso University Web应用 91
5.1.2 设置网站样式 92
5.1.3 创建数据模型 95
5.1.4 为学生模型搭建基架 99
5.1.5 检查通过依赖关系注入注册的上下文 100
5.1.6 添加代码,以使用测试数据初始化该数据库 103
5.2 创建、读取、更新和删除 108
5.2.1 SingleOrDefaultAsync与FirstOrDefaultAsync 108
5.2.2 自定义详细信息页 109
5.2.3 更新创建页 112
5.2.4 更新编辑页 115
5.2.5 实体状态 116
5.2.6 更新删除页 116
5.3 排序、筛选器、页面和组 119
5.3.1 索引页添加排序 119
5.3.2 学生索引页添加搜索框 124
5.3.3 学生索引页添加分页功能 127
5.3.4 Index方法添加分页功能 129
5.3.5 向学生页面添加分页链接 132
5.3.6 更新关于页以显示学生统计信息 134
5.4 迁移 137
5.4.1 删除数据库 138
5.4.2 创建初始迁移并更新DB 138
5.4.3 在生产环境中应用迁移 140
第6章 Entity Framework Core进阶 142
6.1 创建复杂数据模型 143
6.1.1 使用特性自定义数据模型 144
6.1.2 Student实体更新 150
6.1.3 创建Instructor实体 151
6.1.4 创建OfficeAssignment实体 153
6.1.5 修改Course实体 155
6.1.6 创建Department实体 157
6.1.7 更新Enrollment实体 159
6.2 处理并发冲突 160
6.2.1 并发冲突 160
6.2.2 处理并发 162
第7章 Identity Server 4原理和实战 168
7.1 OAuth2.0简介 169
7.1.1 什么是OAuth 2.0 169
7.1.2 OpenID Connect简介 171
7.2 Identity server 4 173
7.2.1 简介 173
7.2.2 安装IdentityServer 4 175
7.2.3 体验IdentityServer 4 175
7.3 ASP.NET WPF客户端密码账户类型 184
7.3.1 接着Idp项目 184
7.3.2 创建一个WPFClient 185
第8章 Consul服务发现与注册 191
8.1 Windows下安装Consul与简单介绍 192
8.1.1 为什么需要服务注册与服务发现 192
8.1.2 Consul启动模式 193
8.2 NET Core服务注入到Consul与调用 194
8.2.1 下载Consul依赖 194
8.2.2 添加Consul配置 195
8.2.3 实现consul健康检查 198
8.2.4 把Consul的配置写入配置文件 198
8.2.5 通过consul简单的接口调用 201
第9章 API网关Ocelot 205
9.1 API网关ocelot介绍 206
9.1.1 简介 206
9.1.2 API网关是什么 206
9.1.3 Ocelot在API网关实现上的优点 206
9.1.4 Ocelot工作流程 206
9.2 NET Core3.1 使用API网关Ocelot基本使用 207
9.2.1 创建网关项目 207
9.2.2 WebApi项目 210
9.2.3 使用网关访问具体的api 211
9.3 NET Core使用API网关Ocelot实现负载均衡 211
9.4 NET Core使用API网关Ocelot请求缓存与限流 213
9.4.1 Ocelot实现请求缓存 213
9.4.2 Ocelot限流(RateLimit) 214
第10章 远程过程调用gRPC 218
10.1 了解远程过程调用 219
10.1.1 什么是gRPC 219
10.1.2 gRPC有什么好处以及在什么场景下需要用gRPC 219
10.2 gRPC自定义服务 220
10.2.1 服务器端 220
10.2.2 客户端 223
10.3 gRPC base64上传图片和文件 225
10.3.1 服务器端 225
10.3.2 gRPC服务端 226
第11章 ASP.NETBoilerplate 230
11.1 领域驱动设计DDD介绍 231
11.1.1 为什么要使用领域驱动设计 231
11.1.2 领域驱动设计的核心是什么 232
11.1.3 如何开始实践领域驱动设计 233
11.1.4 CQRS架构 235
11.2 NET Core3.1 Abp+vue实战 236
11.2.1 创建项目 236
11.2.2 修改后端项目 239
11.2.3 修改前端项目 242
第12章 Linux与Docker实战 245
12.1 掌握Linux 246
12.1.1 Linux简介 246
12.1.2 Linux系统目录结构 247
12.1.3 Linux远程登录 249
12.2 掌握Docker 251
12.2.1 CentOS安装Docker 251
12.2.2 docker发布.NET Core3.1 252
12.2.3 Docker安装Redis 256