.net core 3.1 webapi项目实现读写分离之二

书接上回,搞定读写分离的配置仅仅是第一步,后面的才是重头戏。

1、项目组织

项目的组织采用三层架构:框架层/模型层、业务层、WebApi表现层。

  • 框架层dll包含了各类辅助类, 中间件等应该是最底层的架构库;EF 模型层也放在底层,但有独立的的类库构成包含dbcontext,主要由工具自动化生成)。
  • 业务层放在中间,其引用来自EF的Model层类库,由DTO类、业务Service、Automapper映射,以及错误定义等类构成。
  • WebApi表现层,主要附带部分验证逻辑,调用业务层的接口实现对外的api服务。

2、DbContextFactory

读写分离的核心类就是DbContextFactory,该类在生命周期内管理所有由其产生的DbContext包装类,其根据指定的参数,返回主库DbContext或从库DbContext包装类,并存放在一个词典里,在生命完结时释放这些DbContext。由于是DbContext一级进行管理的,其与微软的DbContextFactory相比,则不够轻量和智能。然而在提供主从库DbContext上,又比较自由灵活。

/// 
    /// EF数据上下文工厂对象,可以指定ConnectionString构造DBContext
    /// 
    public class Core

你可能感兴趣的:(.net,core,深度剖析)