- PR -

shared は 値保持に使える?

1
投稿者投稿内容
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2006-05-26 15:06
いつもお世話になります。 ognacです。
VB2003.net.asp(VB) で,疑問点が出てきました。
 Webアプリなのでステートレス対策として, 保持したいobject(変数等)は viewstate/session変数等で
保持します。

VBの構文での shared をつけると. 値が保持されます。

private shared a as integer =0
public function xxxx() as integer
hogehoge
end function

どこかに保持されているとおもうのですが,わかりません。
viewstateに自動的に保持されるかとも思います。
shared 句の意味合いから,多用は避けたい気もします.

shared を付けて,値の保持ように使用するは, OKなのでしょうか


囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-05-26 15:17
全ユーザーでその値をシェアするならば、それでOKです。
そうでなければNGです。
_________________
囚人のジレンマな日々
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-26 15:17
ASP.NET で使用する Shared は
アプリケーション全体で共有されます。
(全ユーザが同じ変数を参照、変更します。)

のでユーザ情報や一時的なデータの保存には
Viewstate や Session を使用してください。
なせ
常連さん
会議室デビュー日: 2006/01/06
投稿数: 41
お住まい・勤務地: おおさか
投稿日時: 2006-05-26 15:25
Webのasp.netの場合

Sharedでの値の保持場所は実行されているプログラム。
つまりサーバー側になります。
viewstateに値が格納されているというわけではありません。

サーバー側のプログラムで保持されていますので、
session/viewstateのように1:1でのデータの保持の仕方ではなく、
1:多になります。

その部分を考慮した上での使用であれば問題無いかと思います。
利点としては。。あるのかは少しわかりません。。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-05-26 15:40
引用:

なせさんの書き込み (2006-05-26 15:25) より:
利点としては。。あるのかは少しわかりません。。


リソースの節約?(^^;

[追記]
例を一つあげると…

例えば、DB接続文字列やログファイルの出力先など、アプリケーション共通の設定値。
通常Web.configに書きますが、顧客都合でどうしても既存のINIファイルをそのまま使いたい、という場合。

しかも、そのINIファイルがけっこう巨大な上にアクセス頻度が高く、
逐次ファイルから読んでいると性能があまりよろしくない、という状況。

この場合、初回にSharedなインスタンスに情報を全て取り込み、
メモリから読むようにすれば性能の改善が見込まれます。

ただし、アプリケーションを再起動するまで設定ファイルへの変更が
反映されないというデメリットはありますが…

[ メッセージ編集済み 編集者: ぼのぼの 編集日時 2006-05-26 15:52 ]
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2006-05-26 15:55
ognacです。
 早速のレス,ありがとうございます.
そうですよね, shared と言う性格上,納得です.
アプリケーション変数とも違うようでね.

 固定値の参照 ( const ばかり集めた箇所) の保持には使えそうですね
使い道のげ無いような結果でした.
お騒がせしました
1

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