gpt4 book ai didi

c# - "session per request"模式是否利用缓存? ("Session per session"或 "Session per request")

转载 作者:行者123 更新时间:2023-11-30 17:09:48 25 4
gpt4 key购买 nike

这几天我在 Web 应用程序中从头开始构建一个新应用程序。
(技术是 Asp.Net,我使用的 ORM 是 Entity Framework。如果重要的话)

我不确定广泛使用的模式 session per request 是否真的是一个好模式。
正如我所见,该模式的优点是缓存不会增加,直到数据库 session 崩溃\因为太大而效率低下。

但是每个请求一个新 session 是不是太多了?这意味着每次服务器调用都会重置缓存,即使是像自动完成这样简单的 ajax 请求也有一个全新的缓存,实际上对于每次击键都会重置缓存。

您在一个请求中查询相同对象实体行的机会很小。

Session per session 不是更好的模式吗?兼具优点意义

  1. 缓存不会永远增长。
  2. 缓存居然可以用...

那么... 为什么session per request 被广泛使用而session per session 却没有?


说明:

  1. 当我编写 ORM session 时,它适用于 NHibernate 的 session EntityFramework 的 DbContext
  2. 我的意思是在每次请求时刷新-提交-保存 session \dbcontext 的更改。

最佳答案

Session per request 模式对于与 ORM 一起使用更加自然和稳健。它获得脏实体的机会更小,并且具有更可预测的资源管理。

如果我没看错,你的意思是 Session 下的 DbContext 实例,而不是 Session Per Session 只能在没有数据修改的应用程序中使用,否则当其他请求执行数据修改时,你会得到一个请求提交的意外数据。此外,我不确定 Entity Framework 上下文是否是线程安全的 - 而处理请求是多线程的。

我不太确定,但我认为 Entity Framework 没有像您预期的那样广泛使用缓存(== 身份映射)。在选择实体集时,即使所有数据都在缓存中,它也会查询数据库 - 它只能避免构建新实体,而是使用身份映射中的现有实体。

对于缓存,还有其他更好的解决方案。

关于c# - "session per request"模式是否利用缓存? ("Session per session"或 "Session per request"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554213/

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