[ASP.NET]状態管理

1605 ワード

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.com fig、Binディレクトリまたはメモリの使用量が最大になるなど、様々な理由で回収されるかもしれない.したがって、かなり大きな不安定性がある.2)Web Garden展開には適用されず、Web Farm展開にも適用されない.
StteServer
1)このようなモードのセッション変数はWindowsサービスに格納され、IISと独立していますので、IIS作業プロセス回収メカニズムの影響を受けません.2)Web GardenとWeb Farmの2つの展開モードに適用する.
1)プロセスをまたいだり、マシンをまたぐ(このWindowsサービスを別のサーバーに配置できるので)という問題があり、性能が低い.
SQLServer
StteServerモードの1)、2)の利点があるほか、以下の利点があります.
1)性能が低い.SQL Server、逆シーケンスなどを読むため.
 
参考資料:http://msdn.microsoft.com/en-us/library/87069683(VSL.71).aspx