• [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

  • 相关阅读:
    c++ 左值和右值
    C++的顶层const和底层const的理解
    TCP/IP模型中的网络层
    有关TCP/IP模型中的网络接入层
    计算机网络协议与IPv4地址
    浅析计算机网络
    海思Android开发平台如何自定义update.zip内容
    Android平台RTL蓝牙适配偶现打不开问题调试笔记
    Android的SoundPool
    Android开发之IntentService
  • 原文地址:https://www.cnblogs.com/fuhongwei041/p/1700072.html
Copyright © 2020-2023  润新知