22 | 异常处理中间件:区分真异常与逻辑异常
摘要:
处理异常的方式 异常处理页 异常处理匿名委托 IExceptionFilter ExceptionFilterAttribute 示例 新建Web程序👉选择API模板在Controllers文件夹👉WeatherForecastController类👉Get方法首行抛出一个异常 public
20 | 结构化日志组件Serilog:记录对查询分析友好的日志
摘要:
结构化日志的好处 易于检索 易于分析统计 场景举例 实现日志告警 实现上下文的关联 实现追踪系统集成 示例 首先我们新建Web程序👉选择API模板改造Program类 using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Co
19 | 日志作用域:解决不同请求之间的日志干扰
摘要:
日志作用域的场景 一个事务包含多条操作时 复杂流程的日志关联时 调用点追踪与请求处理过程对应时 示例 继续沿用上一节代码,稍微做一些修改 using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Dependency
18 | 日志框架:聊聊记日志的最佳姿势
摘要:
新建控制台应用程序👉命名LoggingSimpleDemo using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Lo
16 | 选项数据热更新:让服务感知配置的变化
摘要:
选项框架关键类型 IOptionsMonitor IOptionsSnapshot 场景 范围作用域类型使用IOptionsSnapshot 单例服务使用IOptionsMonitor 通过代码更新选项 IPostConfigureOptions 示例 延续使用上一节代码,稍微做些特殊处理将Orde
17 | 为选项数据添加验证:避免错误配置的应用接收用户流量
摘要:
三种验证方法 直接注册验证函数 实现IValidateOptions 使用Microsoft.Extensions.Options.DataAnnotations 示例 直接注册验证函数继续使用上一节代码,需要稍微修改一点代码。 using Microsoft.Extensions.Configur
15 | 选项框架:服务组件集成配置的最佳实践
摘要:
特性 支持单例模式读取配置 支持快照 支持配置变更通知 支持运行时动态修改选项值 设计原则 接口分离原则(LSP),我们的类不应该依赖它不适用的配置 关注点分离(SOC),不同组件、服务、类之间的配置不应相互依赖或耦合 建议 为我们的服务设计XXXOptions 使用IOptions<XXXOpti
14 | 自定义配置数据源:低成本实现定制化配置方案
摘要:
扩展步骤 实现IConfigurationSource 实现IConfigurationProvider 实现AddXXX扩展方法 示例 新建控制台应用程序👉命名ConfigurationCustom👉引入包Microsoft.Extensions.Configuration👉新建三个类:My
13 | 配置绑定:使用强类型对象承载配置数据
摘要:
要点 支持将配置值绑定到已有对象 支持将配置值绑定到私有属性上 默认情况下我们只能绑定public的 示例 继续沿用我们上一次创建的控制台应用程序,新添加一个包Microsoft.Extensions.Configuration.Binder首先我们新建一个类,来作为我们接受配置的实例 class
12 | 配置变更监听:配置热更新能力的核心
摘要:
场景 需要记录配置源的变更时 需要在配置数据变更时触发特定操作时 当我们需要追踪我们的配置发生变化时,在配置发生变化时我们需要执行一些特定的操作的时候,这个时候就需要我们来进行一定的编码,来跟踪我们配置的变化 关键方法 IChangeToken IConfiguration.GetReloadTok