- PR -

セッション変数について(超・初歩的)

投稿者投稿内容
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-09-04 09:04
引用:
未記入さんの書き込み (2007-09-04 08:48) より:
hiddenFieldでなくてViewStateに入れる方がいいのでしょうか?

ViewStateに入れても、クライアントでは結局hiddenに入りますよ。

引用:
Aページ→Bページ→【Cページ】→Aページ
Dページ→Eページ→【Cページ】→Dページ
の遷移となるとセッションに入れたまま、ず〜と忘れてしまいたい・・・。

仮にAでセッション変数を削除するとしても、ユーザーが例えばBページで操作をやめてしまったら
セッション変数がしばらくメモリに残ったままになってしまいますね。

引用:
Aページで入力内容をセッション変数へセット。
Bページでセッション変数からHiddenFieldへ入れ替えセッション変数を削除。
BページからCページへ遷移する際、HiddenFieldからセッション変数へセット。
Cページでセッション変数からHiddenFieldへ入れ替えセッション変数を削除。
CページからAページへ遷移する際、HiddenFieldからセッション変数へセット。
Aページでセッション変数からテキストボックス等に表示しセッション変数を削除。

この方法はやったことがあります。これならセッション変数は生成されてすぐ消えますからね。

ただ、アクセス頻度とかによると思うんですよ。数分に1アクセスとかだったら
数個のコントロール分くらいセッションに入ってても問題ないように思います。
あと、変数の数によっては、Hiddenに入れた分の通信が大きくなる可能性もありますね。
tkrn
ベテラン
会議室デビュー日: 2005/10/25
投稿数: 61
投稿日時: 2007-09-04 10:11
引用:

未記入さんの書き込み (2007-09-03 19:39) より:
そんなセッション変数がいっぱいあったらどうなるのでしょうか?



いっぱいにならないように考えましょう。
結構セッション変数を使わなくてもできる事ってありますよね。
画面遷移ぐらいでは使う必要がなかったりします。
セッション変数は奥の手。出し惜しみするぐらいにされた方がいいですよ。
プレマニア
常連さん
会議室デビュー日: 2007/08/24
投稿数: 34
投稿日時: 2007-09-04 19:28
引用:

未記入さんの書き込み (2007-09-04 08:18) より:
例えばですけど
Aページ→Bページ→Cページ→Aページと遷移するとします。
A画面の入力内容をBページで使用し、BページからCページへ遷移し
CページからAページに戻る際にAページの入力内容をもともとの内容に戻すため
Aページの入力内容をセッション変数に入れいます。

(中略)

Aページ→Bページ→【Cページ】→Aページ
Dページ→Eページ→【Cページ】→Dページ
の遷移となるとセッションに入れたまま、ず〜と忘れてしまいたい・・・。



私のところでは例示されているような場合、Aページから始まってAページへ
戻るまでの「一連の作業」=「一業務」≒「一セッション」と考えたりします。
Dページから始まってDページへ戻るまでも同様です。
実際は1アプリケーションで行う業務は複数に渡ったりするほうが普通なので
セッションの各アイテムに対するライフサイクルをそう捉えている、という
感じでしょうか。

環境とか使用条件とかにあわせて色々なやり方とか方針があるのだと思います。
なので、最終的にどうするかを考えるための基準のひとつです。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-09-04 23:32
引用:

未記入さんの書き込み (2007-09-04 08:48) より:
hiddenFieldでなくてViewStateに入れる方がいいのでしょうか?



Sessionに莫大な量のデータをいれっぱなしはやばいですが、

引用:

未記入さんの書き込み (2007-09-04 08:18) より:
例えばですけど
Aページ→Bページ→Cページ→Aページと遷移するとします。
A画面の入力内容をBページで使用し、BページからCページへ遷移し
CページからAページに戻る際にAページの入力内容をもともとの内容に戻すため
Aページの入力内容をセッション変数に入れいます。



この程度なら私はSessionに入れてしまいます。

ViewStateに関係ないページの情報をどんどん入れていったら
それはそれでかわいそうです。
ViewStateにはなるべくそのページに直接関連するものだけ入れるのが綺麗ですね。

私は、一連のページである場合はできるだけhiddenとクエリ文字列で対応します。
ユーザーに無理やり変更されるとやばい場合はViewStateを使っています。
ViewStateはエラーチェックが入るので。

Sessionにはどのページでも使う可能性があり、
あまり変更されないデータを入れています。
あと、ユーザに絶対に見せてはいけない情報も。
ViewStateもhiddenもユーザーから見えますから。

大きいデータをどうしても扱わなければいけない場合は
ViewStateではなくSessionにいれています。
転送の際のエラーや負荷を考えると、サーバー内にあったほうがいいので。
データが要らないことが明らかな適当なページでSessionを確認し、
存在する場合に削除するようにしています。
大抵「メニュー」みたいなのがありますから、
私はそこで確認しますね。

引用:

もうセッションに入れたことを忘れたフリしたいなぁ〜と思うのですが・・・かわいそうですか?



データの量とか、転送量とか、ユーザーの要望とか、開発時間とか、
いろんな兼ね合いがありますので一概には言えません。

あなたのやさしさ次第で。

#相変わらず会話内容が理解できてなかったので修正。

[ メッセージ編集済み 編集者: れい 編集日時 2007-09-05 04:05 ]
tkrn
ベテラン
会議室デビュー日: 2005/10/25
投稿数: 61
投稿日時: 2007-09-05 10:35
Sessionに莫大な量のデータをいれっぱなしにするのも問題ですが、Sessionタイムアウトも考慮してあげてください。
私の場合は、Sessionタイムアウトを90秒ぐらいにしても問題ないように作る事も心がけてます。


[ メッセージ編集済み 編集者: tkrn 編集日時 2007-09-05 10:49 ]

スキルアップ/キャリアアップ(JOB@IT)