- PR -

ASP.NETのステートとは何?

1
投稿者投稿内容
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2004-09-12 07:42
先日、Tech-Ed2004に参加して
「N階層アプリケーションにおけるステート管理」のセッションを受講しました・・・
がよく理解できませんでした。

どなたか、ASP.NETのステートとは何か説明していただけませんか。

それから、
・アプリケーションステート(Application State)
・セッションステート(Session State)
・ビューステート(View State)
の違いについても説明して頂けると助かります。

よろしくお願いします。


補足:
単純に、ステートとはアプリケーションのデータと理解してよいのでしょうか?アプリケーションステート、セッションステート、ビューステートは単純にステートのスコープの違いということでしょうか。

burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-09-12 12:54
Webアプリケーションで管理しなければいけないのは大きく分けて2つです
1.個々のユーザごとに管理しなければいけない情報
2.すべてのユーザにまたがって、アプリケーション全体で共有しなければいけない情報

1はブラウザ側(クライアント)に保存するViewStateと
サーバ側に保存するSessionStateがあり

2はApplicationStateにあたります。

上記以外にもクッキーやクエリー文字列、サーバーサイドのStatic変数などありますが
ASP.NETの状態管理の基本は
ViewState
SessionState
ApplicationState
らしいです。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2004-09-12 21:51
burton999さんありがとうございました。

ステートを理解するのに、ショッピングカートを例にすると分かり易いと思うのですが。たとえば、ショッピングカートをセッションステートに保存したとします。ところが、クッキーレス(Cookieless=True)の状態で、ハイパーリンクに絶対アドレスを指定すると、同じサイトでも新規のセッションが作成されて、セッションステートが維持できなくなります。(つまり、セッションIDが異なるためにセッションステートが対応できなくなる)

モバイル対応のサイトを構築するとき(クッキーレスが前提)は、ハイパーリンクに相対アドレスを指定すると正常に動作しないことがあると聞いたことがあります。ところが、絶対アドレスを指定するとセッションステートが維持できなくなる不都合が発生します。

この場合、ステートをどのように管理したらよいのでしょうか。どなたか、ご存知の方教えてください。

NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-09-12 22:57
http://www.atmarkit.co.jp/fdotnet/dotnettips/189aspckless/aspckless.html

もうちょっと自分で調べるようにしたほうが今後のためかもしれません。

_________________
相手がうまく理解できない場合、問題は相手にあるのではなく自分の伝え方にある。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-09-12 22:59 ]
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2004-09-13 08:22
引用:

NAL-6295さんの書き込み (2004-09-12 22:57) より:
http://www.atmarkit.co.jp/fdotnet/dotnettips/189aspckless/aspckless.html
もうちょっと自分で調べるようにしたほうが今後のためかもしれません。



説明不足で申し訳ありません。ASP.NETでクッキーレスにする方法は理解しています。もう少し具体的に説明すると、クッキーレスセッションの環境で、以下の2種類のリンクを作成します。

(1) <a href="mypage.aspx">Click Me</a>
(2) <a href="/mypage.aspx">Click Me</a>

(1)のケースは、同じセッションIDが継承されてセッションステートが保持されます。ところが、(2)のケースでは、新たなセッションIDが作成されるためセッションステートが保持できません。URLをすべて相対アドレスで記述できれば問題ないのですが、絶対アドレスで記述しないといけないケースでは、セッションステートを維持できなくなります。

この問題を解決する方法がないか悩んでいます。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-09-13 10:14
クッキーレスセッションですかね。
セキュリティー的に好ましくなさそうですが(((( ;゚д゚)))アワワワワ

http://www.atmarkit.co.jp/fdotnet/dotnettips/189aspckless/aspckless.html
1

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