网站开发用什么软件开发,一般专业网站建设公司,大理建设招标有限公司网站,WordPress建站 seo文章目录 项目地址一、结构化日志1.1 使用Serilog1. 安装所需要的包2. 注册服务和配置3. 安装Seq服务 1.2 添加分布式id中间件1. 添加中间件2. 注册服务3. 修改Application的LoggingBehavior 二、Redis缓存2.1 添加缓存1. 创建接口ICaching接口2. 实现ICaching接口3. 注册Cachi… 文章目录 项目地址一、结构化日志1.1 使用Serilog1. 安装所需要的包2. 注册服务和配置3. 安装Seq服务 1.2 添加分布式id中间件1. 添加中间件2. 注册服务3. 修改Application的LoggingBehavior 二、Redis缓存2.1 添加缓存1. 创建接口ICaching接口2. 实现ICaching接口3. 注册Caching服务4. 添加Docker 2.2 服务使用Caching2.3 查询使用Caching1. 添加ICachingQuery接口2. 给查询添加缓存3. 添加缓存的Pipeline Behaviors4. 注册管道行为5. 管道行为和中间件的区别 三、HealthCheck3.1 安装healthCheck包3.2 配置HealthCheck1. 添加注册服务2. program里添加服务 四、Api Versioning4.1 创建版本控制1. 安装需要的包2. 给controller添加版本 控制 4.2 让Swagger支持api 五、OutBox Pattern5.1 创建OutboxMessage类5.2 修改事件发布为Outbox发布5.3 创建OutBox表5.4 OutBox设置1. 创建配置类OutboxOptions2. 添加配置3. 注册配置和服务 项目地址
教程作者教程地址 代码仓库地址 所用到的框架和插件
dbt
airflow一、结构化日志
1.1 使用Serilog
1. 安装所需要的包 PackageReference IncludeSerilog Version4.2.0 /PackageReference IncludeSerilog.AspNetCore Version9.0.0 /PackageReference IncludeSerilog.Sinks.Seq Version9.0.0 /2. 注册服务和配置
3. 安装Seq服务
1.2 添加分布式id中间件
1. 添加中间件
2. 注册服务
3. 修改Application的LoggingBehavior
二、Redis缓存
2.1 添加缓存
1. 创建接口ICaching接口
在Application层
2. 实现ICaching接口
在Infrastructure层
3. 注册Caching服务
在Infrastructure里注册
4. 添加Docker 添加Redis在docker-compose里 在配置文件里添加缓存的connection string
2.2 服务使用Caching
给非常耗时的服务添加缓存这里我们给获取用户的Permision进行缓存
2.3 查询使用Caching
1. 添加ICachingQuery接口
表示给查询添加缓存
2. 给查询添加缓存
给之前的 3. 添加缓存的Pipeline Behaviors
管道行为只会
4. 注册管道行为
5. 管道行为和中间件的区别
对比项中间件Middleware管道行为Pipeline Behavior所属框架ASP.NET CoreMediatR作用范围整个 HTTP 请求生命周期只作用于 MediatR 的请求IRequest / INotification使用位置配置在 Program.cs 或 Startup.cs配置在 AddMediatR(...) 注册过程中执行顺序多个中间件按注册顺序包裹整个请求多个行为按注册顺序包裹 MediatR 的请求处理器核心接口RequestDelegateIPipelineBehaviorTRequest, TResponse通常用途日志、异常处理、认证、跨域、安全、请求上下文等MediatR 请求的日志、验证、缓存、事务处理等是否与控制器耦合不耦合作用于请求最外层只在你使用 MediatR.Send(...) 时生效是否能终止请求✅ 是中间件可以选择不调用 next() 终止请求✅ 是行为也可以选择不调用 next()终止链条
三、HealthCheck
3.1 安装healthCheck包
有什么服务就安装对应的包这里我们有postgrsql/redis/uris PackageReference IncludeAspNetCore.HealthChecks.NpgSql Version8.0.0 /PackageReference IncludeAspNetCore.HealthChecks.Redis Version8.0.0 /PackageReference IncludeAspNetCore.HealthChecks.Uris Version8.0.0 /3.2 配置HealthCheck
1. 添加注册服务
2. program里添加服务
四、Api Versioning
4.1 创建版本控制
1. 安装需要的包 PackageReference IncludeAsp.Versioning.Mvc Version8.1.0 /PackageReference IncludeAsp.Versioning.Mvc.ApiExplorer Version8.1.0 /添加服务
2. 给controller添加版本 控制
4.2 让Swagger支持api
五、OutBox Pattern
将要发送的消息先存入数据库的“Outbox 表”中和业务数据一起在同一个事务中提交。 另一个后台进程/服务定期扫描 Outbox 表将消息发送到消息队列如 Kafka、RabbitMQ。 发送成功后更新 Outbox 表状态如标记为已发送。
5.1 创建OutboxMessage类
用于实例化消息
public sealed class OutboxMessage
{public OutboxMessage(Guid id, DateTime occurredOnUtc, string type, string content){Id id;OccurredOnUtc occurredOnUtc;Content content;Type type;}public Guid Id { get; init; }public DateTime OccurredOnUtc { get; init; }public string Type { get; init; }public string Content { get; init; }public DateTime? ProcessedOnUtc { get; init; }public string? Error { get; init; }
}5.2 修改事件发布为Outbox发布
修改之前的事件发布
5.3 创建OutBox表
OutboxMessageConfiguration.cs internal sealed class OutboxMessageConfiguration : IEntityTypeConfigurationOutboxMessage
{public void Configure(EntityTypeBuilderOutboxMessage builder){builder.ToTable(outbox_messages);builder.HasKey(outboxMessage outboxMessage.Id);builder.Property(outboxMessage outboxMessage.Content).HasColumnType(jsonb);}
}5.4 OutBox设置
1. 创建配置类OutboxOptions
创建配置类
public sealed class OutboxOptions
{// 发送到消息队列的间隔时间public int IntervalInSeconds { get; init; }// 批量大小public int BatchSize { get; init; }
}2. 添加配置
在appsettings里添加 Outbox: {IntervalInSeconds: 5,BatchSize: 10}3. 注册配置和服务