- - PR -
親画面にデータを反映させる方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-09-23 23:38
>しかし、今回の件のように値渡し用に使う上ではASP.NETを使う以上、
>一つの選択肢になりうるだろうと思います。 そうですね。選択肢の1つにはなりえると思います。 JavaScriptを使用したくない場合は【Sessionオブジェクト】の 使用も検討項目に入れても良いかと思います。 うりゅうさんが書かれていますが私もJavaScript周りのデバック環境 がVS.NETの中で向上することを期待しています。 | ||||
|
投稿日時: 2002-09-24 09:39
ASP.NETでは、状態を保持するためにSessionオブジェクト、Applicationオブジェクトが
用意されていますが、それを利用せず、Sharedを利用するのはなぜでしょうか? Sharedはたまたま現在のCLRの実装上、Applicationオブジェクトと同じような動きを してしまうものであると聞いたことがあります。 これは保障されている動きではないと思うので、できるだけSessionやApplication オブジェクトを利用すべきだと考えています。 #Sharedの利点ってなにかあるのだろか。。。 | ||||
|
投稿日時: 2002-09-24 09:45
おはようございます。
ひろきちです。 ジャムさん、うりゅうさん、ご意見ありがとうございます。 実際、Sharedを使用して値の参照をするのは、コーディング上簡単で便利ですね。 JavaScriptを使用した場合のデバッグは手間がかかってつらいのもあり、 できてしまうなら、よく簡単なほうに逃げがちになってしまいます。 でも、簡単がゆえに起こってしまう、予期せぬ不具合を考えると やはりきっちり作るべきですね。 極端な話、Sharedで宣言された変数などは、プログラムが終了するまで、 残りつづける事になりますしね。 現在、HEPL画面の実装には、JavaScriptを使用して実装しています。 Sharedは、このお話をしていて色々わかってきたので、 他画面に影響の無い(その内部でしか使用しない)、閉じたプログラムの中に 一部実装しています。 色々と、勉強になるご意見本当にありがとうございます。 | ||||
|
投稿日時: 2002-09-24 10:48
ALADDINです。
私もまったく同じ疑問を持ちました^^; 別スレで私がフレーム間のデータ受け渡しの質問をしたとき にはSessionオブジェクトを利用することになりましたが、 動き(理屈)的には同じことですよね・・・。 ご教授願います | ||||
|
投稿日時: 2002-09-24 11:44
今回のような場合は、Sessionを利用すべきだと思います。
Shared(static)では、複数人が利用した場合にデータが上書きされてしまうでしょう。 負荷を分散させるために複数のアプリケーションサーバに処理を分割させるような場合にもSharedではまずいような気がします。 ってこれはSessionやApplicationでもダメでしょうか。うーん… | ||||
|
投稿日時: 2002-09-24 12:08
ひろきちです。
>#Sharedの利点ってなにかあるのだろか。。。 ってことについて、今回、質問を投げたほうですが、 思った事を書こうと思います。 本来のSharedの使い方を考えると、変数とかを保存しておくと言う使い方ではなく、 共通で使うためのメソッド等を用意するための物ではないかと思いました。 プログラムで CINT関数とか MID関数とか意識せずに使いますよね? 上記のような関数もクラスで作成されているわけですが、 新たにNEWして使用する事はないです。 内部に情報を溜め込んでおくような処理の無い関数 (引数をもらって関数内だけですべての処理を終わらせ戻り値を返すような関数) などをプロジェクト内に作りたい場合に使用するのが本来の形なのではないでしょうか? 同じように、変数もSharedで宣言すると、どんなところからでも参照できるという 扱いになっているだけで、本来はこういう使い方をするものでは無いのでしょうね。 ただ、方法論として可能であるって事は、選択肢に加わるって事で、 そのときの状況により、使うのはありかなと思っています。 今回、色々な方のご意見をいただきました。 DaikiRyutoさん、うりゅうさん、ジャムさん、shuさん、ALADDINさん 本当にありがとうございます。 みなさんが書き込まれている事を読ませていただいて思った事を書かせてもらいました。 勉強不足なため、検討はずれな事を言っていたら申し訳ないですが、 現状そう理解しております。間違っていますでしょうか? |