ABP框架学习记录(25)- MultiTenancy 解析
ABP框架学习记录(25)- MultiTenancy 解析
简介
多租户和单租户托管是SaaS公司提供服务的两种方式。多租户托管是指在同一软件实例上存在许多客户端,它们共享基础结构,数据库和/或应用程序服务器。它便宜一些,但是有风险。单租户是指租户不共享任何东西。它更昂贵并且需要更多的管理,因为它需要为每个客户端运行完整的软件堆栈。
软件即服务(SaaS)产品可以具有各种级别的多租户。在应用程序服务器级别,可以有一个具有负载均衡功能的应用程序服务器池,可以为多个客户端提供服务。在数据库级别,每个租户可以有一个数据库,也可以在所有租户之间共享一个数据库。
详解
MultiTenancy:多租户
MultiTenancy 在ABP项目的目录位置:

MultiTenancySides:标识是租户,租主;

MultiTenancySideAttribute:声明多租户 特性;

TenantInfo:租户信息,只有Id,和租户名称;

ITenantStore:查找租户信息;
NullTenantStore:默认实现 ITenantStore 接口,
在 AbpKernelModule 注册,如果没有注册过,则注册 NullTenantStore:

Abp.Zero.Common 项目中,TenantStore 实现 ITenantStore:

TenantResolverCacheItem:租户获取缓存项
ITenantResolverCache:定义获取租户缓存接口;
NullTenantResolverCache:ITenantResolverCache 接口的空实现;
Abp.AspNetCore.MultiTenancy 项目, 在 HttpContextTenantResolverCache 类实现 HttpContextTenantResolverCache 接口:

ITenantResolveContributor:定义租户解析参与者接口;即实际解析租户的实现类
例如,在 Abp.AspNetCore.MultiTenancy 项目的 DomainTenantResolveContributor 类:

ITenantResolver/TenantResolver:租户解析者,相当于 Manager 的角色;
匹配到真正的 ITenantResolveContributor 接口实现:


Abp.Zero.Common
AbpTenantManager:管理 租户信息,包括持久化,Feature等;



参考: