作者 |
校宝在线 肖伟宇 翁琳鼎 王斌 厉红兵 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9787111669845 |
简要 |
涵盖WebAPI、实时通信、WebAssembly、AI工程化等多种场景,基于长期支持版.NET Core 3.1深入剖析核心组件的设计理念 |
简介 |
内容简介书籍计算机书籍 在Web应用研发领域容器编排、微服务、服务网格等先进架构已大行其道的今天,本书作为ASP.NET Core的入门教程,可以让广大开发人员在自己的技能列表里添加上这个关键项。本书从ASP.NET Core的核心组件入手,延伸到MVC、WebAPI、SignalR(实时通信应用)、Blazor(wasm应用)、机器学习等多种应用开发,全方位地讲解ASP.NET Core的应用场景、开发实践和部署发布,带领读者学习从开发到发布基于ASP.NET Core项目的全过程。 本书主要针对的是对C#语法和Web开发有一定了解、期望使用C#语言开发Web项目的初学者,也可以是具有ASP.NET MVC开发经验、希望通过ASP.NET Core提升跨平台和容器化开发能力的开发者。 |
目录 |
前言 第1章 为什么选择ASP.NET Core 1 1.1 什么是.NET 1 1.2 ASP.NET Core的特点 3 1.3 读者能从本书学到什么 4 第2章 ASP.NET Core开发工具安装 6 2.1 .NET Core SDK安装 6 2.1.1 获取.NET Core SDK 6 2.1.2 安装.NET Core SDK 7 2.2 Visual Studio Code安装 7 2.2.1 获取Visual Studio Code 8 2.2.2 安装Visual Studio Code 8 2.2.3 更新Visual Studio Code 10 2.3 Visual Studio 2019安装 10 2.3.1 确保计算机可以安装Visual Studio 10 2.3.2 获取 Visual Studio 11 2.3.3 安装Visual Studio安装程序 11 2.3.4 启动安装程序 12 第3章 ASP.NET Core核心组件详解 13 3.1 框架总述 13 3.2 依赖注入 14 3.2.1 什么是依赖注入 14 3.2.2 依赖注入组件 15 3.2.3 服务描述类ServiceDescriptor 16 3.2.4 IServiceCollection与服务注册 18 3.2.5 通过IServiceProvider获取服务实例 20 3.2.6 作用域与生命周期 22 3.2.7 IDisposable与生命周期 25 3.2.8 扩展接口IServiceProviderFactory 25 3.2.9 在Controller中获取服务 28 3.3 配置组件 29 3.3.1 配置组件的构造过程 29 3.3.2 内存配置提供程序 32 3.3.3 命令行配置提供程序 32 3.3.4 环境变量配置提供程序 34 3.3.5 文件配置提供程序 35 3.3.6 Key-per-file配置提供程序 37 3.3.7 使用IConfiguration读取配置 38 3.3.8 使用强类型接收配置 40 3.4 选项组件 42 3.4.1 选项的注入与使用 42 3.4.2 使用命名选项 44 3.4.3 验证选项 46 3.4.4 选项后期配置 47 3.5 中间件 48 3.5.1 注册中间件 49 3.5.2 常用的内置中间件 51 3.6 路由与终结点 52 3.6.1 注册终结点 53 3.6.2 路由模板 54 3.6.3 特性路由 55 3.6.4 路由约束 56 3.6.5 生成链接 57 第4章 基于MVC设计模式的Web应用 59 4.1 创建第一个ASP.NET Core MVC项目 59 4.2 什么是MVC模式 63 4.3 视图 64 4.3.1 使用视图的好处 65 4.3.2 创建视图 66 4.3.3 利用控制器指定视图 66 4.3.4 视图发现 67 4.3.5 向视图传递数据 68 4.3.6 动态视图 72 4.4 部分视图 73 4.4.1 何时使用部分视图 73 4.4.2 声明部分视图 73 4.4.3 引用部分视图 74 4.4.4 呈现部分视图 75 4.4.5 通过部分视图访问数据 76 4.5 控制器 78 4.5.1 什么是控制器 78 4.5.2 Action 79 4.5.3 横切关注点 80 4.6 路由 80 4.6.1 自定义路由 81 4.6.2 混合路由 82 4.6.3 动态路由 82 4.7 区域 85 4.8 筛选器 89 4.8.1 筛选器的工作原理 90 4.8.2 实现 91 4.9 模型绑定器 95 4.9.1 什么是模型绑定 95 4.9.2 目标 96 4.9.3 源 97 4.9.4 不存在模型属性的源 98 4.9.5 类型转换错误 99 4.9.6 复杂类型 99 4.9.7 集合 101 4.9.8 字典 102 4.9.9 模型绑定路由数据和URL字符串参数的全局行为 102 4.9.10 特殊数据类型 103 4.9.11 输入格式化程序 103 4.9.12 从模型绑定中排除指定类型 105 4.9.13 手动模型绑定 106 第5章 基于ASP.NET Core的Web API 107 5.1 创建ASP.NET Core的Web API项目 107 5.2 带有Swagger的Web API帮助页 111 5.2.1 Swashbuckle.AspNetCore 111 5.2.2 Swagger规范 112 5.2.3 Swagger UI 113 5.3 ASP.NET Core Web API中控制器的返回类型 114 5.3.1 特定类型 114 5.3.2 IActionResult 类型 115 5.3.3 ActionResult 类型 117 5.4 Web API约定 118 5.4.1 应用Web API约定 119 5.4.2 创建Web API约定 120 第6章 ASP.NET Core中的数据库访问 122 6.1 Entity Framework Core 122 6.2 安装并运行MySQL 123 6.2.1 启动MySQL 125 6.2.2 创建数据库 125 6.3 数据库访问 126 6.3.1 添加数据库上下文 126 6.3.2 创建控制器 127 6.4 .NET Core Dapper 128 第7章 安全与身份认证 129 7.1 身份认证 129 7.1.1 身份认证处理程序 130 7.1.2 身份认证方案 130 7.1.3 身份认证服务 130 7.1.4 身份认证中间件 131 7.1.5 添加基于策略的身份认证方案 132 7.1.6 用户信息模型 133 7.1.7 添加自定义身份认证处理程序 133 7.2 授权 135 7.2.1 简单授权 135 7.2.2 基于角色的授权 136 7.2.3 基于策略的授权 137 7.2.4 授权中间件 137 7.2.5 授权处理程序 138 7.2.6 自定义授权处理程序 139 7.3 集成IdentityServer4 139 7.4 数据保护 141 7.4.1 数据保护入门 142 7.4.2 用户机密管理 143 7.4.3 小结 143 7.5 强制HTTPS 143 7.5.1 RequireHttpsAttribute 144 7.5.2 HTTPS重定向中间件 144 7.5.3 HTTP严格传输安全协议 145 7.6 防跨站请求伪造 145 7.6.1 什么是跨站请求伪造 146 7.6.2 同步令牌模式 146 7.7 防开放重定向攻击 147 7.8 防跨站脚本 148 7.8.1 防范跨站脚本攻击 149 7.8.2 使用Razor的HTML编码 149 7.8.3 使用Razor的JavaScript编码 149 7.8.4 小结 150 7.9 跨域请求 150 7.9.1 跨域资源共享 150 7.9.2 启用CORS中间件 150 7.9.3 配置需要CORS的资源路径 152 7.9.4 小结 152 第8章 基于SignalR开发实时通信应用 153 8.1 基于SignalR的实时通信 153 8.1.1 数据交互传输 153 8.1.2 Hub中心 154 8.2 服务端实现 155 8.2.1 创建和使用Hub 155 8.2.2 启用SignalR 155 8.2.3 上下文对象Context 156 8.2.4 Clients对象 156 8.2.5 向客户端发送消息 157 8.2.6 处理连接事件 158 8.2.7 用户和组 158 8.2.8 服务的可扩展实现 159 8.3 客户端实现 160 8.3.1 创建connection对象 160 8.3.2 使用on添加客户端方法 160 8.3.3 使用start开始连接服务端 160 8.3.4 使用invoke调用服务端方法 161 8.3.5 自动连接 161 8.3.6 手动重连 163 第9章 基于Blazor的Web客户端技术 164 9.1 Blazor的应用模型 165 9.2 创建项目 166 9.3 页面路由 169 9.4 数据绑定 171 9.5 组件 172 9.5.1 模板化组件 172 9.5.2 组件库 174 9.6 状态管理 176 第10章 日志与监控 181 10.1 日志组件 181 10.1.1 日志类别 183 10.1.2 日志级别 184 10.1.3 日志对象与依赖注入 185 10.1.4 事件ID 186 10.1.5 使用日志模板 187 10.1.6 日志作用域 188 10.1.7 筛选日志输出 192 10.2 健康检查组件 193 10.2.1 注册健康检查 194 10.2.2 配置健康检查终结点 196 10.2.3 自定义健康检查项 198 10.2.4 检查结果发布器 199 第11章 远程调用 201 11.1 使用HttpClient调用远程API 201 11.1.1 构造HttpClient 201 11.1.2 发出请求 203 11.1.3 设置代理 204 11.1.4 处理Cookie 204 11.2 使用HttpClientFactory机制管理HttpClient 205 11.2.1 注册并使用HttpClientFactory 205 11.2.2 使用命名客户端 207 11.2.3 使用类型化客户端 208 11.2.4 使用ConfigureHttpClient 209 11.2.5 使用ConfigurePrimaryHttpMessageHandler 210 11.2.6 理解生命周期 211 11.2.7 HTTP请求管道 212 11.2.8 使用ConfigureHttpMessageHandlerBuilder 213 11.2.9 关于请求日志 214 11.3 使用gRPC实现高性能远程调用 215 11.3.1 定义接口描述 216 11.3.2 配置服务端 217 11.3.3 配置客户端 219 11.3.4 使用dotnet-grpc命令行工具管理 .proto 文件引用 220 第12章 部署ASP.NET Core应用 222 12.1 部署到IIS中 222 12.1.1 概述 222 12.1.2 下载和安装ASP.NET Core模块 223 12.1.3 部署到IIS 站点 224 12.2 部署为Windows Service 227 12.2.1 配置应用 227 12.2.2 安装和运行服务 228 12.3 部署到Linux中 228 12.3.1 安装.NET运行时 228 12.3.2 部署应用 229 12.3.3 反向代理 230 12.4 部署到Docker中 231 12.4.1 Docker简介 231 12.4.2 Docker术语 231 12.4.3 生成和制作Dockerfile 232 12.4.4 生成镜像 233 12.4.5 部署镜像 234 12.5 高可用架构 234 12.5.1 概述 234 12.5.2 应用本身的高可用保障 235 第13章 ASP.NET Core高级内容 236 13.1 文件提供程序 236 13.1.1 访问本地物理文件系统 237 13.1.2 监视文件的变化 237 13.2 请求功能接口 238 13.3 URL重写 239 13.3.1 重写规则 239 13.3.2 IRule接口 241 13.3.3 小结 242 13.4 缓存 242 13.4.1 缓存标记帮助程序 242 13.4.2 内存缓存和分布式缓存 243 第14章 结合ML.NET实现机器学习应用 245 14.1 机器学习简介 245 14.1.1 什么是机器学习 245 14.1.2 机器学习的作用 246 14.1.3 机器学习的分类 247 14.1.4 机器学习的典型步骤 247 14.2 ML.NET 简介 248 14.3 ML.NET特色功能 249 14.4 ML.NET开发环境搭建 252 14.4.1 安装ML.NET库 252 14.4.2 安装Microsoft.ML.TimeSeries与Microsoft.ML.AutoML 253 14.4.3 安装ML.NET模型生成器 254 14.4.4 安装ML.NET命令行接口工具 254 14.5 ML.NET快速上手 255 14.5.1 构建模型阶段 256 14.5.2 使用模型阶段 256 14.6 ML.NET与ONNX实践 259 14.6.1 准备事项 260 14.6.2 创建控制台应用程序 260 14.6.3 准备数据和预训练的模型 260 14.6.4 定义输入和输出数据结构 261 14.6.5 定义评分预测类 261 14.6.6 使用模型进行分析和输出 266 第15章 更多的学习途径 270 15.1 .NET Core的学习途径 270 15.2 其他需要关注的技术 271 |