異なるアプリ間でオブジェクトを共有するには?

解決


ゆく  2006-10-11 18:55:52  No: 133649

はじめまして、ゆくと申します。
いつも拝見させて頂いています。

開発環境:VB.NET2003

自作コントロールのインスタンスを異なるアプリ間で共有させたいのですが、可能なのでしょうか。
VB6の頃ではActiveX.exeを作成し、グローバル宣言することで可能でしたが、VB.NETではActiveXExeは作成できないようです。
特にActiveXExeには拘っていないため、他の方法(メモリ共有等)でもいいのですが、いろいろと検索しても欲しい情報がありませんでした。

理想形は、共有コントロールアプリにクラスを作成して、アプリ1・アプリ2からそのクラスをインスタンス化して、
プロパティやメソッドを介して共有コントロールにアクセス可能な形式です。

せめてキーワード等でも教えて頂ければ、自分で調べてみます。
御手数を御掛けしますが、よろしく御願い致します。


K.J.K.  2006-10-11 19:27:25  No: 133650

.NET標準だと、
System.Runtime.Remoting 名前空間
辺りでしょうか。


ゆく  2006-10-11 20:55:48  No: 133651

K.J.K. 様
ありがとうございました。

教えて頂いた「System.Runtime.Remoting 名前空間」で
調査してみます。

また、わからないことがありましたら、よろしく御願い致します。


ゆく  2006-10-12 03:18:27  No: 133652

System.Runtime.Remoting 名前空間で調査してみました。

私が調べた感じですと、シングルトン・オブジェクトで実施すれば、
共有されたオブジェクトに対して、メソッド等の実行ができると認識しました。
ただ、HTTP若しくはFTPでの通信が必須となってしまうのは仕方がないのでしょうか?
いずれのHPやMSDN、サンプルを見ても、必ず上記2種類での通信となっていました。また、シングルトン・オブジェクトで実施する場合は全てのコネクションで共有されるとの認識でいいものでしょうか?
(例:シンクライアントシステムでHTTP通信した場合、シンクライアントで動作している全ての環境(ユーザー?)で共有される)

御手数を御掛けしますが、よろしく御願い致します。


K.J.K.  2006-10-12 05:28:06  No: 133653

既存のものを使う限りはそうなるのかもしれません。
独自の通信プロトコルを使いたいのであれば、
System.Runtime.Remoting.Channels 名前空間 下の
IChannel インターフェイスを実装した独自のクラスを作り、
それを ChannelServices.RegisterChannel メソッドで登録
してから使うことになるのでは。

で、Singletonは、どのContextに対してSingletonなのかにも
よるのでは。作り方によっては当然Client側が把握していれば
全てのClientに対して共有されますよね。
そういうSingletonである必要があるのならば、そのままそう
作ればいいでしょうし、そうでないのならば、普通の非Singleton
なものにすればいいでしょう。


ゆく  2006-10-12 17:58:06  No: 133654

K.J.K. 様
再度の回答ありがとうございました。

更に調査を行い、要件に対して合致しているか確認しながら、
作業を進めたいと思います。

ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加