ASP.NET Core 6框架揭秘的258个实例
作为《ASP.NET Core 3框架揭秘》的升级版,《ASP.NET Core 6框架揭秘》提供了很多新的章节,同时对现有的内容进行大量的修改。虽然本书旨在对ASP.NET Core框架的架构设计和实现原理进行剖析,但是其中提供的258个实例演示却可以作为入门材料,这个系列会将这些演示实例单独提取出来并进行汇总。对于想学习ASP.NET Core的同学,如果你觉得本书过于深入,读起来稍显吃力,可以看看。
第01章 编程体验
[101]利用命令行创建.NET程序(源代码)
[102]采用Minimal API构建ASP.NET Core程序(源代码)
[103]一步创建WebApplication对象(源代码)
[104]使用原始形态的中间件(源代码)
[105]使用中间件委托变体(1)(源代码)
[106]使用中间件委托变体(2)(源代码)
[107]定义强类型中间件类型(源代码)
[108]定义基于约定的中间件类型(构造函数注入)(源代码)
[109]定义基于约定的中间件类型(方法注入)(源代码)
[110]配置的应用(源代码)
[111]Options的应用(源代码)
[112]日志的应用(源代码)
[113]路由的应用(源代码)
[114]开发MVC API(源代码)
[115]开发MVC APP(源代码)
[116]开发gRPC API(源代码)
[117]Dapr-服务调用 (源代码)
[118]Dapr-状态管理(源代码)
[119]Dapr-发布订阅(源代码)
[120]Dapr-Actor模型(源代码)
第02章 依赖注入(上篇)
[201]模拟容器Cat-普通服务的注册和提取(源代码)
[202]模拟容器Cat-针对泛型服务类型的支持(源代码)
[203]模拟容器Cat-为同一类型提供多个服务注册(源代码)
[204]模拟容器Cat-服务实例的生命周期(源代码)
第03章 依赖注入(下篇)
[301]普通服务的注册和提取(源代码)
[302]针对泛型服务类型的支持(源代码)
[303]为同一类型提供多个服务注册(源代码)
[304]服务实例的生命周期(源代码)
[305]服务实例的释放回收(源代码)
[306]服务范围的验证(源代码)
[307]服务注册有效性的验证(源代码)
[308]构造函数的选择(成功)(源代码)
[309]构造函数的选择(失败)(源代码)
[310]IDisposable和IAsyncDisposable接口的差异(错误编程)(源代码)
[311]IDisposable和IAsyncDisposable接口的差异(正确编程)(源代码)
[312]利用ActivatorUtilities提供服务实例(源代码)
[313]ActivatorUtilities针对构造函数的“评分”(源代码)
[314]ActivatorUtilities针对构造函数的选择(源代码)
[315]ActivatorUtilitiesConstructorAttribute特性的应用(源代码)
[316]与第三方依赖注入框架Cat的整合(源代码)
第04章 文件系统
[S401] 输出文件系统目录结构(源代码)
[S402]读取物理文件内容(源代码)
[S403]读取内嵌文件内容(源代码)
[S404]监控文件的变更(源代码)
第05章 配置选项(上篇)
[501]以键值对形式读取配置(源代码)
[502]读取结构化配置(源代码)
[503]将结构化配置绑定为对象(源代码)
[504]将配置定义在JSON文件中(源代码)
[505]根据环境动态加载配置文件(源代码)
[506]配置内容的实时同步(源代码)
[507]绑定配置项的值(源代码)
[508]类型转换器在配置绑定中的应用(源代码)
[509]复合对象的配置绑定(源代码)
[510]集合的配置绑定(源代码)
[511]集合和数组的配置绑定的差异(源代码)
[512]字典的配置绑定(源代码)
第06章 配置选项(下篇)
[601]将配置绑定为Options对象(源代码)
[602]具名Options的注册和提取(源代码)
[603]Options与配置源的实时同步(匿名Options)(源代码)
[604]Options与配置源的实时同步(具名Options)(源代码)
[605]用代码方式初始化Options(匿名Options)(源代码)
[606]用代码方式初始化Options(具名Options)(源代码)
[607]针对依赖服务的Options设置(源代码)
[608]验证Options的有效性(源代码)
第07章 诊断日志(上篇)
[S701]TraceSource跟踪日志(源代码)
[S702]基于等级的日志过滤(源代码)
[S703]自定义面向控制台的TraceListener(源代码)
[S704]EventSource事件日志(源代码)
[S705]自定义EventListener监听事件(源代码)
[S706]DiagnosticListener诊断日志(源代码)
[S707]为DiagnosticListener注册强类型订阅者(源代码)
[S708]DefaultTraceListener针对文件的日志输出(源代码)
[S709]利用DelimitedListTraceListener将日志输出到CSV文件(源代码)
[S710]更加完整的EventListener类型定义(源代码)
[S711]利用EventSource的事件日志输出调用链(源代码)
[S712]AnonymousObserver<T>的应用(源代码)
[S713]强类型诊断事件订阅(源代码)
第08章 诊断日志(中篇)
[S801]将日志输出到控制台和调试窗口(源代码)
[S802]利用ILoggerFactory工厂创建Ilogger<T>对象(源代码)
[S803]注入Ilogger<T>对象(源代码)
[S804]TraceSource和EventSource的日志输出(源代码)
[S805]针对等级的日志过滤(源代码)
[S806]针对等级和类别的日志过滤(源代码)
[S807]针对等级、类别和ILoggerProvider类型的日志过滤(源代码)
[S808]利用配置定义日志过滤规则(源代码)
[S809]利用日志范围输出调用链(源代码)
[S810]LoggerMessage的应用(源代码)
[S812]基于Activity的日志范围(源代码)
第09章 诊断日志(下篇)
[S901]SimpleConsoleFormatter格式化器(源代码)
[S902]SystemdConsoleFormatter格式化器(源代码)
[S903]JsonConsoleFormatter格式化器(源代码)
[S904]改变ConsoleLogger的标准输出和错误输出(源代码)
[S905]自定义控制台日志的格式化器(源代码)
第10章 对象池
[S1001]对象池基本使用方式
[S1002]利用注入的ObjectPoolProvider提供对象池
[S1003]自定义对象池化策略
[S1004]对象池的容量与并发的关系(容量不小于并发量)
[S1005]对象池的容量与并发的关系(容量小于并发量)
[S1006]池化对象的释放
[S1007]池化集合对象
[S1008]池化StringBuilder
[S1009]ArrayPool<T>的应用
[S1010]MemoryPool<T>的应用
第11章 缓存
[S1101]基于内存的本地缓存(源代码)
[S1102]基于Redis的分布式缓存(源代码)
[S1103]基于SQL Server的分布式缓存(源代码)
第12章 HTTP调用
[S1201]频繁创建HttpClient对象调用API(源代码)
[S1202]以单例方式使用HttpClient(源代码)
[S1203]利用IHttpClientFactory工厂创建HttpClient对象(源代码)
[S1204]直接注入HttpClient对象(源代码)
[S1205]定制HttpClient对象(源代码)
[S1206]强类型客户端(源代码)
[S1207]基于Polly的失败重试(源代码)
[S1208]HttpClient的默认管道结构(源代码)
[S1209]定制HttpClient管道(源代码)
[S1210]针对HTTP调用的日志输出(>=Information)(源代码)
[S1211]针对HTTP调用的日志输出(>=Trace)(源代码)
第13章 数据保护
[S1301]数据的加解密(源代码)
[S1302]Purpose字符串一致性(源代码)
[S1303]设置加密内容的有效期(源代码)
[S1304]撤销加密密钥(单个密钥)(源代码)
[S1305]撤销加密密钥(所有密钥)(源代码)
[S1306]瞬时加解密(源代码)
[S1307]密钥哈希(源代码)
[S1308]基于本地文件系统的密钥管理(密钥创建)(源代码)
[S1309]基于本地文件系统的密钥管理(密钥撤销)(源代码)
第14章 服务承载
[S1401]利用承载服务收集性能指标(源代码)
[S1402]依赖注入的应用(源代码)
[S1403]配置选项的应用(源代码)
[S1404]提供针对环境的配置(源代码)
[S1405]日志的应用(源代码)
[S1406]在配置中定义日志过滤规则(源代码)
[S1407]利用IHostApplicationLifetime对象关闭应用(源代码)
[S1408]与第三方依赖注入框架的整合(源代码)
[S1409]利用配置初始化承载环境(源代码)
第15章 应用承载(上篇)
[S1501]基于IWebHost/IWebHostBuilder的应用承载方式(源代码)
[S1502]将初始化设置定义在Startup类型中(源代码)
[S1503]基于IHost/IHostBuilder的应用承载方式(源代码)
[S1504]Minimal API(源代码)
第16章 应用承载(中篇)
[S1601]一个“迷你版”的ASP.NET Core框架(源代码)
第17章 应用承载(下篇)
[S1701]ASP.NET针对请求的诊断日志(源代码)
[S1702]收集DiagnosticSource输出的日志(源代码)
[S1703]收集EventSource输出的日志(源代码)
[S1704]模拟Minimal API的实现(源代码)
第18章 服务器
[S1801]自定义服务器(源代码)
[S1802]两种终结点的选择(源代码)
[S1803]直接创建连接接收请求和回复响应(源代码)
[S1804]模拟KestrelServer的实现(源代码)
[S1805]使用IIS部署ASP.NET Core应用(In-Process模式)(源代码)
[S1806]使用IIS部署ASP.NET Core应用(Out-Of-Process模式)(源代码)
第19章 静态文件
[1901]以Web形式发布文件(图片)
[1902]以Web形式发布文件(PDF)
[1903]显式文件目录结构
[1904]显示目录的默认页面
[1905]定制目录的默认页面
[1906]设置默认的媒体类型
[1907]映射文件扩展名的媒体类型
第20章 路由
[S2001]注册路由终结点
[S2002]以内联方式设置路由参数的约束
[S2003]定义可缺省的路由参数
[S2004]为路由参数指定默认值
[S2005]一个路径分段定义多个路由参数
[S2006]一个路由参数跨越多个路径分段
[S2007]主机名绑定
[S2008]将终结点处理定义为任意类型的委托
[S2009]IResult 的应用
第21章 异常处理
[2101]开发者异常页面的呈现
[2102]定制异常页面的呈现
[2103]利用注册的中间件处理异常
[2104]针对异常页面的重定向
[2105]基于响应状态码错误页面的呈现(设置响应内容模板)
[2106]基于响应状态码错误页面的呈现(提供异常处理器)
[2107]基于响应状态码错误页面的呈现(利用中间件创建异常处理器)
[S2108]利用IDeveloperPageExceptionFilter定制开发者异常页面
[S2109]针对编译异常的处理(默认)
[S2110]针对编译异常的处理(定义源代码输出行数)
[S2111]利用IExceptionHandlerFeature特性提供错误信息
[S2112]清除缓存响应报头
[S2113]针对404响应的处理
[S2114]利用I[Statu[SCodePage[SFeature特性忽略异常处理
第22章 响应缓存
[S2201]基于路径的响应缓存
[S2202]基于指定的查询字符串缓存响应
[S2203]基于指定的请求报头缓存响应
[S2204]缓存屏蔽
第23章 会话
[S2301]设置和提取会话状态
[S2302]查看存储的会话状态
[S2303] 查看Cookie
第24章 HTTPS策略
[S2401]构建HTTPS站点
[S2402]HTTPS终结点重定向
[S2403]注册HstsMiddleware中间件
[S2404]设置HSTS配置选项
第25章 重定向
[S2501]客户端重定向
[S2502]服务端重定向
[S2503]采用IIS重写规则实现重定向
[S2504]采用Apache重写规则实现重定向
[S2505]基于HTTPS终结点的重定向
第26章 限流
[S2601]设置并发和等待请求阈值
[S2602]基于队列的限流策略
[S2603]基于栈的限流策略
[S2604]处理被拒绝的请求
第27章 认证
[S2701]使用最简洁的代码实现登录、认证和注销
第28章 授权
[S2801]基于“要求”的授权
[S2802]基于“策略”的授权
[S2803]将“角色”绑定到路由终结点
[S2804]将“授权策略”绑定到路由终结点
第29章 跨域资源共享
[S2901]跨域调用API
[S2902]显式指定授权Origin列表
[S2903]手工检验指定Origin是否的权限
[S2904]基于策略的资源授权(匿名策略)
[S2905]基于策略的资源授权(具名策略)
[S2906]将CORS规则应用到路由终结点上(代码编程形式)
[S2907]将CORS规则应用到路由终结点上(特性标注形式)
第30章 健康检查
[S3001]确定应用可用状态
[S3002]定制健康检查逻辑
[S3003]改变健康状态对应的响应状态码
[S3004]提供细粒度的健康检查
[S3005]定制健康报告响应内容
[S3006]IHealthCheck对象的过滤
[S3007]定期发布健康报告