- PR -

【C#】可変サイズのメンバを.NET Remotingで参照する方法

1
投稿者投稿内容
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2006-02-01 21:37
いつもお世話になっております。
質問させて頂きます。

開発環境:VS.NET 2003
開発言語:C#
OS:Windows2000

件名の通り
ある可変サイズのメンバを.NET Remotingにて
複数のクライアントアプリから参照を試みています。
ここで言う可変と言うのは
クラスのインスタンスを生成する際に
コンストラクタで必要な分だけ
newで配列を作っていることを
意味して記載しています。

試みた手法としては
クライアントでプロキシオブジェクトを生成する際に使用する
クラスのインスタンスの生成時に配列を決定する。
*********************************************************
ClassA ins = new ClassA( 2 ); // ここでメンバの配列を2つにする


this.ins = (ClassA) Activator.GetObject(
typeof(ClassA), "tcp://localhost:8000/NewestAnalogData");
*********************************************************
こんなことでうまくいくはずは無いかと思いましたが
予想通りうまくいきませんでした。

.NET Remotingの仕組みを
深く理解していないからわからないと思うのですが
技術的に可能かどうかだけでも
教えて頂けないでしょうか。

宜しくお願い致します。

[ メッセージ編集済み 編集者: daikoku 編集日時 2006-02-01 21:38 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-02-01 22:43
引用:

daikokuさんの書き込み (2006-02-01 21:37) より:
試みた手法としては
クライアントでプロキシオブジェクトを生成する際に使用する
クラスのインスタンスの生成時に配列を決定する。
*********************************************************
ClassA ins = new ClassA( 2 ); // ここでメンバの配列を2つにする

this.ins = (ClassA) Activator.GetObject(
typeof(ClassA), "tcp://localhost:8000/NewestAnalogData");


これが何をやろうとしてるのかよく分かりませんが…
とりあえず、サーバーアクティベーション(既知のオブジェクトとか、
WellKnownとか、いろいろ言い方がありますが…)のオブジェクトは、
接続してくるクライアントを識別しませんので、クライアント固有の状態を
持つことは出来ません。
どうしてもやるならクライアントアクティベーション(Activated)で
やる必要があります。

まあ、根本的に、そもそもその可変長の状態をリモートオブジェクトが
保持している必要があるのかとか、その辺から見直したほうがよさげですが。
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2006-02-02 15:45
自己解決しました。
ただ単に、リモートオブジェクトに
配列を指定個数分newするメソッドを作っておき
クライアントのプロキシオブジェクトから
行わせれば可変サイズのメンバが実現できました。

返答頂いたなちゃさん、ありがとうございました。
1

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