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