文章目录

  • 前言
  • 一、租户功能的配置
    • 1.注入租户类
    • 2.相关类说明

前言

多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。

多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。一个支持多租户技术的系统需要在设计上对它的数据和配置进行虚拟分区,从而使系统的每个租户或称组织都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。

多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。通过在多个租户之间的资源复用,运营管理维护资源,有效节省开发应用的成本。而且,在租户之间共享应用程序的单个实例,可以实现当应用程序升级时,所有租户可以同时升级。同时,因为多个租户共享一份系统的核心代码,因此当系统升级时,只需要升级相同的核心代码即可。

多租户之间的资源隔离是非常基本的功能

  • 共享一套基础设施资源,但数据隔离

一、租户功能的配置

1.注入租户类

#region 多租户的配置
services.AddScoped<MultiTenancy.ITenantProvider, MultiTenancy.TenantProvider>();
#endregion

2.相关类说明

1、用于存储租户信息的基础类

/// <summary>
/// Tenant Class
/// </summary>
public class Tenant
{/// <summary>/// tenant's id/// </summary>public byte tenant_id { get; set; } = 1;/// <summary>/// tenant's name/// </summary>public string tenant_name { get; set; } = "default";
}

2、负责解析信息的租户代理类

/// <summary>
/// TenantProvider
/// </summary>
public interface ITenantProvider
{/// <summary>/// Get Current User's TenantID/// </summary>/// <returns></returns>byte GetCurrentTenantID();
}
/// <summary>
/// TenantProvider
/// </summary>
public class TenantProvider:ITenantProvider
{/// <summary>/// Tenant/// </summary>private readonly Tenant tenant;/// <summary>/// TenantProvider/// </summary>/// <param name="accessor">注入IHttpContextAccessor</param>public TenantProvider(IHttpContextAccessor accessor){if (accessor.HttpContext != null){var headers = accessor.HttpContext.Request.Headers;if (headers != null && headers.Count > 0&& headers.ContainsKey("TenantName")){//可以获取租户信息进行权限设计var name = headers["TenantName"].FirstOrDefault();}}//Default Valuetenant = new Tenant();}/// <summary>/// Get Current User's TenantID/// </summary>/// <returns></returns>public byte GetCurrentTenantID(){return tenant.tenant_id;}
}


3、使用

/// <summary>
/// Home controller
/// </summary>
[Route("Home")]
[ApiController]
[ApiExplorerSettings(GroupName = "Base")]
public class HomeController : BaseController
{private TenantProvider _tenantProvider;public HomeController(TenantProvider tenantProvider){_tenantProvider = tenantProvider;}[HttpGet]public async Task<IActionResult> GetAsync(){var id=_tenantProvider.GetCurrentTenantID();return Ok();}
}


访问接口,可以看到拿到了默认ID

【愚公系列】2023年02月 WMS智能仓储系统-006.租户功能的配置相关推荐

  1. 【愚公系列】2023年02月 WMS智能仓储系统-012.登录功能的实现

    文章目录 前言 1.业务流程说明 2.登录业务的相关技术点 3.登录-token原理分析 4.前端框架设计 一.登录功能的实现 1.登录页面设计 2.登录逻辑功能实现 2.1 登录逻辑页面 2.2 接 ...

  2. 【愚公系列】2023年02月 WMS智能仓储系统-011.数据库文档设计

    文章目录 前言 一.数据库文档设计 1.chm版本 2.PDF版本 3.html版本 二.数据库表目录 表结构 __EFMigrationsHistory asn asnsort category c ...

  3. 【愚公系列】2023年02月 WMS智能仓储系统-018.收获管理和发货管理(完结篇)

    文章目录 前言 一.收获管理和发货管理 1.收获管理 1.1 页面代码 1.2 接口代码 2.发货管理 1.1 页面代码 1.2 接口代码 前言 WMS智能仓储收货管理和发货管理是非常重要的两个功能 ...

  4. 【愚公系列】2023年02月 WMS智能仓储系统-007.Swagger接口文档的配置

    文章目录 前言 一.Swagger接口文档的配置 1.安装包 2.注入 2.1 Swagger服务的注入 2.2 appsetting.json的配置 2.3 Swagger服务的封装 2.3.1 S ...

  5. 【愚公系列】2023年02月 WMS智能仓储系统-017.仓内作业(库存冻结、库存调整、库存盘点)

    文章目录 前言 一.仓内作业 1.库存冻结 1.1 页面代码 1.2 接口代码 2.库存调整 2.1 页面代码 2.2 接口代码 3.库存盘点 3.1 页面代码 3.2 接口代码 前言 这节主要分为两 ...

  6. 【愚公系列】2023年02月 WMS智能仓储系统-016.库存管理和仓内作业(库存管理、仓内加工、库存移动)

    文章目录 前言 一.库存管理 1.1 页面代码 1.2 接口代码 二.仓内作业 1.仓内加工 1.1 页面代码 1.2 接口代码 2.库存移动 2.1 页面代码 2.2 接口代码 前言 这节主要分为两 ...

  7. 【愚公系列】2023年02月 WMS智能仓储系统-010.全局过滤、中间件、格式化配置

    文章目录 前言 一.全局过滤 1.全局行为过滤的概念 2.全局行为过滤的注册方式 2.1 方法注册 2.2 控制器注册 2.3 全局注册 2.4 TypeFilter 和 ServiceFilter ...

  8. 【愚公系列】2023年02月 WMS智能仓储系统-001.NLog日志的使用

    文章目录 前言 一.NLog日志的使用 1.安装包 2.配置文件nlog.config 3.使用 前言 系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以监视系统中发生的事件.用户可以通过它来 ...

  9. 【愚公系列】2023年02月 WMS智能仓储系统-015.基础设置(货主信息、运费设置、客户信息)

    文章目录 前言 一.基础设置 1.货主信息 1.1 页面代码 1.2 接口代码 2.运费设置 2.1 页面代码 2.2 接口代码 3.客户信息 3.1 页面代码 3.2 接口代码 前言 基础设置主要分 ...

最新文章

  1. JAVA教程 第六讲 Java的线程和Java Applet(二)
  2. TeXworks 0.4.5 发布,TeX 编辑器
  3. 2021年山西副高考试成绩查询,中国卫生人才网2021年山西卫生资格考试成绩查询...
  4. Unity3d面向英特尔 x86 平台的 Unity* 优化指南: 第 2 部分
  5. Unity——退出程序代码
  6. 区块链开发之确定性算法bip32,bip39,bip44
  7. uWSGI, Gunicorn负载服务器怎么选
  8. linux系统scsi硬盘,Linux系统中SCSI硬盘的热拔插
  9. DataInputStream.readUTF返回返回EOFException
  10. 新手上路注意事项及驾车技巧
  11. 拉普拉斯矩阵(Laplacian matrix)及其变体详解
  12. 设计模式-设计原则-开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段...
  13. 加拿大OPC认为警方使用FRT违反隐私法,正在订立新法
  14. 计算机控制系统第二章答案,计算机控制系统习题参考答案--第2章
  15. RememberMe原理分析
  16. ISP Tuning之路:初识ADRC
  17. app自动化测试appium教程之三——appium基础命令(python)
  18. php laravel框架笔记
  19. 中国全国地区MYSQL 地区SQL数据表(省,市,区,县)
  20. 2021年资料员-岗位技能(资料员)模拟考试题库及理论考试

热门文章

  1. 伺服电机各种运行模式
  2. dubbo源码解析之AbstractCacheFactory源码解析
  3. snb格式电子书制作教程
  4. 小技巧大用处!这些渠道让你的群发邮件更省心
  5. 【智能制造】奔向智能制造;什么样的人能引领工厂智能制造发展?
  6. 进程切换之context_switch详解
  7. python最优化算法实战---线性规划之内点法
  8. VBA通达信股票交易接口获得方法
  9. 数据结构实验一 —— 矩阵相乘算法
  10. 深富策略:资源股高位杀跌消费白马迎来反攻能否配置