Pregunta

Estoy tratando de ejecutar alguna lógica en múltiples dominios de aplicación en paralelo. Estoy haciendo esto porque estoy trabajando con el código heredado que es "no-cambiante" y quiero mejorar el rendimiento mediante la paralelización de algunas cosas. El problema es que si me quedo varias instancias dentro de 1 dominio de aplicación que todos se basan en algunas estructuras de datos estáticas e interfieren con unos de otros.

Mi aplicación es sencilla. Quiero ejecutar varias instancias de mi clase "ExecutionHarness" - cada uno en su propio dominio de aplicación - así que creé una clase "ExecutionHarnessProxy: MarshalByRefObject", que me instanciar en cada uno de mis dominios de aplicación (desde ExecutionHarness no hereda de MarshalByRefObject). Entonces sólo tiene que pasar el parámetro "ExecutionData [] de datos" con el método "ExecutionHarnessProxy.Execute ()". Este tipo se llama "ExecutionHarness.Execute ()" y todo está bien.

Mi problema ahora es que cuando paso mi matriz de datos de la clase de proxy, se necesita siempre. La clase ExecutionData tiene el atributo [Serializable], y funcionalmente funciona todo, pero me preguntaba si hay alguna manera de acelerar este proceso.

  1. ¿Podría ser más rápido si lo hiciera la serializar / deserializar a mí mismo, a ambos lados de la frontera dominio de aplicación?
  2. ¿Es todo esto el tiempo dedicado a hacer la serialización? o es sólo la transferencia de los datos serializados entre dominios de aplicación?
¿Fue útil?

Solución

Es difícil saber sin más información, pero de lo que describes, yo sospecharía la matriz ExecutionData es el culpable.

Cada vez que se llama a un método que requiere estos datos, serializará los datos en el dominio de aplicación, y potencialmente a salir así. Si esta matriz es grande, que puede comer un poco de tiempo de procesamiento.

Sería mejor si los datos pueden ser cargados directamente en cada dominio de aplicación, y sólo pasar los resultados de la ejecución de nuevo en su dominio de aplicación principal. Si se puede evitar pasar matrices de datos entre los dominios de aplicación, es probable que acelerar dramáticamente el proceso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top