Я пытаюсь выполнить некоторую логику на нескольких AppDomains параллельно. Я делаю это, потому что я работаю с устаревшим кодом, который является «un-changeable», и я хочу улучшить производительность, распараллеливая некоторые вещи. Проблема в том, что если я запускаю несколько экземпляров в 1 AppDomain, все они полагаются на некоторые статические структуры данных и мешают друг другу.Ускоренная перекрестная связь AppDomain
Моя реализация проста. Я хочу запускать несколько экземпляров моего класса «ExecutionHarness» - каждый в своем собственном AppDomain - поэтому я создал класс «ExecutionHarnessProxy: MarshalByRefObject», который я создаю в каждом из своих AppDomains (поскольку ExecutionHarness не наследуется от MarshalByRefObject). Затем я просто передаю параметр «ExecutionData [] data» в метод «ExecutionHarnessProxy.Execute()». Затем этот парень называет «ExecutionHarness.Execute()», и все хорошо.
Моя проблема в том, что всякий раз, когда я передаю свой массив данных классу прокси, он принимает FOREVER. Класс ExecutionData имеет атрибут [Serializable], и функционально все это работает, но мне было интересно, есть ли способ ускорить это.
- Могло ли это быть быстрее, если бы я сериализовал/десериализовал себя по обе стороны границы AppDomain?
- Все это время потрачено на сериализацию? или это просто передача сериализованных данных между AppDomains?