zoukankan      html  css  js  c++  java
  • [ASP.NET]状态管理

            HTTP是一种无状态的协议,因此在不同请求之间无法共享状态,然而维护不同请求之间的状态是很有用的。比如购物网站中购物车的实现就要依赖这种状态实现。

           应用程序状态管理

    想必很多人对下面的代码段很熟悉:

    Application.Lock();
    Application["MyGlobalCounter"] =
    (int)Application["MyGlobalCounter"] + 1;
    Application.UnLock();
    Application是HttpApplicationState类的一个实例。
    它存在于一个Web应用程序的整个生命周期中。
     
    会话状态
    在浏览器中第一次请求一个应用程序时,服务器会开启一个会话,
    以后的请求都会共享这些会话状态。
    这批请求的第一个响应会返回一个SessionID,
    以后都会用这个SessionID做为Token访问这次会话的状态。
    SessionID的传递方式有两种:
    1)Cookie
    2)不使用Cookie,而是被插入到URL中传递到服务端。
    ASP.NET 支持三种会话状态模式:InProc,StateServer,SQLServer.
      优点 缺点
    InProc 1)从aspnet_wp.exe中直接读取,因此性能最好。

    1)aspnet_wp.exe可能会由于多种原因,(比如虚拟目录中的web.config,Bin目录或者内存使用量达到最大里了)被回收。因此具有相当大的不稳定性。
    2)不适用于Web Garden部署,更不适用于Web Farm部署。
    StateServer 1)这种模式下的会话变量存储在一个Windows服务中,独立于IIS,因此不会受IIS工作进程回收机制的影响。
    2)适用于Web Garden和Web Farm两种部署模式。
    1)存在跨进程或跨机器(因为可以把这个Windows服务部署在另一个服务器上)问题,性能较低。
    SQLServer 除拥有StateServer模式的1),2)优点外,还有以下优点:
    3)更持久
    1)性能更低,因为要读SQL Server,反序列等等。

    参考资料:http://msdn.microsoft.com/en-us/library/87069683(VS.71).aspx

  • 相关阅读:
    redis 切换大量的缓存数据
    springboot jdbctemplate 常用的语法
    Spring Boot 整合 jdbctemplate 多数据源
    Spring Boot 整合 jdbctemplate 单数据源
    IDEA(Eclipse) 常用的快捷键(快速开发)
    bigdecimal 类型的变量怎么相互加减乘除
    在js和java中判断手机访问的是ios系统还是android系统
    fiddler抓web请求
    sign和token设计
    移动端自动化测试-Windows-Android-Appium环境搭建
  • 原文地址:https://www.cnblogs.com/fuhongwei041/p/1700072.html
Copyright © 2011-2022 走看看