【问题标题】:Loading the tenant specific variables in a multi tenant application在多租户应用程序中加载特定于租户的变量
【发布时间】:2017-09-14 02:37:14
【问题描述】:

我有一个多租户架构的 MVC 应用程序。其中,有一些全局变量(每个租户的所有用户通用),一些特定于登录用户。 此外,还有一些特定租户的所有用户通用的设置。

我正在存储和检索 Global 和 Session 变量,如下所述。

  • 特定于登录用户 - HttpContext.Current.Session["sessionVariableName]。这些变量在用户登录时加载。
  • 全局变量 - HttpContext.Current.Application["applicationVariableName"]。这些变量在应用启动时加载到 Global.asax。

现在我有一个问题,如何加载特定于租户的变量。在哪种情况下我需要加载变量?我不想在应用程序启动时加载所有租户特定的变量,因为许多租户可能没有使用该应用程序。此外,在每个用户登录时检查和加载租户特定设置可能会产生开销。 最好的方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc multi-tenant


    【解决方案1】:

    在你的情况下,我想建议以下方法

    1. 创建一个名为“TenantSettings”的表,其中包含租户特定设置
    2. 创建一个名为“UserSettings”的表,其中包含所有用户特定的设置
    3. 在登录后识别租户,然后当您第一次获取租户设置时,您会将 TenantSettings 存储到缓存中[通过 pub-sub 进行分布式或内存同步]
    4. 另外,在用户登录后,获取 UserSettings 并将其放入缓存中 [与 3 中相同]
    5. 不要使用应用程序内存,因为缓存可能会被意外污染,并且不会随着负载扩展

    的数据库实体详细信息

    1.租户设置 以下可以是 TenantSettings 的列

    • 租户 ID
    • 设置 ID
    • 设置值
    • AuditFields,如 CreatedBy、CreatedOn、IsActive、UpdatedBy...

    2。用户设置

    • 用户ID
    • 租户 ID
    • 设置 ID
    • 设置值
    • 与上述类似的审核字段

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2013-06-05
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多