图书目录

目  录

第1章  概览 1

1.1  ASP.NET Core简介 1

1.1.1  为什么选择ASP.NET Core 1

1.1.2  ASP.NET Core的核心特性 1

1.1.3  ASP.NET Core的架构 2

1.1.4  ASP.NET Core的应用场景 2

1.2  ASP.NET Core的演变历程 3

1.2.1  早期的ASP.NET框架 3

1.2.2  ASP.NET Core的诞生 3

1.2.3  迁移到ASP.NET Core 4

1.3  安装和配置开发环境 4

1.3.1  安装.NET Core SDK 4

1.3.2  选择开发工具 6

1.3.3  创建ASP.NET Core项目 6

1.3.4  运行和调试应用程序 7

1.4  小结 7

第2章  基础知识 8

2.1  Razor Pages介绍 8

2.1.1  什么是Razor Pages 8

2.1.2  Razor Pages和MVC 8

2.1.3  创建一个Razor Page 9

2.2  MVC介绍 10

2.2.1  什么是MVC模式 10

2.2.2  MVC模式的工作流程 11

2.2.3  在ASP.NET Core中使用MVC 11

2.3  Web API介绍 12

2.3.1  什么是Web API 13

2.3.2  RESTful API 13

2.3.3  创建一个Web API 13

2.3.4  使用其他HTTP方法 14

2.4  应用启动 15

2.4.1  配置应用程序的启动类 15

2.4.2  启动应用程序 16

2.5  依赖关系注入 17

2.5.1  什么是依赖关系注入 17

2.5.2  在ASP.NET Core中使用依赖关系注入 18

2.5.3  生命周期管理 19

2.6  中间件 20

2.6.1  什么是中间件 20

2.6.2  中间件的工作原理 20

2.6.3  创建自定义中间件 20

2.6.4  内置中间件 21

2.7  Web主机 22

2.7.1  什么是Web主机 22

2.7.2  配置Web主机选项 23

2.7.3  运行Web主机 23

2.8  HTTP服务器 23

2.8.1  什么是HTTP服务器 23

2.8.2  Kestrel HTTP服务器 24

2.8.3  其他HTTP服务器 24

2.9  配置 24

2.9.1  什么是配置 24

2.9.2  配置源 25

2.9.3  读取配置数据 25

2.9.4  配置文件 25

2.10  选项模式 26

2.10.1  为什么需要选项模式 26

2.10.2  如何使用选项模式 27

2.10.3  选项验证和默认值 28

2.11  执行环境 29

2.11.1  什么是执行环境 29

2.11.2  执行环境的类型 29

2.11.3  访问执行环境信息 29

2.11.4  配置执行环境 30

2.12  日志记录 30

2.12.1  为什么需要日志记录 31

2.12.2  ASP.NET Core的日志记录 31

2.12.3  配置日志记录 32

2.12.4  日志记录最佳实践 32

2.13  路由 32

2.13.1  什么是路由 33

2.13.2  路由模板 33

2.13.3  路由参数 33

2.13.4  路由约束 34

2.13.5  路由属性 34

2.14  错误处理 35

2.14.1  为什么需要错误处理 35

2.14.2  全局错误处理 35

2.14.3  异常筛选器 35

2.14.4  状态码和错误页面 36

2.15  静态文件 37

2.15.1  配置静态文件中间件 37

2.15.2  创建静态文件 37

2.15.3  访问静态文件 38

2.16  小结 38

第3章  数据访问 39

3.1  EF Core 7.0简介 39

3.1.1  为什么选择EF Core 39

3.1.2  EF Core的基本概念 40

3.1.3  使用EF Core进行数据访问 40

3.2  DbContext 41

3.2.1  什么是DbContext 41

3.2.2  创建自定义的DbContext 42

3.2.3  使用DbContext进行数据访问 42

3.2.4  ASP.NET Core依赖关系注入中的DbContext 43

3.3  模型 43

3.3.1  什么是模型 43

3.3.2  创建模型 43

3.3.3  配置实体属性 44

3.4  管理数据库架构 45

3.4.1  创建数据库 45

3.4.2  处理数据库迁移 46

3.5  查询数据 46

3.5.1  LINQ查询 47

3.5.2  进阶查询 47

3.6  保存数据 48

3.6.1  插入数据 49

3.6.2  更新数据 49

3.6.3  删除数据 49

3.6.4  事务管理 50

3.7  更改跟踪 51

3.7.1  什么是更改跟踪 51

3.7.2  更改状态 51

3.7.3  更改检测 51

3.7.4  显式更改状态 52

3.7.5  取消更改 52

3.8  小结 53

第4章  远程过程调用 54

4.1  gRPC简介 54

4.1.1  什么是gRPC 54

4.1.2  gRPC的优势 54

4.1.3  与HTTP API的功能进行比较 55

4.2  使用gRPC 55

4.2.1  定义服务接口和消息类型 55

4.2.2  创建gRPC服务端 56

4.2.3  构建gRPC客户端 57

4.2.4  gRPC通信的传输安全性协议 57

4.2.5  gRPC的其他功能 57

4.3  小结 57

第5章  实时通信 59

5.1  SignalR 59

5.1.1  什么是SignalR 59

5.1.2  SignalR的优势 59

5.1.3  使用SignalR 60

5.1.4  SignalR的其他功能 61

5.2  WebSockets 61

5.2.1  什么是WebSockets 61

5.2.2  WebSockets的优势 62

5.2.3  使用WebSockets 62

5.2.4  其他WebSockets库和框架 64

5.3  Server-Sent Events 64

5.3.1  什么是Server-Sent Events 64

5.3.2  Server-Sent Events的优势 64

5.3.3  使用Server-Sent Events 65

5.3.4  Server-Sent Events的其他功能 66

5.4  长轮询 66

5.4.1  什么是长轮询 66

5.4.2  长轮询的工作原理 66

5.4.3  使用长轮询 67

5.4.4  长轮询的注意事项 69

5.5  小结 69

第6章  程序安全 70

6.1  身份验证 70

6.1.1  为什么身份验证很重要 70

6.1.2  常见的身份验证方法 70

6.1.3  在应用程序中实现身份验证 71

6.2  授权 72

6.2.1  什么是授权 73

6.2.2  常见的授权策略 73

6.2.3  在应用程序中实现授权 73

6.2.4  授权与身份验证的区别 74

6.3  数据保护 74

6.3.1  数据加密 74

6.3.2  敏感数据的保护措施 74

6.3.3  使用ASP.NET Core进行数据加密 75

6.4  HTTPS 76

6.4.1  什么是HTTPS 76

6.4.2  HTTPS的工作原理 76

6.4.3  在ASP.NET Core中使用HTTPS 76

6.4.4  使用HTTPS的好处 77

6.5  机密管理 77

6.5.1  为什么需要机密管理 77

6.5.2  机密管理的最佳实践 77

6.5.3  使用ASP.NET Core中的机密管理工具 78

6.6  XSRF/CSRF防护 78

6.6.1  什么是XSRF/CSRF攻击 79

6.6.2  如何防范XSRF/CSRF攻击 79

6.6.3  使用Anti-Forgery Token防范XSRF/CSRF攻击 79

6.7  跨域资源共享 80

6.7.1  什么是跨域资源共享 80

6.7.2  如何配置CORS 80

6.7.3  使用CORS允许跨域请求 81

6.8  跨站点脚本攻击 81

6.8.1  什么是跨站点脚本攻击 82

6.8.2  如何防范跨站点脚本攻击 82

6.8.3  使用输入验证和输出编码防范XSS攻击 82

6.9  小结 83

第7章  性能优化 84

7.1  缓存 84

7.1.1  为什么使用缓存 84

7.1.2  ASP.NET Core中的缓存支持 84

7.1.3  使用缓存的最佳实践 87

7.2  异步编程和并行处理 87

7.2.1  异步编程 88

7.2.2  并行处理 88

7.2.3  异步编程和并行处理的结合应用 90

7.3  内存管理和垃圾回收 91

7.3.1  内存管理的基本原理 91

7.3.2  垃圾回收 92

7.3.3  在ASP.NET Core中的内存优化 93

7.4  响应压缩 94

7.4.1  压缩原理 94

7.4.2  在ASP.NET Core中启用响应压缩 94

7.4.3  响应压缩的性能考虑 95

7.5  性能测试和调优工具 95

7.5.1  性能测试工具 95

7.5.2  调优工具 96

7.5.3  ASP.NET Core性能调优 96

7.6  小结 97

第8章  测试和质量保证 98

8.1  单元测试和集成测试 98

8.1.1  单元测试 98

8.1.2  集成测试 99

8.2  UI测试和自动化测试 100

8.2.1  UI测试的重要性 100

8.2.2  UI测试框架和工具 100

8.2.3  自动化测试 102

8.3  性能测试和压力测试 102

8.3.1  性能测试的重要性 102

8.3.2  压力测试的重要性 103

8.3.3  性能测试工具和技术 103

8.4  代码覆盖率和质量保证工具 103

8.4.1  代码覆盖率的重要性 104

8.4.2  质量保证工具 104

8.5  小结 105

第9章  托管和部署 107

9.1  部署选项和最佳实践 107

9.1.1  部署选项 107

9.1.2  部署最佳实践 108

9.2  容器化应用程序 109

9.2.1  容器化的概念 109

9.2.2  容器化的优势 109

9.2.3  容器化工具 110

9.3  高可用性和负载均衡 111

9.3.1  高可用性的概念 111

9.3.2  负载均衡的概念 111

9.3.3  高可用性和负载均衡工具 112

9.4  云托管和自动化部署 112

9.4.1  云托管的概念 113

9.4.2  云托管的优势 113

9.4.3  自动化部署的最佳实践 113

9.5  小结 114

第10章  Vue 3入门 116

10.1  基本概念和核心特性 116

10.1.1  什么是Vue 3 116

10.1.2  Vue 3的核心特性 116

10.1.3  组件化开发 117

10.2  安装和配置 119

10.2.1  安装Vue 3 119

10.2.2  创建Vue 3实例 120

10.2.3  运行Vue 3应用 121

10.2.4  Vue CLI 121

10.3  组件化开发和单文件组件的使用 122

10.3.1  什么是组件化开发 122

10.3.2  单文件组件的使用 122

10.4  小结 124

第11章  Vue 3基础知识 126

11.1  声明式渲染 126

11.1.1  什么是声明式渲染 126

11.1.2  使用Vue 3进行声明式渲染 126

11.2  属性绑定 127

11.2.1  什么是属性绑定 127

11.2.2  使用Vue 3进行属性绑定 127

11.2.3  动态更新属性 128

11.3  事件监听 129

11.3.1  什么是事件监听 129

11.3.2  使用Vue 3进行事件监听 130

11.3.3  传递参数 131

11.4  表单绑定 131

11.4.1  什么是表单绑定 131

11.4.2  使用Vue 3进行表单绑定 132

11.4.3  预设表单元素的初始值 133

11.5  条件渲染 133

11.5.1  什么是条件渲染 133

11.5.2  使用Vue 3进行条件渲染 134

11.5.3  使用v-else-if进行多条件渲染 135

11.6  列表渲染 135

11.6.1  什么是列表渲染 135

11.6.2  使用Vue 3进行列表渲染 135

11.6.3  在列表渲染中使用索引 136

11.7  计算属性 137

11.7.1  什么是计算属性 137

11.7.2  使用Vue 3创建计算属性 137

11.7.3  对比计算属性和方法 138

11.8  生命周期和模板引用 139

11.8.1  生命周期 139

11.8.2  使用生命周期钩子函数 140

11.8.3  模板引用 141

11.9  侦听器 141

11.9.1  什么是侦听器 142

11.9.2  使用Vue 3的侦听器 142

11.9.3  深度侦听 143

11.10  小结 143

第12章  组件开发 146

12.1  组件生命周期和钩子函数 146

12.1.1  什么是组件生命周期 146

12.1.2  组件钩子函数 146

12.1.3  使用组件钩子函数 147

12.1.4  在控制台查看输出 147

12.2  Props 148

12.2.1  什么是Props 148

12.2.2  如何使用Props 148

12.2.3  Props验证 149

12.3  组件事件 150

12.3.1  什么是组件事件 150

12.3.2  在子组件中定义事件 150

12.3.3  在父组件中监听事件 151

12.3.4  向子组件传递参数 151

12.4  组件v-model 152

12.4.1  什么是组件v-model 152

12.4.2  如何在组件中使用v-model 152

12.5  透传Attributes 153

12.5.1  什么是透传Attributes 153

12.5.2  如何使用透传Attributes 153

12.5.3  注意事项 155

12.6  插槽 155

12.6.1  什么是插槽 155

12.6.2  如何使用插槽 155

12.6.3  作用域插槽 156

12.7  依赖注入 157

12.7.1  什么是依赖注入 157

12.7.2  如何使用依赖注入 157

12.7.3  注意事项 158

12.8  异步组件 159

12.8.1  什么是异步组件 159

12.8.2  如何使用异步组件 159

12.8.3  注意事项 160

12.9  小结 160

第13章  路由 162

13.1  路由组件Vue Router 162

13.1.1  什么是路由 162

13.1.2  Vue Router简介 162

13.1.3  安装和配置Vue Router 162

13.1.4  创建一个基本路由 163

13.2  动态路由 164

13.2.1  什么是动态路由 164

13.2.2  在路由中使用动态参数 164

13.2.3  动态路由和组件复用 165

13.3  嵌套路由 165

13.3.1  什么是嵌套路由 165

13.3.2  在路由中使用嵌套路由 165

13.3.3  使用router-view嵌套子页面 166

13.4  路由导航 166

13.4.1  使用router-link进行路由导航 167

13.4.2  使用编程式导航 167

13.4.3  路由导航传参 168

13.5  命名路由 168

13.5.1  为什么使用命名路由 168

13.5.2  如何使用命名路由 168

13.5.3  使用命名路由进行导航 169

13.6  命名视图 170

13.6.1  什么是命名视图 170

13.6.2  如何使用命名视图 170

13.6.3  在模板中使用命名视图 170

13.7  重定向 171

13.7.1  什么是重定向 171

13.7.2  如何实现重定向 171

13.7.3  使用条件重定向 172

13.8  路由传参 172

13.8.1  为什么需要路由传参 173

13.8.2  路由传参的两种方式 173

13.8.3  在组件中获取路由参数 174

13.9  小结 174

第14章  状态管理——Pinia 176

14.1  状态管理库Pinia 176

14.1.1  什么是状态管理 176

14.1.2  为什么使用Pinia 176

14.1.3  安装Pinia 177

14.2  Store 177

14.2.1  创建Store 177

14.2.2  使用Store 178

14.2.3  在组件之外使用Store 179

14.3  小结 179

第15章  与服务器通信——axios 181

15.1  axios的安装 181

15.2  基本用法 181

15.2.1  发送GET请求 182

15.2.2  发送POST请求 182

15.2.3  其他请求方法 183

15.2.4  异步请求 183

15.2.5  请求配置 183

15.3  创建实例 184

15.3.1  为什么要创建实例 184

15.3.2  创建axios实例 184

15.3.3  使用实例发送请求 185

15.4  小结 185

第16章  Vue 3程序的测试和调试 187

16.1  编写单元测试和集成测试 187

16.1.1  为什么要进行测试 187

16.1.2  单元测试和集成测试的区别 187

16.1.3  编写单元测试 188

16.1.4  编写集成测试 189

16.2  使用Vue Test Utils进行组件测试 189

16.2.1  安装Vue Test Utils 189

16.2.2  编写组件测试 190

16.2.3  使用断言进行验证 191

16.2.4  模拟用户交互 191

16.3  调试应用程序的技巧和工具 191

16.3.1  使用Vue开发者工具 191

16.3.2  使用Chrome开发者工具 191

16.3.3  添加调试语句 192

16.3.4  使用Vue CLI的调试功能 192

16.3.5  性能分析 192

16.4  性能测试和优化建议 193

16.4.1  性能测试工具 193

16.4.2  优化建议 193

16.5  小结 194

第17章  Vue 3程序的部署 195

17.1  生产部署 195

17.2  性能优化 196

17.3  小结 198

第18章  案例:博客网站 199

18.1  需求功能说明 199

18.2  实现用户注册和登录 200

18.2.1  注册功能 201

18.2.2  登录功能 201

18.2.3  视图和表单 202

18.2.4  数据验证 203

18.3  实现博客列表展示 204

18.3.1  获取博客列表 204

18.3.2  创建博客列表视图 204

18.3.3  显示分页功能 205

18.4  实现博客详情查看 207

18.4.1  获取博客数据 207

18.4.2  创建博客详情视图 208

18.4.3  错误处理 209

18.5  实现发表博客 209

18.5.1  创建博客发布页面 209

18.5.2  处理博客发布请求 210

18.5.3  数据验证 211

18.5.4  增加富文本编辑器 211

18.6  实现评论功能 214

18.6.1  创建评论模型 214

18.6.2  创建评论视图模型 214

18.6.3  创建评论功能 215

18.6.4  显示评论列表 216

18.7  实现用户身份管理 217

18.7.1  注册和登录 217

18.7.2  用户角色管理 217

18.7.3  用户权限管理 218

18.8  实现博客分类 219

18.8.1  创建分类模型 219

18.8.2  创建分类管理功能 219

18.8.3  与博客关联分类 221

18.9  实现标签管理 221

18.9.1  创建标签模型 221

18.9.2  创建标签管理功能 222

18.9.3  与博客关联标签 223

18.10  实现博客搜索 224

18.10.1  创建搜索功能页面 224

18.10.2  创建搜索功能 225

18.10.3  实现博客搜索逻辑 226

18.11  实现博客点赞和收藏 226

18.11.1  实现博客点赞功能 226

18.11.2  实现博客收藏功能 227

18.11.3  显示点赞和收藏数量 227

18.12  小结 228

第19章  案例:通用权限系统 229

19.1  需求功能说明 229

19.2  实现用户管理 230

19.2.1  用户注册和认证 231

19.2.2  用户角色分配 232

19.2.3  用户信息管理 233

19.3  实现权限定义和分配 234

19.3.1  权限管理 234

19.3.2  角色管理 235

19.3.3  用户权限分配 236

19.4  实现组织架构管理 236

19.4.1  部门管理 236

19.4.2  部门权限 237

19.4.3  员工管理 237

19.5  实现访问控制 238

19.5.1  资源访问控制 238

19.5.2  功能访问控制 239

19.5.3  数据行级别的访问控制 239

19.6  实现操作和审计日志记录 240

19.6.1  操作日志 240

19.6.2  审计日志 240

19.6.3  日志存储和可视化 241

19.7  小结 241

第20章  案例:ERP系统 242

20.1  需求功能说明 242

20.1.1  系统概述 242

20.1.2  功能模块详解 242

20.1.3  定制与配置 245

20.2  实现采购管理 245

20.2.1  供应商管理 245

20.2.2  供应商分析 261

20.2.3  采购需求 261

20.2.4  采购合同 280

20.2.5  采购入库 300

20.2.6  采购退货 319

20.2.7  采购报表 338

20.3  小结 338