Rob*_*Rob 6 asp.net session multithreading
无法找到明确的答案,当建立到ASP.NET MVC2应用程序的客户端会话时,我假设来自线程池的特定线程处理该请求.同一个线程是否始终处理该会话的所有后续请求?所以从理论上讲,如果会话ID被搞砸了并且选择了错误的线程,那么任何会话级数据都会丢失?谢谢
不。每个请求都可以由不同的线程处理。这意味着页面上的各种资源可以由不同的线程处理。或者它们可能在同一台上处理。由工作进程和 iis 决定是否值得创建一个新线程,还是最好等待一个线程可用。
页面将由一个线程呈现,然后图像、样式表和 JavaScript 可以在同一线程或其他线程上处理。这对于 ASP.NET 和 Web 编程的无状态本质来说是基础。它允许您做的是在不同服务器甚至不同域之间对所有请求进行负载平衡。
这给我们带来了有关会话状态的问题。您不应该在请求之间丢失会话 ID。如果你是这样,那就有严重的问题了。或者您可能处于网络场/集群情况,其中一个请求发送到一台服务器,而下一个请求通过某种负载平衡路由到另一台服务器。
在负载平衡的场景中,您必须有一些方法来保存会话状态。两种最常见的方法是保存到数据库和分布式缓存。后者是我更喜欢的方法,因为会话数据本质上是临时的,不属于持久数据库。
| 归档时间: |
|
| 查看次数: |
2177 次 |
| 最近记录: |