我想为每个用户使用5个会话变量。我知道如果我使用inproc模式存储这些变量,它肯定会影响性能,因为我有共享服务器。会话变量是否太多不好的做法?
但我使用SQL Server来存储我的会话变量。所以它会在性能上超载。
因为如果我在会话中存储变量,我的连接将会非常简单,再加上一次打到db就会被保存。
我想为每个用户使用5个会话变量。我知道如果我使用inproc模式存储这些变量,它肯定会影响性能,因为我有共享服务器。会话变量是否太多不好的做法?
但我使用SQL Server来存储我的会话变量。所以它会在性能上超载。
因为如果我在会话中存储变量,我的连接将会非常简单,再加上一次打到db就会被保存。
为什么不只一个?你说你正在使用的用户,每个用户都有一个唯一的ID我想......我的意见是只使用一个会议像这个唯一的ID。 (也许你允许更多帐户与该电子邮件或同一名称的多帐户,但该ID肯定是独一无二的!)。
我在做什么..每个会话变量都存储用户不同的信息,如 姓名,生日,EMI,ProfilePic,电子邮件..在这种情况下如何将这些信息存储在一个会话变量中 – abc
您可以创建一个对象并保存到会话变量。另外,请看看msdn上的ExpandoObject。 – JoshYates1980
我想说“是”,但这取决于你想达到的目标。我已经阅读了很多有关这个主题的有才华的开发人员的博客,因为我已经继承了大量会话的旧应用程序。
我使用唯一的ID(guid)为每个用户创建一个会话,该ID用作我的MemoryCache的密钥。 guid是在用户通过身份验证后创建的。如果空闲,会话默认在15分钟后过期,缓存在20分钟后过期。续订是为活跃用户处理的。缓存的一个好处是它迫使开发人员创建干净的代码(检查和平衡),而许多会话可以帮助贡献意大利面代码。
在我的BaseController中,我有一个方法使用guid获取为该用户保存在缓存中的所有信息。下面是一个示例,而不是所有的代码:
的LoginController(片断)
userCache.UniqueID = GuidUtil.GenerateGuid()
userCache.UserSiteCount = userSitesList.Count
userCache.UserID = user.UserID
userCache.UserName = user.UserName
_registeredUserService.AddUserToCache(userCache)
Session("UserKey") = userCache.UniqueID
BaseController
Private Function CheckAuthentication() As Boolean
If Not Session("UserKey") Is Nothing Then
Return True
End If
Return False
End Function
Private Function GetUserKey() As String
Return Session("UserKey").ToString()
End Function
Protected ReadOnly Property GetUserInfo() As UserCache
Get
Return If(CheckAuthentication(), LoadUserInfo(), Nothing)
End Get
End Property
Private Function LoadUserInfo() As UserCache
Dim cachedUser = _registeredUserService.GetUserFromCache(GetUserKey())
Return cachedUser
End Function
AllOtherControllers(片断)
Dim viewModel As New ChooseSiteViewModel
viewModel.UserSites = _registeredUserService.GetUserSites(GetUserInfo.UserID)
Return View(viewModel)
ServiceLevel
Function GetUserFromCache(ByVal uniqueKey As String) As UserCache _
Implements IRegisteredUserService.GetUserFromCache
Dim userKey = String.Concat(CacheKeys.User.Main, uniqueKey)
Return _cacheService.[Get](Of UserCache)(userKey)
End Function
我强烈建议不要存储实体的网络会话。 – yonexbat