gpt4 book ai didi

asp.net-mvc - 在 Asp.Net MVC 网站中维护状态

转载 作者:行者123 更新时间:2023-12-04 05:11:58 25 4
gpt4 key购买 nike

我目前正在设计一个基于 MVC 的新网站,我想知道管理状态的正确方法是什么。
状态应该包含 userId 和用户信息的一些结构,并且应该在用户登录时的整个 session 期间保持(跨 http 请求)

重要标准:
1) 支持可扩展性
2) 性能

简单的方法是使用 Session 对象,但它不支持可伸缩性。如果 session 期间不同的请求通过不同的 IIS 服务器,则不会保留 session 。尽管我听说过负载平衡工具可以通过同一台机器路由单个 session 的所有请求,但我不确定依赖它是否是一个好习惯(不是吗?)

我读过的另一个选项是将状态数据保存在运行 RAM 数据库的特殊状态服务器中(如 Linux 的 Cassandra 或 Windows 的 Redis)。但在我的这个发展阶段,这似乎是一种矫枉过正。

您还有其他建议吗?
我现在想从一些简单的事情开始,但让设计为将来更高级的解决方案做好准备。

任何最佳实践或代码/设计建议将不胜感激。

谢谢,
艾迪。

最佳答案

(1) 使用 Sql Server存储 session 状态

(2) 使用 Memcached as a Session State Provider

(3) 使用外部缓存提供程序上的缓存制定您自己的解决方案:考虑使用类似 ServiceStack Caching Framework 的内容.使用它,您可以使用 Redis、Memcached、Azure 或 AWS 来处理缓存。

接下来,创建一个 KeyFactory 来处理特定项目的 key 生成。项目键将包括 UserId(您将始终拥有来自 FormsAuthentication UserId(假设您使用的是 FormsAuthentication )。然后将用户的任何 session 数据存储在缓存中。使用这种方法,您将使用缓存的 Session ,并且缓存可以跨多个服务器共享。

注意:当用户开始新 session 时,您可以采用不同的方法来清除用户的数据。可能的方法包括:

  • 在 cacheKey 中包含用户的 session 开始日期时间,并在条目不再新鲜时自动过期
  • 清除用户开始新 session 时的所有潜在条目
  • 关于asp.net-mvc - 在 Asp.Net MVC 网站中维护状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820509/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com