EasyAdminBlazor 第六篇:多租户 SaaS 实战——一套代码,服务千家客户

前面五篇我们讲了快速搭建、目录结构、CRUD、关联表、权限控制。今天说一个企业级系统的核心能力——多租户(SaaS)

如果你做过面向企业的项目,一定遇到过这个问题:一套系统,要卖给不同的客户,每个客户的数据要隔离。

传统做法:每个客户部署一套,维护成本爆炸。

SaaS 做法:一套代码,多个客户共用,数据自动隔离。

EasyAdminBlazor 的多租户能力,只需要两步


一、两步开启多租户

第一步:安装扩展

dotnet add package EasyAdminBlazor.MultiTenant

第二步:在 Program.cs 中启用

builder.AddEasyAdminBlazor(/* ... */)
    .AddEasyAdminBlazorMultiTenant();

完成。 后台会自动出现「租户管理」菜单。


二、添加租户

进入「租户管理」→「添加租户」,填写:

字段 说明 示例
租户名称 公司/客户名称 A公司
租户编码 唯一标识 company_a
绑定域名 该租户的访问域名 a.yourdomain.com
数据库连接 该租户的数据库连接字符串(数据库需提前创建) Server=...;Database=Tenant_A;...

保存后,框架会自动在该数据库中创建所有表结构。


三、通过域名自动识别租户

用户访问 a.yourdomain.com → 框架根据域名自动切换到对应的租户数据库。

不需要写任何代码。

访问地址 自动识别的租户 使用的数据库
a.yourdomain.com A公司 Tenant_A 数据库
b.yourdomain.com B公司 Tenant_B 数据库
yourdomain.com 默认/管理端 主数据库

DNS 配置:将所有域名都解析到同一台服务器即可。


四、租户隔离效果

同一套程序,不同的域名,自动切换到不同的数据库,数据物理隔离:

场景 租户A(A公司) 租户B(B公司)
访问地址 a.yourdomain.com b.yourdomain.com
使用的数据库 Tenant_A Tenant_B
看到的数据 A公司的客户、订单 B公司的客户、订单

租户A的管理员登录 a.yourdomain.com,看到的全是自己公司的数据。
租户B的管理员登录 b.yourdomain.com,看到的全是自己公司的数据。

数据物理隔离,安全可靠。


五、准备工作

在添加租户之前,需要提前完成:

  1. 创建数据库:在数据库服务器中为每个租户创建独立的数据库
  2. 配置域名:将租户域名 DNS 解析到你的服务器
  3. 准备连接字符串:确保连接字符串中的数据库名称与实际创建的数据库一致

六、为什么选择数据库隔离?

EasyAdminBlazor 采用独立数据库的隔离模式,这是企业级 SaaS 的标准做法:

对比项 数据库隔离(本框架) 共享表
数据安全 物理隔离,最安全 同一个表,容易误操作
数据备份 按租户独立备份 需要一起备份,恢复困难
性能 互不影响 大租户可能影响小租户
迁移 可单独迁移 迁移复杂

七、总结

你需要做的事 框架自动做的事
安装 EasyAdminBlazor.MultiTenant 自动创建租户管理界面
提前创建好租户数据库
在后台添加租户(名称、域名、连接字符串) 自动在指定数据库中创建表结构
DNS 配置域名解析 根据请求域名自动识别租户并切换数据库

一套代码,多个数据库,服务千家客户。


八、适用场景

场景 是否适合
为多个客户提供 SaaS 服务 完美适配
企业内部多子公司独立管理 完美适配
每个客户需要独立备份/恢复 天然支持
数据安全要求高的行业(金融/医疗) 物理隔离

下一篇预告

《EasyAdminBlazor 第七篇:可视化代码生成器——点几下,一个完整模块到手》


文档https://easyadmim.wang-zhan.com.cn/doc
源码https://gitee.com/gudufy/EasyAdminBlazor

EasyAdminBlazor —— 两步开启多租户,一套代码服务万家客户

文章摘自:https://www.cnblogs.com/abpzero/p/20465072