.NETエンタープライズWebアプリケーション 開発技術大全
― エンタープライズWebアプリ開発に必要な知識と設計セオリー ―


Webアプリケーションの状態管理

マイクロソフト コンサルティング本部 赤間 信幸
2004/05/20

Page1 Page2 Page3 Page4

.NETエンタープライズWebアプリケーション 開発技術大全

 本記事は、日経BPソフトプレス/マイクロソフトプレスが発行している『.NETエンタープライズWebアプリケーション開発技術大全 Vol.3 ASP.NET 応用編』の「第2章 Webアプリケーションの状態管理」から「2.1 状態管理手法」「2.2 ViewStateオブジェクト」を、同社の許可を得てその内容を転載したものです。

 同書はマイクロソフトのコンサルタントが執筆した.NETシステム設計/構築のための技術解説書で、全5巻で構成されています。

 
本シリーズでは、Webアプリケーション構築の実践的テクニックを網羅しつつ、ASP.NETなどのフレームワークにおける内部処理の詳細までが多数の図を交えて丁寧に解説されています。

 また、
実際の開発現場を熟知したコンサルタントが書き下ろしたというだけあって、通り一遍な解説ではなく、どれも「使える」内容となっています。

 応用編である第3巻(本記事はこの巻からの転載)では、Webシステムのスケーラビリティを高めるためのクラスタリングと状態管理の手法が解説されています。多くの書籍にあるような、機能を羅列するだけの解説ではなく、開発現場ではどういったミスや間違いが多く、実運用に耐えるシステムを作るためにはどこに注意が必要で、具体的にどうのように設計/コーディングすればよいかが明記されています。

  また後半では、IIS上に配置されたASP.NETページが、ASP.NETランタイムによって処理されるプロセスが克明に解説されています。ASP.NETの真の性能を引き出すには不可欠な情報といえます。


 本シリーズは、全5巻のうち、第1巻から第3巻までがすでに発売されています(第4巻と第5巻は、2004年秋以降の発行が予定されています)。Insider.NETでは、全6回に渡り、.NET開発者にとって特に重要だと思われる個所をこの3巻より抜粋して掲載していく予定です。なお、書籍の詳細については本記事の最後に表記しています。

ご注意:本記事は、前挙の書籍の内容を改訂することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

 Webアプリケーションでは、ユーザごと、あるいはアプリケーション全体にまたがって、何らかのデータやオブジェクトを、処理状態として保存したり共有したりする必要がある。このようなデータ管理は、一般に状態管理と呼ばれる。

 状態管理には様々なものがあり、代表的なものとしてはセッション状態やアプリケーション状態といったものがある。またデータキャッシュといったものも、広義の意味では状態管理に含まれる。実際のWebアプリケーション開発では、このような様々な状態管理手法をうまく組み合わせて使いこなす必要がある。本章では様々な状態管理手法について、利用用途や開発上の注意点、トレードオフなどを整理する。

1 状態管理の手法

 ある1つのWebアプリケーションを複数のユーザが利用する場合について考えてみると、管理しなければならない状態は以下の2種類に大別できる(図1)。

・ユーザ状態
  ・ 個々のユーザごとに管理しなければならない情報
 
・アプリケーション状態
  ・ すべてのユーザにまたがって、アプリケーション全体で共有管理しなければならない情報
 
図1 Webアプリケーションで管理すべき2つの状態

 ASP.NETを用いてWebアプリケーションを開発する場合、このようなユーザ状態やアプリケーション状態の管理には、表1のような様々な選択肢が存在する。

  ブラウザ側で保存 Web サーバ側で保存
ユーザ状態管理 ・ViewState オブジェクト
・クッキー
・クエリー文字列
・Session オブジェクト
・HttpContext オブジェクト
・SQL Server カスタムDB
アプリケーション状態管理 なし ・Application オブジェクト
・static 変数
・SQL Server カスタムDB
・Cache オブジェクト
表1 状態管理のいくつかの方法

 これら各種の状態管理手法を正しく理解しておくことは、Webアプリケーションを効率的に開発するために非常に重要である。本章ではこれらの各手法について、典型的な利用方法とその注意点について網羅的に解説する。解説は以下の順番で行う。

・ユーザ状態管理
  ・ ViewStateオブジェクト
  ・ Sessionオブジェクト
  ・ クッキーおよびクエリ文字列
  ・ SQL Server上のカスタムデータベースの利用およびHttpContextオブジェクト
 
・アプリケーション状態管理
  ・ Applicationオブジェクトおよびstatic(Shared)変数
  ・ SQL Server上のカスタムデータベースの利用
  ・ Cacheオブジェクト(データキャッシュ)

 まずはユーザ状態の管理手法から解説していこう。

 

 INDEX
  .NETエンタープライズWebアプリケーション開発技術大全
  Webアプリケーションの状態管理
  1.状態管理の手法
    2.ViewStateとSessionの使い分け/データサイズの最適化
    3.Webファームを利用する場合の暗号化鍵の設定
    4.ViewStateのセキュリティ
 
インデックス・ページヘ  「.NETエンタープライズWebアプリケーション開発技術大全」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間