2

複数の AppDomains でいくつかのロジックを並行して実行しようとしています。これを行っているのは、「変更不可能」なレガシー コードを使用しており、いくつかを並列化してパフォーマンスを向上させたいからです。問題は、1 つの AppDomain 内で複数のインスタンスを実行すると、それらはすべていくつかの静的データ構造に依存し、互いに干渉することです。

私の実装は簡単です。「ExecutionHarness」クラスの複数のインスタンスをそれぞれ独自の AppDomain で実行したいので、各 AppDomains でインスタンス化するクラス「ExecutionHarnessProxy : MarshalByRefObject」を作成しました (ExecutionHarness は MarshalByRefObject から継承されないため)。次に、「ExecutionData[] データ」パラメーターを「ExecutionHarnessProxy.Execute()」メソッドに渡します。その後、この男は「ExecutionHarness.Execute()」を呼び出し、すべて問題ありません。

私の問題は、データの配列をプロキシクラスに渡すたびに、永遠にかかることです。ExecutionData クラスには [Serializable] 属性があり、機能的にはすべて機能しますが、これを高速化する方法があるかどうか疑問に思っていました。

  1. AppDomain 境界の両側で、自分でシリアル化/逆シリアル化を行うと、より高速になりますか?
  2. このすべての時間はシリアライズに費やされていますか? それとも、AppDomains 間のシリアル化されたデータの転送だけですか?
4

1 に答える 1