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. IIS要求内のAppDomains間の双方向通信
- 2. サーバからのFCM通知でテーブル全体を送信
- 3. プロジェクト全体の共通のグリッドビューasp.net
- 4. PySerial - 全二重通信
- 5. アプリケーション全体のブロードキャスト受信者
- 6. サーバー間の安全な通信
- 7. iPads間の安全な通信
- 8. AngularJSとSpringBootの安全な通信
- 9. wcfアプリケーション間の全二重通信
- 10. phpmailerでhtmlページ全体を送信
- 11. django onchangeフォーム全体を送信
- 12. www.Text返信全体HTMLページデータなし
- 13. COM interop内のappdomains
- 14. AppDomainsとGCヒープ
- 15. 'ref'キーワードとAppDomains
- 16. AppDomainsとライセンスファイル
- 17. C#AppDomains and Threads
- 18. 安全な通信エラーです。 FTP
- 19. 安全な通信iPhoneとデータベース
- 20. バックエンドサーバーと安全に通信する
- 21. アプリケーション全体の上に共通のフラグメントを表示する
- 22. AppDomains間の共有タイプ
- 23. リスト全体ではなくバイナリ検索の通過リストスライス
- 24. アプリケーション全体を通して実行中のメソッド - IOS
- 25. リストのリスト:全体を通して値を見つける
- 26. sqlite DB全体を通して一意の_idを実装
- 27. 全体
- 28. 構造体のメンバ変数への(通常の)ポインタを構造体全体へのポインタに変換する
- 29. 、全体他のサーバー上のJavaに信号を送る
- 30. QSerialPort - 送信者からのデータ全体の払い戻し
あなたは良いol '.NET Remotingを探しています。 – leppie
同じプロセスであれば、完全な吹き飛ばしのリモーティングは必要ありません。ちょうどMarshalByRefオブジェクトとAppDomain.CreateInstanceAndUnwrapはそのトリックを行います。 – Jeff