- - PR -
[C#]Activator.GetObject()で取得するプロキシについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-11 21:52
いつもお世話になっております。
件名の通り、Activator.GetObjectで取得するプロキシについて 質問させていただきます。 サーバーオブジェクトが持つリモートオブジェクトを 異なる2つのアプリで共有しようとしています。 そのリモートオブジェクトのプロキシを取得するにあたり 共有するということで、サーバーオブジェクトのRemotingConfiguration.Configureに 指定するconfigファイル内での設定は <application> <service> <wellknown mode="Singleton" type ...(省略) /> </service> <channels> <channel ref="ipc" portName="test" /> </channels> </application> としています。 一応各アプリの Activator.GetObject で取得したプロキシは 同じリモートオブジェクトのインスタンスのプロキシができているのでいいのですが もし、同じ型のリモートオブジェクトの別インスタンスのプロキシを取得したい場合は どのようにすればいいのかわからず悩んでいます。 ちなみに、サーバーオブジェクトとクライアントアプリ2つは 同プロセスの別ドメイン(別スレッド)で起動させています。 ご教授よろしくお願いします。 [開発環境] WindowsXP Visual Studio .NET2005 | ||||||||
|
投稿日時: 2006-04-11 23:38
リモーティングの機構によるインスタンスの管理ではそういうことはできないので、 例えばキーを指定してインスタンスを作成して返すようなリモートメソッドを作成し、 リモートで呼び出してプロキシを取得するなどの間接的なやり方が必要になると思います。 まあ、オブジェクト自体をプロキシで参照するよりは、サーバ側でキーで状態を 保持するほうが無難にも思いますが。 ところで、
この別スレッドでってどういう意味ですか? | ||||||||
|
投稿日時: 2006-04-12 02:40
なるほど、ルール違反というわけですね。 例えば、なちゃさんの言われるように、共有かつ複数作成したい インスタンス( Aとします )をコレクションとして抱えるクラスを リモートオブジェクトとして、キーを指定してAを返すみたいなメソッドを 実装した場合に、AがMarshalByRefObject から派生しているクラスなら そのままAのプロキシをクライアント側が受け取れたりするんでしょうか? (理解しづらい文章ですいません・・・) でも、リモートメソッドっていう単語からどうも外してる気がする・・・
これはですね、クライアントアプリを起動した時に プログラム内で、サーバーオブジェクトの起動ともう1コのクライアントアプリの 起動をしてるんですけど、そのままドメインを作って起動させたら 同スレッドで動いてメッセージループから返ってこないので それぞれスレッドを作って、ドメインを作って、起動という風にしてるわけです。 |
1