ASP.NETの状態管理方式
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>ASP.NET]]
* 目次 [#z629ff52]
#contents
*概要 [#ne6d30eb]
*はじめに [#efa3a83c]
**Webシステムの状態管理方式 [#t8b2d188]
2層C/Sシステムでは、クライアント側プログラムがDBに直接接...
表1:3層C/SシステムやWebシステムの状態管理方式
|項番|状態管理方式|説明|h
|1|サーバ ステートレス|サーバ側の状態保持領域を利用しな...
|2|サーバ ステートフル|サーバ側の状態保持領域を利用する。|
特にWebシステムの「状態管理方式」は、クライアント側で状態...
-ASP.NETアプリケーションの一般的な「状態管理方式」
-ASP.NETアプリケーションの開発で使用可能な「状態管理技術」
--実装上の考慮点
--性能の考慮点
-拡張性・信頼性を確保するための、負荷分散(冗長化)構成を...
特に、「状態管理方式」の選択や「状態管理技術」の使い方を...
*Webアプリケーションの状態管理方式 [#g8bb301d]
**サーバ ステートレスな状態管理方式 [#n0fdac0c]
「サーバ ステートレスな状態管理方式」とはWeb・APサーバに...
#ref(1_ServerStatelessStateManagementSystem.png,left,nowr...
表:サーバ ステートレスな状態管理方式の処理概要
|順番|>|CENTER:処理の実装箇所|処理|h
|~|クライアント / サーバ|モジュール|~|h
|1|クライアント側|wwwブラウザ|「サーバ処理1」に対して「...
|2|サーバ側|サーバ処理1|「ページ1」のHTMLをクライアン...
|3|クライアント側|wwwブラウザ&br;ページ1|「Form」や「ク...
|4|サーバ側|サーバ処理2,3|「サーバ処理2」 ⇒ 「サーバ...
**サーバ ステートフルな状態管理方式 [#zc19500c]
「サーバ ステートフルな状態管理方式」とはWeb・APサーバに...
#ref(2_ServerStatefulStateManagementSystem.png,left,nowra...
この方式では、Web・APサーバ上のメモリ領域に状態を保持する...
**ASP.NETにおける状態管理技術 [#r11f795a]
以下の表に、
-サーバ ステートレスな状態管理方式
-サーバ ステートフルな状態管理方式
で使用できるASP.NETにおける状態管理技術についてまとめた。
表:ASP.NETにおける状態管理技術の説明
|項番|状態管理技術|説明|h
|1|Formデータ|HTTPのメッセージ ボディを使用する。送信時...
|2|[[ViewState>ASP.NET ViewState]]|Hiddenを仕様した状態...
|3|Query string|HTTPのリクエストのメッセージ ヘッダーを...
|4|Cookie|HTTPのメッセージ ヘッダーを使用する。|
|5|Server.Transfer+HTTP Context領域|Server.Transfer処理...
|6|[[Session>ASP.NET Session]]|ASP.NETの組込みオブジェク...
|7|Application|ASP.NETの組込みオブジェクト。アプリケーシ...
|8|静的変数|ASP.NETプログラムのグローバル変数。|
|9|Cache|ASP.NETの組込みオブジェクト。キャッシュ処理用に...
表:ASP.NETにおける状態管理技術の特徴
|項番|CENTER:状態管理技術|>|>|>|CENTER:区分|h
|~|~|ASP.NET独自|Webアプリケーション一般|ステートレス|ス...
|1|Formデータ|-|○|○|-|
|2|[[ViewState>ASP.NET ViewState]]|○|-|○|-|
|3|Query string|-|○|○|-|
|4|Cookie|-|○|○|-|
|5|Server.Transfer+HTTP Context領域|-|○|○|-|
|6|[[Session>ASP.NET Session]]|○|-|-|○|
|7|Application|○|-|-|○|
|8|静的変数|-|○|-|○|
|9|Cache|○|-|-|○|
*ASP.NETの特徴 [#a5f26a81]
ASP.NETが、今までのWeb開発技術から大きく進化した点に、VB6...
**ポストバックとは [#wbe1f45c]
「同一の画面に対してポストバックする方式」とは、自身を生...
#ref(3_PostbackOfASPdotNET.png,left,nowrap,ASP.NETのポス...
ASP.NETでは、画面上でボタンを押すと自分の画面に対して「Fo...
**[[ViewState>ASP.NET ViewState]]とは [#pf52f6da]
ASP.NET独自のサーバ ステートレスな状態管理技術として「[[V...
-「[[ViewState>ASP.NET ViewState]]」の実装~
初めに、「[[ViewState>ASP.NET ViewState]]」がどの様な技術...
「[[ViewState>ASP.NET ViewState]]」は、
++レスポンス時に「[[ViewState>ASP.NET ViewState]]」に設定...
base64エンコードして、name属性="__VIEWSTATE"、id属性="__V...
++リクエスト時は、逆の操作でname属性="__VIEWSTATE"、id属...
base64デコードし、ハッシュ値を検証した後にデータをデシリ...
という実装になっている。
ハッシュ値の付与や、base64エンコードを除けば 、オブジェク...
-「[[ViewState>ASP.NET ViewState]]」の利用目的~
「[[ViewState>ASP.NET ViewState]]」の利用目的には、次の2...
--イベント ドリブンのプログラミング モデルを可能にしたASP...
--同一画面内でのみ機能する(画面間を跨った利用は不可能)...
次項では、「[[ViewState>ASP.NET ViewState]]」の利用目的の...
***[[ViewState>ASP.NET ViewState]]を使用したアプリケーシ...
「[[ViewState>ASP.NET ViewState]]」には、イベント ドリブ...
-Webコントロールの情報を、サーバ側で復元する。通常のテキ...
-クライアント側で何が行われたのかをサーバ側で自動解析し、...
といった用途である。
#ref(4_ApplicationFoundationProcessingUsingTheViewState.p...
***[[ViewState>ASP.NET ViewState]]を使用したサーバ ステー...
前項に示した「[[ViewState>ASP.NET ViewState]]」の使用方法...
Webフォームのメンバ変数は、Windowsフォーム内のメンバ変数...
#ref(5_MechanismForHoldingTheInformationInTheWebForm.png,...
また、サーバ ステートフルな状態管理方式を採用している場合...
***[[ViewState>ASP.NET ViewState]]でできること。 [#j831db...
以下の様なことができるもよう。
-独自の値を追加する、Base64デコードして値を確認する。
-[[EnableViewState>https://msdn.microsoft.com/ja-jp/libra...
-なお、暗号化には署名と暗号化があり、双方ともON/OFFが可能...
--[[EnableViewStateMac>https://msdn.microsoft.com/ja-jp/l...
--[[ViewStateEncryptionMode>https://msdn.microsoft.com/ja...
-参考
--iPentec
---[C#] ViewStateに独自の値を保存する~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[C#] ViewStateの値の文字列をデコードして解析する~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[C#] ASP.NETのViewStateを無効にする~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[C#] ViewStateModeの違いによる動作の違い~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[ASP.NET] ASP.NETのViewState値の文字列の暗号化を無効に...
https://www.ipentec.com/document/document.aspx?page=asp-n...
**[[ViewState>ASP.NET ViewState]]の使用上の注意点 [#le783...
***アプリケーション基盤処理の注意点(事例) [#f7675d3a]
「[[ViewState>ASP.NET ViewState]]」を利用する際、最も注意...
繰り返すが、「[[ViewState>ASP.NET ViewState]]」は、イベン...
このため、場合によっては無駄なHTMLデータが大量に出力され...
例えば、読み取り専用のグリッド ビュー コントロールに表示...
ある事例では、1MBのHTMLテーブル データに対し1MBの「[[Vi...
#ref(6_UnnecessaryViewStateDataExpandDataAndIncreaseNetwo...
この事例のグリッド ビュー コントロールは読み取り専用であ...
この事例での適切な対策としては、グリッド ビュー コントロ...
***[[ViewState>ASP.NET ViewState]]を使用してデータを保持...
「[[ViewState>ASP.NET ViewState]]」を、Webフォーム内の情...
ある事例では、ドロップ ダウン リスト コントロールなどにデ...
この事例での適切な対策としては、DB上のデータを再度取得し...
***[[ViewState>ASP.NET ViewState]]の使用上の注意点まとめ ...
本項では、「[[ViewState>ASP.NET ViewState]]」の使用上の注...
「[[ViewState>ASP.NET ViewState]]」のデータ自体は、ただの...
データを「[[ViewState>ASP.NET ViewState]]」に保持するより...
特に、ADO.NETのDataSetオブジェクトやDataTableオブジェクト...
-GridView、Repeater、ListBox
-CheckBoxList、Radiobuttonlist
-DropDownList
また、
-Webコントロールの情報を、サーバ側で復元する。
-クライアント側で何が行われたのかをサーバ側で自動解析し、
Webコントロールのchangeイベント ハンドラなどに自動的に処...
などの処理がそもそも不要なWebコントロールに対しては、「[[...
*状態管理技術の特徴 [#zbd6e242]
ココでは、状態管理技術の特徴を解説する。
**サーバ ステートレスな状態管理技術の共通的な特徴 [#md584...
以下、サーバ ステートレスな状態管理技術の共通的な特徴を簡...
-サーバにデータを保持しないことによるメリット~
サーバ ステートレスな状態管理技術は、サーバにデータを保持...
--サーバ リソースの消費量が少なく、拡張性に優れる。
--サーバ リソース(メモリ)の領域計算が容易である。
--サーバ リソース(メモリ)の解放タイミング(タイムアウト...
--拡張性・信頼性を確保するための、負荷分散(冗長化)構成...
-クライアントにデータがダウンロードされることによるデメリ...
サーバ ステートレスな状態管理技術は、クライアントにデータ...
--ネットワーク トラフィックが問題になる。
--持ち回りデータの改ざんが可能なため、セキュリティを確保...
-プログラミングの難易度~
サーバ ステートレスな状態管理技術を使用した場合のプログラ...
--必要なデータの引継ぎ処理に関する設計・実装が多くなる。
--「Server.Transfer処理とHTTP Context領域の組合せ」などの...
**サーバ ステートフルな状態管理技術の共通的な特徴 [#n364e...
以下、サーバ ステートフルな状態管理技術の共通的な特徴を簡...
-クライアントにデータがダウンロードされないことによるメリ...
サーバ ステートフルな状態管理技術は、クライアントにデータ...
--ネットワーク トラフィックを軽減できる。
--データを持ち回る必要がなく、改ざんのリスクが無いため、...
-サーバにデータを保持することによるデメリット~
サーバ ステートフルな状態管理技術は、サーバにデータを保持...
--サーバ リソースの消費量が多いため、拡張性に乏しい。
--サーバ リソース(メモリ)が枯渇しないように、領域計算が...
--サーバ リソース(メモリ)の解放タイミング(タイムアウト...
--拡張性・信頼性を確保するための、負荷分散(冗長化)構成...
-プログラミングの難易度~
サーバ ステートフルな状態管理技術を使用した場合のプログラ...
--必要なデータの引継ぎ処理に関する実装が少なくて済む。
--特殊な画面遷移に対応する必要がある場合、ユーザ プログラ...
**個別の「状態管理技術」の特徴 [#w23e807f]
ココでは、個別の「状態管理技術」の特徴を解説する。
***[[Session>ASP.NET Session]] [#p3907808]
サーバ ステートフルな状態管理技術なので、「[[サーバ ステ...
-長所~
--画面を跨って状態を管理する「状態管理技術」の中では最も...
--「Cookie」が利用できない環境でも、Cookie-less sessionを...
-短所~
--基本的には、シリアル化ができないオブジェクトも格納でき...
--以下の式により、[1台のWebサーバ上で使用される[[Session...
~
[ユーザ1人あたりが使用する[[Session>ASP.NET Session]]領...
= [1台のWebサーバ上で使用される[[Session>ASP.NET Sessio...
--メモリ使用量の許容量
---サーバの物理メモリの使用量としては90%以下であるが、32...
---ASP.NETの.NET Frameworkが使用できるメモリ量は、.NETの...
---このため、物理メモリ容量が大きいサーバでは、ASP.NETの...
---参考:MSDNライブラリ > .NET Frameworkクラス ライブラリ~
'> System.Web.Configuration.ProcessModelSection.ProcessMo...
http://msdn.microsoft.com/ja-jp/library/system.web.config...
***Application、静的変数 [#v3205753]
サーバ ステートフルな状態管理技術なので、「[[サーバ ステ...
-長所
--アプリケーションで共有されるデータを効率よく保存できる。
--採番テーブルの採番プール化などに役立つ。
-短所
--排他制御が必要になり、使い難い(再現性の低いバグを造り...
--ネットワーク負荷分散(冗長化)の構成ノードで共有する仕...
***Cache [#y5135a45]
サーバ ステートフルな状態管理技術なので、「[[サーバ ステ...
-長所
--キャッシングに必要なアプリケーション基盤機能が実装され...
--メモリ不足を自動検出して、データを破棄する機能を持つ。
--日付情報から自動的にデータを破棄する機能を持つ。
--ファイルの書き換えを自動検出し、自動的にデータを破棄す...
--他のオブジェクトの書き換えを自動検出し、自動的にデータ...
--性能や拡張性の向上を実現できる(「Cache」は、サーバ側の...
-短所
--排他制御が必要になり、使い難い(再現性の低いバグを造り...
--主に常数データに利用する。更新されるデータの保持には向...
--実装に熟練した技術者が必要になる。
---利用前に、nullチェックが必要。
---長所に列挙した機能自体を使いこなすことが難しい。
---キャッシュ データを構築する処理を1スレッドにして排他...
***[[ViewState>ASP.NET ViewState]] [#l865dbc6]
サーバ ステートレスな状態管理技術なので、「[[サーバ ステ...
-長所
---APIから非常に簡単に使用できる。
---ハッシュを使用した改ざん防止機能がある。
-短所
---ASP.NETは、「同一の画面に対してポストバックする方式」...
---また、ASP.NET2.0で、クロスページ ポストバックにより、W...
---デフォルトでは暗号化されず、base64エンコードをデコード...
---「[[ViewState>ASP.NET ViewState]]」に格納したデータはb...
***Cookie [#b20d90e9]
サーバ ステートレスな状態管理技術なので、「[[サーバ ステ...
このため、アプリケーション基盤技術である、
-ユーザ毎の「[[Session>ASP.NET Session]]」を識別するため...
-認証基盤が発行する「認証チケット」
などの情報を持ち廻る用途にも利用されている。
それ以外に、パーソナライズ状態の維持(ログインされていな...
*負荷分散(冗長化)構成と状態管理方式 [#kdae6e2b]
拡張性・信頼性を確保するために、負荷分散(冗長化)構成を...
#ref(7_ToEnsureTheScalabilityAndReliabilityOfWindowsServe...
クライアント リクエストは、NLB (あるいは負荷分散ハードウ...
この場合、クライアント リクエストを別のノードへ振り替えら...
バックエンド データ層は、MSCS 上にホストする。障害が発生...
ネットワーク負荷分散(冗長化)構成をとる場合、「状態管理...
ココでは、このサーバの構築・設定のポイントについて説明す...
**負荷分散(冗長化)構成と[[Session>ASP.NET Session]] [#n...
デフォルトの「[[Session>ASP.NET Session]]」の設定では、as...
これは、クライアント リクエストがノードを跨いだ場合、各ノ...
#ref(8_SessionOfTheCaseThatUsingNLB.png,left,nowrap,Windo...
***ステート サービス・ステート データベースの導入 [#y6d26...
「[[負荷分散(冗長化)構成とSession>#nab90cd2]]」に示した...
ステート サービス・ステート データベースの特徴については...
表ステート サービス・ステート データベースの特徴
|項番|状態管理技術|説明|h
|1|ステート サービス|Windowsサービスのプロセス上に「[[Se...
|2|ステート データベース|SQL Serverのストレージ上に「[[S...
ステート サービス・ステート データベースを導入した場合、...
#ref(9_SessionOfTheCaseThatIntroducingStateServiceAndStat...
***ステート サービス・ステート データベースの導入と、信頼...
ステート サービス・ステート データベースを利用すると、ネ...
また、あるノードで障害が発生して、ネットワーク負荷分散(...
これにより、Webアプリケーションの信頼性が向上する 。
#ref(10_SeparateTheConstituteNodeOfLoadBalancingInTheEven...
ただし、ネットワーク負荷分散(冗長化)構成で、ステート サ...
上記の施策で「単一障害点」を回避できるが、「単一障害点」...
このような場合は、下記の折衷案を検討するべきである。
-ネットワーク負荷分散(冗長化)の構成を、同一クライアント...
-「単一障害点」であるステート サービス・ステート データベ...
-サーバ ステートレスな設計に変更し、ネットワーク負荷分散...
補足:障害発生時の「[[Session>ASP.NET Session]]」の引継ぎ...
**負荷分散(冗長化)構成とデータの暗号化・検証 [#v0f39ab2]
ステート サービス・ステート データベースに保存される「[[S...
このため、ネットワーク負荷分散(冗長化)構成を組み、以下...
-ネットワーク負荷分散(冗長化)構成に於いて、同一クライア...
-あるノードで障害が発生して、ネットワーク負荷分散(冗長化...
[[machineKey>*.configの暗号化#efdd9542]]要素をネットワー...
#ref(添付用1/11_UnifiedTheMachineKeyElementInTheOverallC...
-MSDNライブラリ > .NET Frameworkの全般リファレンス > mach...
http://msdn.microsoft.com/ja-jp/library/w8h3skw9.aspx
*参考 [#l4285a81]
**[[ASP.NET Session]] [#zd583c2a]
**[[ASP.NET ViewState]] [#l9fb9736]
----
Tags: [[:.NET開発]], [[:ASP.NET]], [[:ASP.NET Web Forms]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>ASP.NET]]
* 目次 [#z629ff52]
#contents
*概要 [#ne6d30eb]
*はじめに [#efa3a83c]
**Webシステムの状態管理方式 [#t8b2d188]
2層C/Sシステムでは、クライアント側プログラムがDBに直接接...
表1:3層C/SシステムやWebシステムの状態管理方式
|項番|状態管理方式|説明|h
|1|サーバ ステートレス|サーバ側の状態保持領域を利用しな...
|2|サーバ ステートフル|サーバ側の状態保持領域を利用する。|
特にWebシステムの「状態管理方式」は、クライアント側で状態...
-ASP.NETアプリケーションの一般的な「状態管理方式」
-ASP.NETアプリケーションの開発で使用可能な「状態管理技術」
--実装上の考慮点
--性能の考慮点
-拡張性・信頼性を確保するための、負荷分散(冗長化)構成を...
特に、「状態管理方式」の選択や「状態管理技術」の使い方を...
*Webアプリケーションの状態管理方式 [#g8bb301d]
**サーバ ステートレスな状態管理方式 [#n0fdac0c]
「サーバ ステートレスな状態管理方式」とはWeb・APサーバに...
#ref(1_ServerStatelessStateManagementSystem.png,left,nowr...
表:サーバ ステートレスな状態管理方式の処理概要
|順番|>|CENTER:処理の実装箇所|処理|h
|~|クライアント / サーバ|モジュール|~|h
|1|クライアント側|wwwブラウザ|「サーバ処理1」に対して「...
|2|サーバ側|サーバ処理1|「ページ1」のHTMLをクライアン...
|3|クライアント側|wwwブラウザ&br;ページ1|「Form」や「ク...
|4|サーバ側|サーバ処理2,3|「サーバ処理2」 ⇒ 「サーバ...
**サーバ ステートフルな状態管理方式 [#zc19500c]
「サーバ ステートフルな状態管理方式」とはWeb・APサーバに...
#ref(2_ServerStatefulStateManagementSystem.png,left,nowra...
この方式では、Web・APサーバ上のメモリ領域に状態を保持する...
**ASP.NETにおける状態管理技術 [#r11f795a]
以下の表に、
-サーバ ステートレスな状態管理方式
-サーバ ステートフルな状態管理方式
で使用できるASP.NETにおける状態管理技術についてまとめた。
表:ASP.NETにおける状態管理技術の説明
|項番|状態管理技術|説明|h
|1|Formデータ|HTTPのメッセージ ボディを使用する。送信時...
|2|[[ViewState>ASP.NET ViewState]]|Hiddenを仕様した状態...
|3|Query string|HTTPのリクエストのメッセージ ヘッダーを...
|4|Cookie|HTTPのメッセージ ヘッダーを使用する。|
|5|Server.Transfer+HTTP Context領域|Server.Transfer処理...
|6|[[Session>ASP.NET Session]]|ASP.NETの組込みオブジェク...
|7|Application|ASP.NETの組込みオブジェクト。アプリケーシ...
|8|静的変数|ASP.NETプログラムのグローバル変数。|
|9|Cache|ASP.NETの組込みオブジェクト。キャッシュ処理用に...
表:ASP.NETにおける状態管理技術の特徴
|項番|CENTER:状態管理技術|>|>|>|CENTER:区分|h
|~|~|ASP.NET独自|Webアプリケーション一般|ステートレス|ス...
|1|Formデータ|-|○|○|-|
|2|[[ViewState>ASP.NET ViewState]]|○|-|○|-|
|3|Query string|-|○|○|-|
|4|Cookie|-|○|○|-|
|5|Server.Transfer+HTTP Context領域|-|○|○|-|
|6|[[Session>ASP.NET Session]]|○|-|-|○|
|7|Application|○|-|-|○|
|8|静的変数|-|○|-|○|
|9|Cache|○|-|-|○|
*ASP.NETの特徴 [#a5f26a81]
ASP.NETが、今までのWeb開発技術から大きく進化した点に、VB6...
**ポストバックとは [#wbe1f45c]
「同一の画面に対してポストバックする方式」とは、自身を生...
#ref(3_PostbackOfASPdotNET.png,left,nowrap,ASP.NETのポス...
ASP.NETでは、画面上でボタンを押すと自分の画面に対して「Fo...
**[[ViewState>ASP.NET ViewState]]とは [#pf52f6da]
ASP.NET独自のサーバ ステートレスな状態管理技術として「[[V...
-「[[ViewState>ASP.NET ViewState]]」の実装~
初めに、「[[ViewState>ASP.NET ViewState]]」がどの様な技術...
「[[ViewState>ASP.NET ViewState]]」は、
++レスポンス時に「[[ViewState>ASP.NET ViewState]]」に設定...
base64エンコードして、name属性="__VIEWSTATE"、id属性="__V...
++リクエスト時は、逆の操作でname属性="__VIEWSTATE"、id属...
base64デコードし、ハッシュ値を検証した後にデータをデシリ...
という実装になっている。
ハッシュ値の付与や、base64エンコードを除けば 、オブジェク...
-「[[ViewState>ASP.NET ViewState]]」の利用目的~
「[[ViewState>ASP.NET ViewState]]」の利用目的には、次の2...
--イベント ドリブンのプログラミング モデルを可能にしたASP...
--同一画面内でのみ機能する(画面間を跨った利用は不可能)...
次項では、「[[ViewState>ASP.NET ViewState]]」の利用目的の...
***[[ViewState>ASP.NET ViewState]]を使用したアプリケーシ...
「[[ViewState>ASP.NET ViewState]]」には、イベント ドリブ...
-Webコントロールの情報を、サーバ側で復元する。通常のテキ...
-クライアント側で何が行われたのかをサーバ側で自動解析し、...
といった用途である。
#ref(4_ApplicationFoundationProcessingUsingTheViewState.p...
***[[ViewState>ASP.NET ViewState]]を使用したサーバ ステー...
前項に示した「[[ViewState>ASP.NET ViewState]]」の使用方法...
Webフォームのメンバ変数は、Windowsフォーム内のメンバ変数...
#ref(5_MechanismForHoldingTheInformationInTheWebForm.png,...
また、サーバ ステートフルな状態管理方式を採用している場合...
***[[ViewState>ASP.NET ViewState]]でできること。 [#j831db...
以下の様なことができるもよう。
-独自の値を追加する、Base64デコードして値を確認する。
-[[EnableViewState>https://msdn.microsoft.com/ja-jp/libra...
-なお、暗号化には署名と暗号化があり、双方ともON/OFFが可能...
--[[EnableViewStateMac>https://msdn.microsoft.com/ja-jp/l...
--[[ViewStateEncryptionMode>https://msdn.microsoft.com/ja...
-参考
--iPentec
---[C#] ViewStateに独自の値を保存する~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[C#] ViewStateの値の文字列をデコードして解析する~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[C#] ASP.NETのViewStateを無効にする~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[C#] ViewStateModeの違いによる動作の違い~
https://www.ipentec.com/document/document.aspx?page=cshar...
---[ASP.NET] ASP.NETのViewState値の文字列の暗号化を無効に...
https://www.ipentec.com/document/document.aspx?page=asp-n...
**[[ViewState>ASP.NET ViewState]]の使用上の注意点 [#le783...
***アプリケーション基盤処理の注意点(事例) [#f7675d3a]
「[[ViewState>ASP.NET ViewState]]」を利用する際、最も注意...
繰り返すが、「[[ViewState>ASP.NET ViewState]]」は、イベン...
このため、場合によっては無駄なHTMLデータが大量に出力され...
例えば、読み取り専用のグリッド ビュー コントロールに表示...
ある事例では、1MBのHTMLテーブル データに対し1MBの「[[Vi...
#ref(6_UnnecessaryViewStateDataExpandDataAndIncreaseNetwo...
この事例のグリッド ビュー コントロールは読み取り専用であ...
この事例での適切な対策としては、グリッド ビュー コントロ...
***[[ViewState>ASP.NET ViewState]]を使用してデータを保持...
「[[ViewState>ASP.NET ViewState]]」を、Webフォーム内の情...
ある事例では、ドロップ ダウン リスト コントロールなどにデ...
この事例での適切な対策としては、DB上のデータを再度取得し...
***[[ViewState>ASP.NET ViewState]]の使用上の注意点まとめ ...
本項では、「[[ViewState>ASP.NET ViewState]]」の使用上の注...
「[[ViewState>ASP.NET ViewState]]」のデータ自体は、ただの...
データを「[[ViewState>ASP.NET ViewState]]」に保持するより...
特に、ADO.NETのDataSetオブジェクトやDataTableオブジェクト...
-GridView、Repeater、ListBox
-CheckBoxList、Radiobuttonlist
-DropDownList
また、
-Webコントロールの情報を、サーバ側で復元する。
-クライアント側で何が行われたのかをサーバ側で自動解析し、
Webコントロールのchangeイベント ハンドラなどに自動的に処...
などの処理がそもそも不要なWebコントロールに対しては、「[[...
*状態管理技術の特徴 [#zbd6e242]
ココでは、状態管理技術の特徴を解説する。
**サーバ ステートレスな状態管理技術の共通的な特徴 [#md584...
以下、サーバ ステートレスな状態管理技術の共通的な特徴を簡...
-サーバにデータを保持しないことによるメリット~
サーバ ステートレスな状態管理技術は、サーバにデータを保持...
--サーバ リソースの消費量が少なく、拡張性に優れる。
--サーバ リソース(メモリ)の領域計算が容易である。
--サーバ リソース(メモリ)の解放タイミング(タイムアウト...
--拡張性・信頼性を確保するための、負荷分散(冗長化)構成...
-クライアントにデータがダウンロードされることによるデメリ...
サーバ ステートレスな状態管理技術は、クライアントにデータ...
--ネットワーク トラフィックが問題になる。
--持ち回りデータの改ざんが可能なため、セキュリティを確保...
-プログラミングの難易度~
サーバ ステートレスな状態管理技術を使用した場合のプログラ...
--必要なデータの引継ぎ処理に関する設計・実装が多くなる。
--「Server.Transfer処理とHTTP Context領域の組合せ」などの...
**サーバ ステートフルな状態管理技術の共通的な特徴 [#n364e...
以下、サーバ ステートフルな状態管理技術の共通的な特徴を簡...
-クライアントにデータがダウンロードされないことによるメリ...
サーバ ステートフルな状態管理技術は、クライアントにデータ...
--ネットワーク トラフィックを軽減できる。
--データを持ち回る必要がなく、改ざんのリスクが無いため、...
-サーバにデータを保持することによるデメリット~
サーバ ステートフルな状態管理技術は、サーバにデータを保持...
--サーバ リソースの消費量が多いため、拡張性に乏しい。
--サーバ リソース(メモリ)が枯渇しないように、領域計算が...
--サーバ リソース(メモリ)の解放タイミング(タイムアウト...
--拡張性・信頼性を確保するための、負荷分散(冗長化)構成...
-プログラミングの難易度~
サーバ ステートフルな状態管理技術を使用した場合のプログラ...
--必要なデータの引継ぎ処理に関する実装が少なくて済む。
--特殊な画面遷移に対応する必要がある場合、ユーザ プログラ...
**個別の「状態管理技術」の特徴 [#w23e807f]
ココでは、個別の「状態管理技術」の特徴を解説する。
***[[Session>ASP.NET Session]] [#p3907808]
サーバ ステートフルな状態管理技術なので、「[[サーバ ステ...
-長所~
--画面を跨って状態を管理する「状態管理技術」の中では最も...
--「Cookie」が利用できない環境でも、Cookie-less sessionを...
-短所~
--基本的には、シリアル化ができないオブジェクトも格納でき...
--以下の式により、[1台のWebサーバ上で使用される[[Session...
~
[ユーザ1人あたりが使用する[[Session>ASP.NET Session]]領...
= [1台のWebサーバ上で使用される[[Session>ASP.NET Sessio...
--メモリ使用量の許容量
---サーバの物理メモリの使用量としては90%以下であるが、32...
---ASP.NETの.NET Frameworkが使用できるメモリ量は、.NETの...
---このため、物理メモリ容量が大きいサーバでは、ASP.NETの...
---参考:MSDNライブラリ > .NET Frameworkクラス ライブラリ~
'> System.Web.Configuration.ProcessModelSection.ProcessMo...
http://msdn.microsoft.com/ja-jp/library/system.web.config...
***Application、静的変数 [#v3205753]
サーバ ステートフルな状態管理技術なので、「[[サーバ ステ...
-長所
--アプリケーションで共有されるデータを効率よく保存できる。
--採番テーブルの採番プール化などに役立つ。
-短所
--排他制御が必要になり、使い難い(再現性の低いバグを造り...
--ネットワーク負荷分散(冗長化)の構成ノードで共有する仕...
***Cache [#y5135a45]
サーバ ステートフルな状態管理技術なので、「[[サーバ ステ...
-長所
--キャッシングに必要なアプリケーション基盤機能が実装され...
--メモリ不足を自動検出して、データを破棄する機能を持つ。
--日付情報から自動的にデータを破棄する機能を持つ。
--ファイルの書き換えを自動検出し、自動的にデータを破棄す...
--他のオブジェクトの書き換えを自動検出し、自動的にデータ...
--性能や拡張性の向上を実現できる(「Cache」は、サーバ側の...
-短所
--排他制御が必要になり、使い難い(再現性の低いバグを造り...
--主に常数データに利用する。更新されるデータの保持には向...
--実装に熟練した技術者が必要になる。
---利用前に、nullチェックが必要。
---長所に列挙した機能自体を使いこなすことが難しい。
---キャッシュ データを構築する処理を1スレッドにして排他...
***[[ViewState>ASP.NET ViewState]] [#l865dbc6]
サーバ ステートレスな状態管理技術なので、「[[サーバ ステ...
-長所
---APIから非常に簡単に使用できる。
---ハッシュを使用した改ざん防止機能がある。
-短所
---ASP.NETは、「同一の画面に対してポストバックする方式」...
---また、ASP.NET2.0で、クロスページ ポストバックにより、W...
---デフォルトでは暗号化されず、base64エンコードをデコード...
---「[[ViewState>ASP.NET ViewState]]」に格納したデータはb...
***Cookie [#b20d90e9]
サーバ ステートレスな状態管理技術なので、「[[サーバ ステ...
このため、アプリケーション基盤技術である、
-ユーザ毎の「[[Session>ASP.NET Session]]」を識別するため...
-認証基盤が発行する「認証チケット」
などの情報を持ち廻る用途にも利用されている。
それ以外に、パーソナライズ状態の維持(ログインされていな...
*負荷分散(冗長化)構成と状態管理方式 [#kdae6e2b]
拡張性・信頼性を確保するために、負荷分散(冗長化)構成を...
#ref(7_ToEnsureTheScalabilityAndReliabilityOfWindowsServe...
クライアント リクエストは、NLB (あるいは負荷分散ハードウ...
この場合、クライアント リクエストを別のノードへ振り替えら...
バックエンド データ層は、MSCS 上にホストする。障害が発生...
ネットワーク負荷分散(冗長化)構成をとる場合、「状態管理...
ココでは、このサーバの構築・設定のポイントについて説明す...
**負荷分散(冗長化)構成と[[Session>ASP.NET Session]] [#n...
デフォルトの「[[Session>ASP.NET Session]]」の設定では、as...
これは、クライアント リクエストがノードを跨いだ場合、各ノ...
#ref(8_SessionOfTheCaseThatUsingNLB.png,left,nowrap,Windo...
***ステート サービス・ステート データベースの導入 [#y6d26...
「[[負荷分散(冗長化)構成とSession>#nab90cd2]]」に示した...
ステート サービス・ステート データベースの特徴については...
表ステート サービス・ステート データベースの特徴
|項番|状態管理技術|説明|h
|1|ステート サービス|Windowsサービスのプロセス上に「[[Se...
|2|ステート データベース|SQL Serverのストレージ上に「[[S...
ステート サービス・ステート データベースを導入した場合、...
#ref(9_SessionOfTheCaseThatIntroducingStateServiceAndStat...
***ステート サービス・ステート データベースの導入と、信頼...
ステート サービス・ステート データベースを利用すると、ネ...
また、あるノードで障害が発生して、ネットワーク負荷分散(...
これにより、Webアプリケーションの信頼性が向上する 。
#ref(10_SeparateTheConstituteNodeOfLoadBalancingInTheEven...
ただし、ネットワーク負荷分散(冗長化)構成で、ステート サ...
上記の施策で「単一障害点」を回避できるが、「単一障害点」...
このような場合は、下記の折衷案を検討するべきである。
-ネットワーク負荷分散(冗長化)の構成を、同一クライアント...
-「単一障害点」であるステート サービス・ステート データベ...
-サーバ ステートレスな設計に変更し、ネットワーク負荷分散...
補足:障害発生時の「[[Session>ASP.NET Session]]」の引継ぎ...
**負荷分散(冗長化)構成とデータの暗号化・検証 [#v0f39ab2]
ステート サービス・ステート データベースに保存される「[[S...
このため、ネットワーク負荷分散(冗長化)構成を組み、以下...
-ネットワーク負荷分散(冗長化)構成に於いて、同一クライア...
-あるノードで障害が発生して、ネットワーク負荷分散(冗長化...
[[machineKey>*.configの暗号化#efdd9542]]要素をネットワー...
#ref(添付用1/11_UnifiedTheMachineKeyElementInTheOverallC...
-MSDNライブラリ > .NET Frameworkの全般リファレンス > mach...
http://msdn.microsoft.com/ja-jp/library/w8h3skw9.aspx
*参考 [#l4285a81]
**[[ASP.NET Session]] [#zd583c2a]
**[[ASP.NET ViewState]] [#l9fb9736]
----
Tags: [[:.NET開発]], [[:ASP.NET]], [[:ASP.NET Web Forms]]
ページ名: