《ASP.NET Core 6框架揭秘》目录
第1章 编程体验
1.1 控制台程序
1.1.1 构建开发环境
1.1.2 命令行构建 .NET应用
1.2 ASP.NET应用
1.2.1 launchSettings.json
1.2.2 Minimal
1.2.3 中间件
1.2.4 配置选项
1.2.5 诊断日志
1.2.6 路由
1.3 MVC
1.3.1 定义Controller
1.3.2 引入视图
1.4 gRPC
1.4.1 定义服务
1.4.2 实现和承载
1.4.3 调用服务
1.5 Dapr
1.5.1 构建开发环境
1.5.2 服务调用
1.5.3 状态管理
1.5.4 发布订阅
1.5.5 Actor模型
第2章 依赖注入(上篇)
2.1 控制反转
2.1.1 流程控制的反转
2.1.2 好莱坞法则
2.1.3 流程定制
2.2 IoC模式
2.2.1 模板方法
2.2.2 工厂方法
3.2.3 抽象工厂 43
2.3 依赖注入
2.3.1 由容器提供对象
2.3.2 三种注入方式
2.3.3 Service
2.4 一个简易版的依赖注入容器
2.4.1 编程体验
3.4.2 设计与实现
3.4.3 扩展方法
第3章 依赖注入(下篇)
3.1 利用容器提供服务
3.1.1 服务的注册与消费
3.1.2 生命周期
3.1.3 服务注册的验证
3.2 服务注册
3.2.1 ServiceDescriptor
3.2.2 IServiceCollection
3.3 服务的消费
3.3.1 IServiceProvider
3.3.2 服务实例的创建
3.3.3 生命周期
3.3.4 ActivatorUtilities
3.4 扩展
3.4.1. 适配
3.4.2. IServiceProviderFactory<TContainerBuilder>
3.4.3. 整合第三方依赖注入框架
第4章 文件系统
4.1 抽象的文件系统
4.1.1 树形层次结构
4.1.2 读取文件内容
4.1.3 监控文件的变化
4.2 文件与目录
4.2.1 IChangeToken
4.2.2 IFileProvider
4.2.3 两个特殊的文件系统
4.3 物理文件系统
4.3.1 PhysicalFileInfo
4.3.2 PhysicalDirectoryInfo
4.3.3 PhysicalDirectoryContents
4.3.4 NotFoundDirectoryContents
4.3.5 PhysicalFilesWatcher
4.4 内嵌文件系统
4.4.1 将项目文件变成内嵌资源
4.4.2 读取资源文件
4.4.3 EmbeddedFileProvider
第5章 配置选项(上篇)
5.1 读取配置信息
5.1.1 编程模型三要素
5.1.2 以键值对的形式读取配置
5.1.3 读取结构化的配置
5.1.4 将结构化配置直接绑定为对象
5.1.5 将配置定义在文件中
5.1.6 根据环境动态加载配置文件
5.1.7 配置内容的同步
5.2 配置模型
5.2.1 数据结构及其转换
5.2.2 IConfiguration
5.2.3 IConfigurationProvider
5.2.4 IConfigurationSource
5.2.5 IConfigurationBuilder
5.2.6 ConfigurationManager
5.3 配置绑定
5.3.1 绑定配置项的值
5.3.2 绑定复合对象
5.3.3 绑定集合
5.3.4 绑定字典
5.4 配置的同步
5.4.1 配置数据流
5.4.2 ConfigurationReloadToken
5.4.3 ConfigurationRoot
5.4.4 ConfigurationSection
5.5 多样性的配置源
5.5.1 MemoryConfigurationSource
5.5.2 EnvironmentVariablesConfigurationSource
5.5.3 CommandLineConfigurationSource
5.5.4 FileConfigurationSource
5.5.5 StreamConfigurationSource
5.5.6 ChainedConfigurationSource
第6章 配置选项(下篇)
6.1 Options模式
6.1.1 将配置绑定为Options对象
6.1.2 提供具名的Options
6.1.3 配置源的同步
6.1.4 直接初始化Options对象
6.1.5 根据依赖服务的Options设置
6.1.6 验证Options的有效性
6.2 Options模型
6.2.1 OptionsManager<TOptions>
6.2.2 IOptionsFactory<TOptions>
6.2.3 IOptionsMonitorCache<TOptions>
6.2.4 IOptionsMonitor<TOptions>
6.3 依赖注入
6.3.1 服务注册
6.3.2 IOptions<TOptions>与IOptionsSnapshot<TOptions>
6.3.3 集成配置系统
第7章 诊断日志(上篇)
7.1 各种诊断日志形式
7.1.1 调试日志
7.1.2 跟踪日志
7.1.3 事件日志
8.1.4 诊断日志 184
7.2 Debugger调试日志
7.2.1 Debugger
7.2.2 Debug
7.3 TraceSource跟踪日志
7.3.1 跟踪日志模型三要素
7.3.2 预定义TraceListener
7.3.3 Trace
7.4 EventSource事件日志
7.4.1 EventSource
7.4.2 EventListener
7.4.3 活动跟踪
7.5 DiagnosticSource诊断日志
7.5.1 标准的观察者模式
7.5.2 AnonymousObserver<T>
7.5.3 强类型的事件订阅
7.5.4 针对活动的跟踪
第8章 诊断日志(中篇)
8.1 统一日志编程模式
8.1.1 日志输出
8.1.2 日志过滤
8.1.3 日志范围
8.1.4 LoggerMessage
8.2 日志模型详解
8.2.1 日志模型三要素
8.2.2 ILogger
8.2.3 ILoggerProvider
8.2.4 ILoggerFactory
8.2.5 LoggerMessage
8.3 日志范围
8.3.1 调用链跟踪
8.3.2 服务范围堆栈
8.3.3 Activity的应用
8.4 依赖注入
8.4.1 核心服务
8.4.2 配置
8.4.3 日志过滤规则
第9章 诊断日志(下篇)
9.1 控制台
9.1.1 ConsoleFormatter
9.1.2 ConsoleLogger
9.1.3 ConsoleLoggerProvider
9.1.4 服务注册
9.2 调试器
9.2.1 DebugLogger
9.2.2 DebugLoggerProvider
9.3 TraceSource日志
9.3.1 TraceSourceLogger
9.3.2 TraceSourceLoggerProvider
9.4 EventSource日志
9.4.1 LoggingEventSource
9.4.2 EventSourceLogger
9.4.3 EventSourceLoggerProvider
9.4.4 日志范围
第10章 对象池
13.1 利用对象池复用对象
13.1.1 对象的“借”与“还”
13.1.2 依赖注入
13.1.3 池化对象策略
13.1.4 对象池的大小
13.1.5 对象的释放
13.2 池化对象管理
10.2.1 IPooledObjectPolicy<T>
10.2.2 ObjectPool<T>
10.2.3 ObjectPoolProvider
13.3 扩展应用
10.3.1 池化集合
10.3.2 池化StringBuilder
10.3.3 ArrayPool<T>
10.3.4 MemoryPool<T>
第11章 缓存
11.1 将数据缓存起来
11.1.1 将数据缓存在内存中
11.1.2 将数据缓存在Redis中
11.1.3 将数据缓存在SQL
11.2 本地内存缓存
11.2.1 ICacheEntry
11.2.2 MemoryCacheEntryOptions
11.2.3 IMemoryCache
11.3 分布式缓存
11.3.1 IDistributedCache
11.3.2 Redis缓存
11.3.3 SQL
第12章 HTTP调用
12.1 HttpClient的工厂
12.1.1 手工创建HttpClient
12.1.2 使用IHttpClientFactory工厂
12.1.3 直接注入HttpClient
12.1.4 定制HttpClient
12.1.5 强类型客户端
12.1.6 失败重试
12.2 HttpMessageHandler管道
12.2.1. HttpMessageHandler
12.2.2. DelegatingHandler
12.2.3. 诊断日志
12.2.4. 复用HttpClientHandler
12.3 HttpClient的构建
12.3.1. HttpMessageHandlerBuilder
12.3.2. HttpClientFactoryOptions
12.3.3. IHttpMessageHandlerBuilderFilter
12.3.4. IHttpClientFactory
12.4 依赖注入
12.4.1. 基础服务注册
12.4.2. 定制HttpClient
12.4.3. 强类型客户端
第13章 数据保护
13.1 加密与哈希
13.1.6 数据加密与解密
13.1.7 设置加密内容的有效期
13.1.8 撤销秘钥
13.1.9 “瞬时”加解密
13.1.10 密码哈希
13.2 加密模型
13.2.1. IAuthenticatedEncryptor
13.2.2. IKey
13.2.3. IKeyRing
13.2.4. IKeyRingProvider
13.2.5. IDataProtector
13.3 密钥管理
13.3.1. KeyManagementOptions
13.3.2. Key
13.3.3. IKeyManager
13.3.4. KeyRingProvider
13.4 依赖注入
13.4.1. 注册基础服务
13.4.2. 密钥管理配置
13.4.3. 扩展配置
第14章 服务承载
14.1 服务承载
14.1.1 性能指标收集服务
14.1.2 依赖注入
14.1.3 配置选项
14.1.4 承载环境
14.1.5 日志
14.2 承载模型
14.2.1 IHostedService
14.2.2 IHost
14.2.3 IHostBuilder
14.3 承载流程
14.3.1 服务宿主
14.3.2 承载设置
14.3.3 创建宿主
14.3.4 静态类型Host
第15章 管道(上篇)
15.1 管道式的请求处理
15.1.1 承载方式的变迁
15.1.2 中间件
15.1.3 定义强类型中间件
15.1.4 按照约定定义中间件
15.2 依赖注入
15.2.1 服务注册
15.2.2 服务注入
15.2.3 生命周期
15.3 配置
15.3.1 初始化配置
15.3.2 以键值对形式读取和修改配置
15.3.3 注册配置源
15.4 承载环境
15.4.1 IWebHostEnvironment
15.4.2 通过配置定制承载环境
15.4.3 设置监听地址
15.4.4 针对环境的编程
第16章 应用承载(中篇)
16.1 中间件委托链
16.1.1 HttpContext
16.1.2 中间件
16.1.3 中间件管道的构建
16.2 服务器
16.2.1 IServer
16.2.2 针对服务器的适配
16.2.3 HttpListenerServer
16.3 承载服务
16.3.1 WebHostedService
16.3.2 WebHostBuilder
16.3.3 应用构建
第17 章 应用承载(下篇)
17.1 共享上下文
17.1.1 HttpContext
17.1.2 服务器适配
17.1.3 获取上下文
17.1.4 上下文的创建与释放
17.1.5 RequestServices
17.2 IServer
17.2.1 IServer
17.2.2 HostingApplication
17.2.3 诊断日志
17.3 中间件委托链
17.3.1 IApplicationBuilder
17.3.2 弱类型中间件
17.3.3 强类型中间件
17.3.4 注册中间件
17.4 应用的承载
17.4.1 GenericWebHostServiceOptions
17.4.2 GenericWebHostService
17.4.3 GenericWebHostBuilder
17.4.4 ConfigureWebHostDefaults
17.5 Minimal
17.5.1 WebApplication
17.5.2 WebApplication的构建
17.5.3 工厂方法
第18章 服务器
18.1 自定义服务器
18.1.1 IServer
18.1.2 请求和响应特性
18.1.3 StreamBodyFeature
18.1.4 HttpListenerServer
18.2 KestrelServer
18.2.1 注册终结点
18.2.2 限制约束
18.2.3 其他设置
18.2.4 设计与实现
18.3 HTTP.SYS
18.3.1 HTTP.SYS简介
18.3.2 UseHttpSys
18.3.3 HttpSysOptions
18.4 IIS
18.4.1 ASP.NET
18.4.2 In-Process部署模式
18.4.3 Out-of-Process部署模式
18.4.4 <aspnetcore>配置
第19章 静态文件
19.1 搭建文件服务器
19.1.1 发布物理文件
19.1.2 呈现目录结构
19.1.3 显示默认页面
19.1.4 映射媒体类型
19.2 处理文件请求
19.2.1 条件请求
19.2.2 区间请求
19.2.3 StaticFileMiddleware
19.3 处理目录请求
19.3.1 DirectoryBrowserMiddleware
19.3.2 DefaultFilesMiddleware
第20章 路由
20.1 路由映射
20.1.1 注册终结点
20.1.2 设置内联约束
20.1.3 可缺省路由参数
20.1.4 特殊的路由参数
20.1.5 主机名绑定
20.1.6 更加自由的定义方式
20.2 路由分发
20.2.1 路由模式
20.2.2 路由终结点
20.2.3 中间件
20.2.4 处理器适配
20.2.5 Minimal
20.3 路由约束
20.3.1 预定义的IRouteConstraint
20.3.2 InlineConstraintResolver
20.3.3 自定义约束
第21章 异常处理
21.1 呈现错误信息
21.1.1 开发者异常页面
21.1.2 定制异常页面
21.1.3 针对响应状态码定制错误页面
21.2 开发者异常页面
21.2.1 IDeveloperPageExceptionFilter
21.2.2 显示编译异常信息
21.2.3 DeveloperExceptionPageMiddleware
21.3 异常处理器
21.3.1 ExceptionHandlerMiddleware
21.3.2 IExceptionHandlerPathFeature特性
21.3.3 清除缓存
21.3.4 404响应
21.4 响应状态码页面
21.4.1 StatusCodePagesMiddleware
21.4.2 阻止处理异常
21.4.3 注册中间件
第22章 响应缓存
22.1 缓存响应内容
22.1.1 基于路径的响应缓存
22.1.2 引入其他缓存维度
22.1.3 缓存屏蔽
22.2 HTTP-Cache
22.2.1 私有缓存和共享缓存
22.2.2 响应的提取
22.2.3 新鲜度检验
22.2.4 显式缓存控制
22.3 中间件
22.3.1 缓存上下文
22.3.2 缓存策略
22.3.3 缓存键
22.3.4 缓存的读写
22.3.5 ResponseCachingMiddleware
22.3.6 注册中间件
第23章 会话
23.1 利用会话保留“语境”
23.1.1 设置和提取会话状态
23.1.2 查看存储的会话状态
23.1.3 查看Cookie
23.2 会话状态的读写
23.2.1 ISession
23.2.2 DistributedSession
23.2.3 ISessionStore
23.3 会话中间件
23.3.1 SessionOptions
23.3.2 ISessionFeature
23.3.3 SessionMiddleware
第24章 HTTPS策略
24.1 HTTPS终结点的切换
24.1.1 构建HTTPS站点
24.1.2 HTTPS重定向
24.1.3 浏览器自动重定向
24.1.4 HSTS选项配置
24.2 HTTPS重定向
24.2.1 HttpsRedirectionOptions
24.2.2 HttpsRedirectionMiddleware中间件
24.2.3 中间件注册
24.3 HSTS
24.3.1 HstsOptions
24.3.2 HstsMiddleware
24.3.3 中间件注册
第25章 重定向
25.1 基于规则的重定向
25.1.1 客户端重定向
25.1.2 服务端重定向
25.1.3 IIS重写规则
25.1.4 Apache
25.1.5 HTTPS重定向
25.2 重定向中间件
25.2.1 重定向规则
25.2.2 RewriteMiddleware
25.3 预定义规则
25.3.1 “万能”规则
25.3.2 客户端重定向
25.3.3 服务端重定向
25.3.4 WWW重定向
25.3.5 HTTPS重定向
25.3.6 IIS重写规则
25.3.7 Apache重写规则
第26章 限流
26.1 控制并发量
26.1.1 设置并发和等待请求阈值
26.1.2 基于队列的策略
26.1.3 基于栈的策略
26.2 并发限制中间件
26.2.1 等待队列策略
26.2.2 ConcurrencyLimiterMiddleware
26.2.3 处理拒绝请求
26.3 等待队列策略
26.3.1 基于队列的处理策略
26.3.2 基于栈的处理策略
第27章 736
27.1 认证、登录与注销
27.1.1 认证票据
27.1.2 基于Cookie的认证
27.1.3 强制认证
27.1.4 登录与注销
27.2 身份与用户
28.2.1 IIdentity
28.2.2 IPrincipal
27.3 认证模型
27.3.1 认证票据
27.3.2 认证处理器
27.3.3 认证服务
27.3.4 服务注册
27.3.5 AuthenticationMiddleware
27.4 Cookie认证方案
27.4.1 AuthenticationHandler<TOptions>
27.4.2 CookieAuthenticationHandler
27.4.3 注册CookieAuthenticationHandler
第28章 授权
28.1 基于“角色”的授权
28.1.1 基于“要求”的授权
28.1.2 预定义授权策略
28.1.3 基于终结点的自动化授权
28.2 基于“要求”的授权
28.2.1 IAuthorizationHandler
28.2.2 预定义授权处理器
28.2.3 授权检验
28.3 基于“策略”的授权
28.3.1 授权策略的构建
28.3.2 授权策略的注册
28.3.3 授权检验
28.4 授权与路由
28.4.1 IAuthorizeData
28.4.2 IAllowAnonymous
28.4.3 IPolicyEvaluator
28.4.4 IAuthorizationMiddlewareResultHandler
28.4.5 AuthorizationMiddleware
第29章 跨域资源共享
29.1 处理跨域资源
29.1.1 跨域调用API
29.1.2 提供者显式授权
29.1.3 基于策略的资源授权
29.1.4 将CORS规则应用到路由上
29.2 CORS规范
29.2.1 同源策略
29.2.2 针对资源的授权
29.2.3 获取授权的方式
29.2.4 用户凭证
29.3 CORS中间件
29.3.1 CORS策略
29.3.2 CORS与路由
29.3.3 CORS授权
29.3.4 CorsMiddleware
第30章 健康检查
30.1 检查应用的健康状况
30.1.1 确定当前应用是否可用
30.1.2 定制健康检查逻辑
30.1.3 改变响应状态码
30.1.4 细粒度的健康检查
30.1.5 定制响应内容
30.1.6 过滤IHealthCheck对象
30.2 设计与实现
30.2.1 IHealthCheck
30.2.2 HealthCheckService
30.2.3 HealthCheckMiddleware
30.3 发布健康报告
30.3.1 定期发布健康报告
30.3.2 IHealthCheckPublisher
30.3.3 HealthCheckPublisherHostedService