Pregunta

Estoy tratando de averiguar la parte interna de la base del flujo de trabajo de Windows. Por lo tanto, tenemos algunos componentes de software y los entrelazamos en forma de flujo de trabajo, ya sea un flujo de trabajo secuencial basado en condiciones o un flujo de trabajo de máquina de estado. Ahora, estoy pensando (puedo estar equivocado aquí) que no se aplica lo mismo a la Inyección de dependencia IoC + (a través de Unity o Spring.net). ¿Cuándo usar qué? ¿Estoy pensando bien?

¿Fue útil?

Solución

No estoy seguro de entender la pregunta, pero lo intentaré de todos modos.

WF no utiliza un contenedor IOC. Utiliza el patrón ServiceLocator donde agrega dependencias al tiempo de ejecución del flujo de trabajo, el localizador de servicios y las actividades del flujo de trabajo y recupera estos servicios del tiempo de ejecución del flujo de trabajo.

Un patrón ServiceLocator y IOC son similares y tienen el mismo propósito en el desacoplamiento de dependencias. Sin embargo, el apporach es diferente en un contenedor IOC que empuja las dependencias mientras que un ServiceLocator se usa para extraer las dependencias.

Espero que esto responda a tu pregunta y, de no ser así, intentaría reformular la pregunta original.

Otros consejos

También estaba lidiando con la forma de usar los componentes provistos y mantenidos por mi contenedor IOC desde los flujos de trabajo. Como indica la otra respuesta, las instancias de flujo de trabajo desean utilizar el localizador de servicios para extraer servicios del tiempo de ejecución en lugar de tener las dependencias inyectadas.

Una forma fácil de cerrar la brecha es eliminar las dependencias de su contenedor IOC en el momento en que está configurando el tiempo de ejecución de WF y luego usar AddService para ponerlas en el tiempo de ejecución. Sus flujos de trabajo pueden anular OnActivityExecutionContextLoad, y usar el método GetService en el proveedor de servicios para recuperarlos fuera del tiempo de ejecución y colocarlos en propiedades públicas [No serializadas] en el flujo de trabajo. A continuación, tendrá acceso a los servicios desde las actividades de código, etc.

También puede ser capaz de instalar un servicio de tiempo de ejecución que inyecta dependencias cuando las instancias de flujo de trabajo están activadas.

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