Tengo una aplicación de servicio C# que interactúa con una base de datos. Recientemente se migró de .NET 2.0 a .NET 4.0, por lo que hay muchas herramientas nuevas que podríamos usar.Qué herramientas de C# existen para desencadenar, poner en cola, priorizar tareas dependientes
Busco punteros a métodos de programación o herramientas/librerías para manejar la definición de tareas, las tareas de configuración de los que dependen, haciendo cola, dando prioridad, cancelación, etc.
Hay varios tipos de servicios:
- datos (para recuperar y actualizar)
- cálculo (poblar alguna tabla con los resultados de un cálculo sobre los datos)
- informes
Estos servicios a menudo dependen el uno del otro y se activan en la demanda, es decir, un informes tarea, probablemente tendrá código dentro de él, como
if (IsSomeDependentCalculationRequired())
PerformDependentCalculation(); // which may trigger further calculations
GenerateRequestedReport();
Además, cualquier Datos modificación es probable que establezca el Required
indicador en algunos de los Cálculo o Informes servicios, (por lo que el informe podría estar desactualizado antes de que termine de generar). Las tareas varían en duración de algunos segundos a un par de minutos y se realizan dentro de las transacciones.
Esto ha funcionado bien hasta ahora, pero no está escalando bien. Hay problemas de diseño fundamentales y estoy buscando reescribir esta parte del código. Por ejemplo, si dos usuarios solicitan el mismo informe en momentos similares, las tareas dependientes se ejecutarán dos veces. Además, actualmente no hay forma de cancelar una tarea en progreso. Es difícil mantener las tareas dependientes, etc.
No estoy buscando sugerencias sobre cómo implementar una solución. Más bien, estoy buscando indicadores sobre qué herramientas/bibliotecas utilizaría para este tipo de requisitos si comenzara en .NET 4 desde cero. ¿Sería este un buen candidato para Windows Workflow? ¿Es esto para lo que es Futures? ¿Hay alguna otra biblioteca que deba ver o libros o publicaciones de blog que deba leer?
Editar: ¿Qué hay de Rx Reactive Extensions?
Basado en una demostración que vi de Workflow, parece una buena combinación para sus requisitos, pero como en realidad no lo he usado, lo estoy ofreciendo como un comentario y no como una respuesta ... para qué merece la pena. –
Probablemente sea útil si puede comentar un poco más las respuestas individuales. De esa forma podemos elaborar en la dirección correcta. – usr
¿Qué pasa con [Extensiones reactivas de Rx] (http://msdn.microsoft.com/en-us/data/gg577609)? ¿Es ese el mejor enfoque para mis requerimientos? – shamp00