AppDomainの境界を越えてインターフェイスを共有する方法はありますか?つまり、共有インターフェイスを使用して、プロセス内の別のAppDomain内のインスタンスを参照できますか?私は名前付きパイプでWCFを使うことができることを知っていますが、オブジェクト指向のやり方でより直接的(そしてより簡単に)通信する方法があるのだろうかと思います。AppDomains全体の通信
答えて
2つ目のAppDomainを作成し、MarshalByRefオブジェクト(おそらくはインターフェイスを継承するオブジェクト)をAppDomain境界に渡すことができます。簡単な例はここにある:例ではそう
http://msdn.microsoft.com/en-us/library/3c4f1xde.aspx
:
AppDomain ad = AppDomain.CreateDomain("New domain");
Worker remoteWorker = (Worker) ad.CreateInstanceAndUnwrap(
Assembly.GetExecutingAssembly().FullName,
"Worker");
remoteWorkerは、 "新しいドメイン" のインスタンスです。呼び出し元ドメインの変数remoteWorkerは、実際には他のアプリケーションドメインの実際のインスタンスへの呼び出しをマーシャリングするTransparentProxyです。
AppDomainsはメモリ空間を共有しませんが、そうですか?これをAppDomainの境界を越えた相互通信の方法として使いたいと思っているからです。このメソッドは、単純にローカルヒープにインスタンスを作成するか、それとも境界を越えてインスタンスを作成しますか? – Jordan
CreateInstanceAndUnwrapは、ターゲットドメイン内(境界を越えて)にインスタンスを作成し、呼び出し元ドメインのTransparentProxy参照を提供します。 – Jeff
素晴らしいです、ありがとうございます。それがまさに私が必要としていたものです。私がインターフェイス型の方法で共有型を渡すと、それがシリアル化されるか、または参照渡しされます。私がAppDomainsを初めて熟知していれば、私は新しいことです。 – Jordan
- 1. プロジェクト全体の共通のグリッドビューasp.net
- 2. PySerial - 全二重通信
- 3. アプリケーション全体のブロードキャスト受信者
- 4. サーバー間の安全な通信
- 5. www.Text返信全体HTMLページデータなし
- 6. 安全な通信エラーです。 FTP
- 7. 安全な通信iPhoneとデータベース
- 8. COM interop内のappdomains
- 9. C#AppDomains and Threads
- 10. AppDomainsとライセンスファイル
- 11. 'ref'キーワードとAppDomains
- 12. AppDomainsとGCヒープ
- 13. sqlite DB全体を通して一意の_idを実装
- 14. リストのリスト:全体を通して値を見つける
- 15. 構造体のメンバ変数への(通常の)ポインタを構造体全体へのポインタに変換する
- 16. Javaスキャナがファイル全体を通過しない
- 17. NSUserDefaultsはデバイス全体またはアプリケーションだけに共通です
- 18. 返信メール全体のヘッダーデータを維持する
- 19. スレッド通信とプロセス通信
- 20. iOSクライアントとFacebook APIとサーバーの間の安全な通信
- 21. C#クライアントとPHPサーバーの間の安全な通信
- 22. ハイパーリンク全体のdiv
- 23. 年全体のカレンダー
- 24. プロットウィンドウの全体タイトル
- 25. 全体の配列
- 26. jpegtran全体のディレクトリ
- 27. グレイ全体のスケーリング
- 28. SharePoint全体のGetListItems
- 29. キーボード全体の変更アプリケーション全体のアプリケーション
- 30. がループ全体
あなたは良いol '.NET Remotingを探しています。 – leppie
同じプロセスであれば、完全な吹き飛ばしのリモーティングは必要ありません。ちょうどMarshalByRefオブジェクトとAppDomain.CreateInstanceAndUnwrapはそのトリックを行います。 – Jeff