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
等;
参考: