我正在尝试在多个 AppDomain 上并行执行一些逻辑。我这样做是因为我正在使用“不可更改”的遗留代码,并且我想通过并行化一些事情来提高性能。问题是,如果我在 1 个 AppDomain 中运行多个实例,它们都依赖于一些静态数据结构并相互干扰。
我的实现很简单。我想运行我的“ExecutionHarness”类的多个实例——每个实例都在它们自己的 AppDomain 中——所以我创建了一个类“ExecutionHarnessProxy:MarshalByRefObject”,我在每个 AppDomain 中实例化它(因为 ExecutionHarness 不继承自 MarshalByRefObject)。然后我只是将“ExecutionData[] data”参数传递给“ExecutionHarnessProxy.Execute()”方法。然后这个人调用“ExecutionHarness.Execute()”,一切都很好。
我现在的问题是,每当我将我的数据数组传递给代理类时,它都需要永远。ExecutionData 类具有 [Serializable] 属性,并且在功能上它都可以工作,但我想知道是否有任何方法可以加快速度。
- 如果我自己在 AppDomain 边界的两侧进行序列化/反序列化,会更快吗?
- 所有这些时间都花在序列化上吗?还是只是AppDomains之间序列化数据的传输?