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