在 WCF 服务内存中保留列表的最佳方法

本文关键字:列表 最佳 方法 保留 WCF 服务 内存 | 更新日期: 2023-09-27 18:32:12

我有一个带有登录系统的Web应用程序,它使用wcf服务。用户输入他的用户名/密码登录,然后我们为用户创建一个唯一的令牌,然后将令牌保存在浏览器cookie中以保持用户在线。每次用户发送请求时,他的令牌都会随请求一起发送。我们将所有令牌保存在服务内存中的基本List中。现在,我问自己这是否是最好的方法。IIS 会回收我的应用内存吗?我已经阅读了有关在 wcf 服务中保留列表的问题,看起来我应该避免在内存中使用列表。最好的替代方案是什么?

谢谢

在 WCF 服务内存中保留列表的最佳方法

是的,如果回收了容纳 WCF 服务的应用程序池,您将丢失缓存在内存中的所有内容,因此您还需要一个持久性回退(例如 RDBMS 或 NoSql 数据库),该回退将在恢复时重新加载。

您不会说您希望与令牌一起存储的内容。如果只是字符串标记,那么HashSet<string>可能是最好的,如果有其他数据,那么ConcurrentDictionary<string, Whatever>效果最好。

假设当用户登录/注销您的服务时,令牌集合将需要改变,这意味着需要考虑并发问题,(您已经有了ConcurrentDictionary

您还需要考虑过时令牌的影响 - 您需要删除/删除未使用的令牌(内存和数据库)。