Webアプリケーションの画面遷移
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「...
-[[戻る>アプリケーション設計のポイント]]
*目次 [#tecd7392]
#contents
*概要 [#pda0c156]
リダイレクトによる画面遷移、トランスファー(フォワード)...
>ココでの画面遷移とは、サーバ上で強制的に次画面に遷移する...
*”Open棟梁”の「[[画面遷移制御機能]]」 [#b290ddf1]
リダイレクトによる画面遷移、トランスファー(フォワード)...
-「画面遷移の定義方法」については”Open棟梁”の利用ガイド(...
https://github.com/OpenTouryoProject/OpenTouryoDocuments/...
-「[[画面遷移制御機能]]」については”Open棟梁”の利用ガイド...
https://github.com/OpenTouryoProject/OpenTouryoDocuments/...
*ASP.NET WebForms [#yebf433b]
**リダイレクト [#f0cdb563]
+画面遷移は、「Response.Redirect」を使用する。「Server.Tr...
+画面跨りで使用するデータはSessionに格納する(「[[共通情...
※ 次項で説明する「Server.Transfer : トランスファー(フォ...
#ref(Response.Redirect.png,left,nowrap,リダイレクト)
**トランスファー(フォワード) [#wcab3dcc]
+画面遷移は、「Server.Transfer」を使用する。「Response.Re...
+画面跨りで使用するデータはHTTPContextに格納する(「[[共...
#ref(Server.Transfer.png,left,nowrap,トランスファー(フォ...
*ASP.NET MVC [#h94046c2]
ASP.NET MVCは”ユルイ”フレームワークであるのでなんでもでき...
従って、何か規則を決めないと、言及できないので、
>URL - 画面 - MVCコンポーネントのセットが1対1に対応さ...
この場合、 ≒ ASP.NET Web Formsの設計が可能である。
MVCには、
-Html.BeginForm
-Ajax.BeginForm
の2つの方式があるので、これについて言及する。
**Html.BeginForm [#of29c1a3]
-基本的に自コントローラにPost( ≒ Postバック)して、画面...
// 結果表示するメッセージ
string message = "";
CrudModel model = new CrudModel();
// 値の復元のため、CopyInputValuesを呼び出す。
model.CopyInputValues(form);
// メッセージを設定。
model.Message = message;
// Html.BeginFormでは、全体更新。
return View("Index", model);
-画面遷移の際は、他コントローラにリダイレクトする方式を採...
//return new RedirectResult("/CrudMu/");
return Redirect("/CrudMu/");
**Ajax.BeginForm [#rb21b4d6]
-基本的に自コントローラにFrom情報をAjaxで送信して、画面の...
// 結果表示するメッセージ
string message = "";
CrudModel model = new CrudModel();
// メッセージを設定。
model.Message = message;
// Ajax.BeginFormでは、以下のように記述することで部分更...
return PartialView("_MessageView", model);
-予定外の部位を部分更新する場合はJavaScriptを使用する必要...
// Ajax.BeginFormでは、UpdateTargetIdで指定した
// ターゲット以外を更新する場合、JavaScriptでの対応が必...
// #ここではjQueryを使用している。
string scriptText = "$('#lblMessage').text('" + message ...
return JavaScript(scriptText);
-画面遷移の際は、他コントローラにリダイレクトする方式を採...
return JavaScript("location.href='/CrudMu2/';");
*画面間の情報持ち回り方式 [#p68fc0ab]
-参考:[[ASP.NETの状態管理方式>http://techinfoofmicrosoft...
**リダイレクト時の情報の持ち回り [#ka8735a5]
画面遷移方式に「リダイレクト」を採用した場合の情報の持ち...
***Session [#c4c4f088]
-使用者~
基盤, 業務で使用可能。
-使用方法
--画面遷移の際に、次画面に引き渡すために使用する。
--画面間複数の画面に渡って保持する情報のみ保持する。
--セッションの明示的な破棄、明示的なセッション タイムウト...
メモリ上のオブジェクトが破棄されないので注意して利用する。
***Form (Hidden)、HttpContext [#u39dd4a8]
-使用者
--基盤, 業務で使用可能。
--ASP.NET MVCは、Formの分割が可能であるため、基盤利用が困...
-使用方法
--PostBackのうちは、情報引継ぎが可能。
--リダイレクトでの画面遷移の間では情報を引き継げない。
--エラー画面遷移など特殊な画面遷移でのみ利用する。
***ViewState [#h701e1ea]
-使用者
--基盤で使用される。
--業務でも使用可能。
-使用方法
--ASP.NET WebFormsの基盤で自動的に使用される。
--ASP.NET MVCでは使用できないので注意する。
--Hiddenで実装されるため、使用方法は上記Hiddenと変わらな...
--Base64エンコーディングが施されるが、暗号化はされない。
--EnableViewStateMacプロパティを使用して、改ざん検知など...
***QueryString [#y15a1f43]
-使用者~
基盤, 業務で使用可能。
-使用方法
--URLの後ろに不可するパラメタを使用して情報を受け渡す方式。
--Getによる画面遷移、Get・Postの両画面遷移に対応する場合に...
--使用する際はセキュリティ的に問題が無いか注意する。
***Cookie [#geaf6960]
-使用者~
基盤で使用。
-使用方法
--SessionIDやForms認証の認証チケットなどで使用される。
--基盤類の挙動をコントロールするときなどに使用することが...
--業務(ユーザ・プログラム)で頻繁に書き換える情報ではな...
基盤で使用するシステム共通引き継ぎ情報を持ち回るために使...
-注意事項
--使用する際はセキュリティ的に問題が無いか注意する。
--携帯端末ではサポートされない機種があるので注意する。
***Application、静的変数 [#h22ed553]
-使用者~
基盤で使用。
-使用方法~
システム全体で使用する情報を保存する。
-注意事項
---障害を引き起こす事があるのでユーザ プログラム側では使...
---メモリリーク(タイムアウトが存在しない)
---スレッド競合(スレッドセーフではない)などによる結果不...
***TLS(Thread Local Storage) [#c21e598a]
-使用者~
基盤で使用。
-使用方法~
当該スレット(≒リクエスト)で使用する情報を保存する。
-注意事項~
データの持ち回りを隠蔽(自動化)できるが、引数・戻り値の...
--初期化処理の実装
--2層から3層化した時のデータの持ち回り
***Cache(System.Net.Cache) [#le286ccf]
-使用者~
基盤で使用。
-使用方法~
キャッシュする。
-注意事項~
利用が難しい。
**トランスファー(フォワード)時の情報の持ち回り [#ndc0f1...
画面遷移方式に「トランスファー(フォワード)」を採用した...
***Session [#pfbb5250]
リダイレクトと同じ。
***Form (Hidden)、HttpContext [#k8aad0f1]
リダイレクトと異なる点。
-トランスファー(フォワード)では画面遷移の間では情報を引...
-1回のリクエスト ~ レスポンスで破棄されるため、問題を起...
-トランスファー(フォワード)で、Form (Hidden) ---> HttpC...
SessionステートレスなWebアプリケーションを開発することが...
***ViewState [#uc25aa82]
リダイレクトと同じ。
***QueryString [#y15a1f43]
リダイレクトと同じ。
***Cookie [#geaf6960]
リダイレクトと同じ。
***Application、静的変数 [#h22ed553]
リダイレクトと同じ。
***TLS(Thread Local Storage) [#c21e598a]
リダイレクトと同じ。
***Cache(System.Net.Cache) [#le286ccf]
リダイレクトと同じ。
**TLS(Thread Local Storage) [#v81d8b7f]
TLS(Thread Local Storage)については以下を参照。
-MSDNライブラリ
--.NET開発 > スレッド ローカル ストレージ : スレッド相対...
http://msdn.microsoft.com/ja-jp/library/6sby1byh.aspx
--System.ThreadstaticAttributeクラス~
http://msdn.microsoft.com/ja-jp/library/system.threadstat...
--System.Threading.Thread.AllocateDataSlotメソッド~
http://msdn.microsoft.com/ja-jp/library/system.threading....
--System.Threading.Thread.AllocateNamedDataSlotメソッド~
http://msdn.microsoft.com/ja-jp/library/system.threading....
-Web/DBプログラミング徹底解説 > スレッドローカルストレー...
http://keicode.com/windows/win19.php
終了行:
「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「...
-[[戻る>アプリケーション設計のポイント]]
*目次 [#tecd7392]
#contents
*概要 [#pda0c156]
リダイレクトによる画面遷移、トランスファー(フォワード)...
>ココでの画面遷移とは、サーバ上で強制的に次画面に遷移する...
*”Open棟梁”の「[[画面遷移制御機能]]」 [#b290ddf1]
リダイレクトによる画面遷移、トランスファー(フォワード)...
-「画面遷移の定義方法」については”Open棟梁”の利用ガイド(...
https://github.com/OpenTouryoProject/OpenTouryoDocuments/...
-「[[画面遷移制御機能]]」については”Open棟梁”の利用ガイド...
https://github.com/OpenTouryoProject/OpenTouryoDocuments/...
*ASP.NET WebForms [#yebf433b]
**リダイレクト [#f0cdb563]
+画面遷移は、「Response.Redirect」を使用する。「Server.Tr...
+画面跨りで使用するデータはSessionに格納する(「[[共通情...
※ 次項で説明する「Server.Transfer : トランスファー(フォ...
#ref(Response.Redirect.png,left,nowrap,リダイレクト)
**トランスファー(フォワード) [#wcab3dcc]
+画面遷移は、「Server.Transfer」を使用する。「Response.Re...
+画面跨りで使用するデータはHTTPContextに格納する(「[[共...
#ref(Server.Transfer.png,left,nowrap,トランスファー(フォ...
*ASP.NET MVC [#h94046c2]
ASP.NET MVCは”ユルイ”フレームワークであるのでなんでもでき...
従って、何か規則を決めないと、言及できないので、
>URL - 画面 - MVCコンポーネントのセットが1対1に対応さ...
この場合、 ≒ ASP.NET Web Formsの設計が可能である。
MVCには、
-Html.BeginForm
-Ajax.BeginForm
の2つの方式があるので、これについて言及する。
**Html.BeginForm [#of29c1a3]
-基本的に自コントローラにPost( ≒ Postバック)して、画面...
// 結果表示するメッセージ
string message = "";
CrudModel model = new CrudModel();
// 値の復元のため、CopyInputValuesを呼び出す。
model.CopyInputValues(form);
// メッセージを設定。
model.Message = message;
// Html.BeginFormでは、全体更新。
return View("Index", model);
-画面遷移の際は、他コントローラにリダイレクトする方式を採...
//return new RedirectResult("/CrudMu/");
return Redirect("/CrudMu/");
**Ajax.BeginForm [#rb21b4d6]
-基本的に自コントローラにFrom情報をAjaxで送信して、画面の...
// 結果表示するメッセージ
string message = "";
CrudModel model = new CrudModel();
// メッセージを設定。
model.Message = message;
// Ajax.BeginFormでは、以下のように記述することで部分更...
return PartialView("_MessageView", model);
-予定外の部位を部分更新する場合はJavaScriptを使用する必要...
// Ajax.BeginFormでは、UpdateTargetIdで指定した
// ターゲット以外を更新する場合、JavaScriptでの対応が必...
// #ここではjQueryを使用している。
string scriptText = "$('#lblMessage').text('" + message ...
return JavaScript(scriptText);
-画面遷移の際は、他コントローラにリダイレクトする方式を採...
return JavaScript("location.href='/CrudMu2/';");
*画面間の情報持ち回り方式 [#p68fc0ab]
-参考:[[ASP.NETの状態管理方式>http://techinfoofmicrosoft...
**リダイレクト時の情報の持ち回り [#ka8735a5]
画面遷移方式に「リダイレクト」を採用した場合の情報の持ち...
***Session [#c4c4f088]
-使用者~
基盤, 業務で使用可能。
-使用方法
--画面遷移の際に、次画面に引き渡すために使用する。
--画面間複数の画面に渡って保持する情報のみ保持する。
--セッションの明示的な破棄、明示的なセッション タイムウト...
メモリ上のオブジェクトが破棄されないので注意して利用する。
***Form (Hidden)、HttpContext [#u39dd4a8]
-使用者
--基盤, 業務で使用可能。
--ASP.NET MVCは、Formの分割が可能であるため、基盤利用が困...
-使用方法
--PostBackのうちは、情報引継ぎが可能。
--リダイレクトでの画面遷移の間では情報を引き継げない。
--エラー画面遷移など特殊な画面遷移でのみ利用する。
***ViewState [#h701e1ea]
-使用者
--基盤で使用される。
--業務でも使用可能。
-使用方法
--ASP.NET WebFormsの基盤で自動的に使用される。
--ASP.NET MVCでは使用できないので注意する。
--Hiddenで実装されるため、使用方法は上記Hiddenと変わらな...
--Base64エンコーディングが施されるが、暗号化はされない。
--EnableViewStateMacプロパティを使用して、改ざん検知など...
***QueryString [#y15a1f43]
-使用者~
基盤, 業務で使用可能。
-使用方法
--URLの後ろに不可するパラメタを使用して情報を受け渡す方式。
--Getによる画面遷移、Get・Postの両画面遷移に対応する場合に...
--使用する際はセキュリティ的に問題が無いか注意する。
***Cookie [#geaf6960]
-使用者~
基盤で使用。
-使用方法
--SessionIDやForms認証の認証チケットなどで使用される。
--基盤類の挙動をコントロールするときなどに使用することが...
--業務(ユーザ・プログラム)で頻繁に書き換える情報ではな...
基盤で使用するシステム共通引き継ぎ情報を持ち回るために使...
-注意事項
--使用する際はセキュリティ的に問題が無いか注意する。
--携帯端末ではサポートされない機種があるので注意する。
***Application、静的変数 [#h22ed553]
-使用者~
基盤で使用。
-使用方法~
システム全体で使用する情報を保存する。
-注意事項
---障害を引き起こす事があるのでユーザ プログラム側では使...
---メモリリーク(タイムアウトが存在しない)
---スレッド競合(スレッドセーフではない)などによる結果不...
***TLS(Thread Local Storage) [#c21e598a]
-使用者~
基盤で使用。
-使用方法~
当該スレット(≒リクエスト)で使用する情報を保存する。
-注意事項~
データの持ち回りを隠蔽(自動化)できるが、引数・戻り値の...
--初期化処理の実装
--2層から3層化した時のデータの持ち回り
***Cache(System.Net.Cache) [#le286ccf]
-使用者~
基盤で使用。
-使用方法~
キャッシュする。
-注意事項~
利用が難しい。
**トランスファー(フォワード)時の情報の持ち回り [#ndc0f1...
画面遷移方式に「トランスファー(フォワード)」を採用した...
***Session [#pfbb5250]
リダイレクトと同じ。
***Form (Hidden)、HttpContext [#k8aad0f1]
リダイレクトと異なる点。
-トランスファー(フォワード)では画面遷移の間では情報を引...
-1回のリクエスト ~ レスポンスで破棄されるため、問題を起...
-トランスファー(フォワード)で、Form (Hidden) ---> HttpC...
SessionステートレスなWebアプリケーションを開発することが...
***ViewState [#uc25aa82]
リダイレクトと同じ。
***QueryString [#y15a1f43]
リダイレクトと同じ。
***Cookie [#geaf6960]
リダイレクトと同じ。
***Application、静的変数 [#h22ed553]
リダイレクトと同じ。
***TLS(Thread Local Storage) [#c21e598a]
リダイレクトと同じ。
***Cache(System.Net.Cache) [#le286ccf]
リダイレクトと同じ。
**TLS(Thread Local Storage) [#v81d8b7f]
TLS(Thread Local Storage)については以下を参照。
-MSDNライブラリ
--.NET開発 > スレッド ローカル ストレージ : スレッド相対...
http://msdn.microsoft.com/ja-jp/library/6sby1byh.aspx
--System.ThreadstaticAttributeクラス~
http://msdn.microsoft.com/ja-jp/library/system.threadstat...
--System.Threading.Thread.AllocateDataSlotメソッド~
http://msdn.microsoft.com/ja-jp/library/system.threading....
--System.Threading.Thread.AllocateNamedDataSlotメソッド~
http://msdn.microsoft.com/ja-jp/library/system.threading....
-Web/DBプログラミング徹底解説 > スレッドローカルストレー...
http://keicode.com/windows/win19.php
ページ名: