ピロAppDomain通信
-
18-09-2019 - |
質問
I amを実行しようとしたところ一部ロジックに複数のAppDomains。んでいるのはこの私は従来のコードである"国連の変更"とい性能向上による並列化の一部となる。問題はい複数のインスタンス内の1AppDomainいなものデータ構造に支障をきたすeachother.
私の実装が簡単です。に走りたいインスタンスが複数の"ExecutionHarness"クラスはそれぞれのAppDomainで作成したクラス"ExecutionHarnessProxy:MarshalByRefObject"のインスタンスを生成し、ひとりひとりのAppDomains(年ExecutionHarnessんからは継承しMarshalByRefObject).それだけに"ExecutionData[]データ"パラメータの"ExecutionHarnessProxy.Execute()の方法である。内容はこちらからご確認くださの呼び出"ExecutionHarness.Execute()"全てが良いです。
私はずしていただくために私の配列のデータは、プロキシクラスです。のExecutionDataクラスは、[直列化可能]の属性、機能的で全てが破壊も修復もおもしろくないため高速度ます。
- が入っているのか、それとも速いかったのserialize/直列化復元すが、自分の両側にAppDomain境?
- はこの時間って直列化?それとも、移動の直列化されたデータとAppDomains?
解決
これは、より多くの情報なしに知ることは困難ですが、あなたが記述しているものから、私はExecutionData
配列が犯人である疑いがあると思います。
あなたがこのデータを必要とするメソッドを呼び出すたびに、潜在的に戻って同様のAppDomainにデータをシリアライズ、およびます。この配列が大きい場合、すなわち処理時間のかなりを食べることができます。
これは、データが各アプリケーションドメインに直接ロードすることができれば良くなる、とだけ自分のメインのAppDomainに戻って実行結果を渡します。あなたがのAppDomain間のデータの受け渡し配列を避けることができれば、あなたは可能性が劇的にプロセスをスピードアップされます。