AppDomains全体で.NETオブジェクトを効率的に共有または移動する方法はありますか?私はAppDomainsの目的は分離を提供することであることを認識していますが、計算と作成に高価な比較的大きなキャッシュされた不変オブジェクトのセットを移動する必要がある場合があります。現時点では、私は動作するシリアライゼーションアプローチを持っていますが、かなり遅いです。.NET内のAppDomains間でオブジェクトを移動する
答えて
AppDomainをシリアル化せずにオブジェクトを移動することはできません。これがAppDomainの要点です。あなたはそれを完全に別個のプロセスと考えることができます。
ここで、MarshallByRefObjectが機能します。 他のAppDomainのオブジェクトをRemoting経由で使用することができます.AppDomain境界を超えてシリアル化する必要はありません。あなたはまだリモートで作業しているので、同じAppDomainにオブジェクトを保持するよりも時間がかかりますが、オブジェクトが大きく、頻繁に使用していない場合は、シリアル化およびシリアル化解除に比べて膨大な時間を節約できます2番目のAppDomainで新しいコピーを作成します。
試してみることの1つは、オブジェクトをMarshalByRefObject
から派生させることです。既定では、オブジェクトはAppDomains全体の値によってマーシャリングされます。 MarshalByRefObject
から派生したオブジェクトの場合、呼び出し元にオブジェクトへのプロキシが与えられます。すべての呼び出しはプロキシを通過し、オブジェクトのアプリケーションドメインにマーシャリングされます。これにより、両方のアプリドメインにすべてのオブジェクトのコピーを作成する必要性を減らすことができます。
私はほんの数「恵まれた」オブジェクトはすなわちちょうど彼らが分厚いある場合に動作するはずの呼び出しをリモート処理
(文字列は1である)のではなくしようとして境界を越えてドリフトを聞かせて「ブリードによって元帥」にできることを信じています
共有オブジェクトを管理するために別のアプリケーションスペースを作成し、Webサービスまたはリモートを使用して共有データを取得/設定する方法はありますか?あなたは、必然的に、(データの保存方法に応じて)リポジトリの中央にメモリを作成します。
.NETリモート処理が私が知っている最良の方法ですが、かなり限られた経験があります。これを使用したい場合は、アドバンスト.NET Remoting、Second Edition、Ingo Rammerおよび Mario Szpusztaを読む必要があります。あなたがグーグル・グーグルを起動すると、Ingoの名前が頻繁にポップアップします。私はこの本が少し年月日になったが、かなり貴重であることを発見した。私は大きなバイナリの直列化されたオブジェクトでそれを試していませんが、私が作業している小さなオブジェクトでは効率的です。カスタムのシリアル化/非直列化を実装しない限り、SecureStringプロパティを持つオブジェクトを持つことができませんでした。
- 1. AppDomains間でワーカースレッドを移動することは可能です
- 2. AppDomains間で大量のデータを移動する
- 3. プロセス間でSTLオブジェクトを移動する
- 4. COM interop内のappdomains
- 5. .NET System.OutOfMemoryExceptionおよびAppDomains
- 6. AppDomains間の共有タイプ
- 7. forループ内のjavascriptオブジェクト内を移動する
- 8. オーバーヘッドをコピーせずにコンテナ間でオブジェクトを移動する
- 9. UITableViewCell内のUITextField間の移動
- 10. DOMツリー内でFlashオブジェクトを移動する
- 11. どのようにAppsettingsを.NETのさまざまなAppDomains間で共有するのですか?
- 12. javascript/threejs - 中心のy軸(3D空間内)の円内のオブジェクトを移動する方程式
- 13. asp.net mvcでオブジェクト内のオブジェクトを渡している間の動作ですか?
- 14. OpenCV:2D平面内を移動する3Dオブジェクトのトラッキング
- 15. テーブル間を移動する
- 16. iOS:NSMutableArrayでのオブジェクトの移動
- 17. キャンバスが円でオブジェクトを移動する
- 18. ユニークで移動するオブジェクトの頭部
- 19. 配列内のすべてのオブジェクトを移動しますか?
- 20. 同じプロセス内のAppDomains間に大きなバイト配列を送信します。
- 21. フォルダ間でファイルを移動する
- 22. キーボードイベントでボタン間を移動する
- 23. UIAlertViewでViewController間を移動する
- 24. キュー間でメッセージを移動する
- 25. アプリストアアカウント間でアプリを移動
- 26. as3の別のオブジェクトとの関係でオブジェクトを移動する
- 27. .NET Frameworkへの移動
- 28. GridView内の異なるアイコン間でスムーズにフォーカスを移動する方法
- 29. ビットマップをイメージビュー内で移動する
- 30. 複数のUIImageViewオブジェクトを移動する