我正在使用MVC开发一个多租户应用程序。在浏览器中启动应用程序后,我找到TenantId
并分配到static
属性,以便在整个应用程序中进行维护,例如
public static int TenantId
{
get { return _tenantId; }
set
{
_tenantId = value;
string path = HttpContext.Current.Request.ApplicationPath;
TenantConfigurationModel tenantConfiguration = HospitalFacade.GetTenantIdByUrl(path);
if (tenantConfiguration != null)
{
_tenantId = tenantConfiguration.TenantId;
}
}
}
但我的合作开发者建议会话
在整个应用程序中维护单个道具价值的最佳方法是什么?
使用静态属性有什么优点/缺点吗?
答案 0 :(得分:1)
会话:会话适用于特定用户。这意味着如果2个用户访问您的网站,那么他们两个将拥有不同的会话。每个会话都有自己的与用户相关的值。
简而言之,如果您尝试在整个应用程序中提供的值取决于用户,则使用会话。
检查其他问题的答案:Static fields vs Session variables
不,使用静态变量不是要走的路:
答案 1 :(得分:1)
使用static
属性存在许多缺点,而且没有那么多优点(从Web应用程序的角度来看)。
您的问题有点令人困惑,您说它是一个多租户网站,但您希望在所有用户之间共享租赁ID。无论如何,如果目标是在站点上的每个可能用户之间共享数据,那么考虑将值存储在数据库中,或者如果速度是一个问题,则需要一些持久的缓存解决方案,如Redis