workflow - tutorial - Un caso fuerte para WF
windows workflow foundation tutorial (5)
Desde la perspectiva de un no experto, hay dos cosas que me hacen pensar en WF, una exclusiva para las plataformas de flujo de trabajo, la otra tal vez más conveniente.
La función de conveniencia es la capacidad de crear nuevas formas de componer actividades. La programación imperativa proporciona solo un repertorio limitado de primitivas de composición: básicamente, secuenciación, if-else y bucles. WF le permite crear sus propios operadores de composición, como la ejecución intercalada, la ejecución paralela, la primera pasada, etc. Y, por supuesto, tiene el sofisticado mecanismo de composición de las máquinas de estado integradas.
Digo que esta es una característica de conveniencia porque puedes construir todos estos operadores en un lenguaje imperativo como C #: de hecho, así es como construyes los operadores de WF. Pero WF hace que sea fácil de usar y para leer composiciones personalizadas, mientras que en C # se reduciría rápidamente en una lluvia de expresiones lambda. Entonces, si tiene requisitos complejos de orquestación, es decir, si la forma en que encajan sus actividades es más complicada que las secuencias, si-else y loops, entonces WF puede hacer que su programa sea más fácil de expresar y comprender.
La característica única es la durabilidad . Aquí es de donde parte el libro de Shukla y Schmidt, y de dónde sigue volviendo. Un programa imperativo escrito en C # o VB puede ejecutarse durante horas, días, semanas si tiene suerte, tal vez incluso meses ... pero finalmente IIS va a realizar un ciclo del grupo de aplicaciones, o los administradores van a querer instalar las últimas actualizaciones de seguridad , o alguien va a tropezar con el cable de alimentación. ¿Cómo recuerda su programa, "está bien, tengo la orden de compra de Unimaginative Company Names R Us, y estoy esperando una aprobación de crédito de Bank of Breadheads Inc., y cuando lo reciba puedo enviar la confirmación correo electrónico"?
En un programa imperativo convencional, cuando el proceso muere, el estado de ejecución muere con él. Puede comenzar un nuevo proceso, pero comenzará al comienzo del programa. Claro, puede crear una base de datos y usarla para almacenar indicadores como "orden de compra obtenida" y "aprobación de crédito". Pero ahora debe escribir el código específico de la aplicación para guardar y consultar el estado, y volver al punto correcto del programa según ese estado. Y debe diseñar una nueva base de datos y una nueva lógica de guardar / restaurar / saltar para cada aplicación de larga ejecución.
El flujo de trabajo duradero trata de abordar este problema. Si escribe su programa como un flujo de trabajo de actividades, entonces WF se ocupará de persistir en su estado, incluyendo dónde está en su flujo de ejecución. La máquina que ejecuta el programa puede incendiarse y quemar su centro de datos, pero cuando entre la respuesta del banco, WF activará su programa en su otro centro de datos y comenzará a funcionar en el lugar correcto y con la derecha. datos.
Eso para mí es el "caso fuerte" para WF. En muchos casos, no lo necesita: las aplicaciones son lo suficientemente efímeras como para que la falla no sea una preocupación importante, y reiniciar desde cero es una estrategia de recuperación viable. Pero para aplicaciones de larga duración, como dónde puede estar orquestando sistemas externos que pueden tomar horas para responder, o procesos comerciales que involucran a humanos que pueden llevar días responder, la durabilidad puede ser la característica principal de WF.
Descargo de responsabilidad: no soy un programador de WF y nunca he construido un sistema de WF en el mundo real. Me refiero a esto desde un fondo de BizTalk, y por lo que he leído sobre WF, por lo que esta evaluación es un tanto teórica. Espero que ayude de todos modos!
He luchado durante tanto tiempo para encontrar un caso de uso convincente para el flujo de trabajo (es decir, WF) en comparación con la programación imperativa regular. Cada vez que vuelvo a la conclusión de que debería dejar WF o diferir entrar en él hasta más tarde. Pero sigo teniendo la sensación de que me falta algo.
¿Alguien conoce algún libro que realmente sea un buen argumento para el modo Workflow? El libro tiene que (i) enseñar bien a WF, y (ii) mostrar usando casos de uso apropiados que WF hizo una implementación fácil de hacer que si simplemente hiciéramos nuestra codificación regular regular.
Lo agradeceré.
Esta tampoco es una respuesta directa, pero podría ser útil si busca otros recursos. Para mí, parece que WF se basa bastante en los conceptos introducidos en Business Process Execution Language (BPEL) . Esta norma ha existido por mucho más tiempo que WF, y cualquier uso de BPEL debería darle una idea de para qué usar WF.
No he usado WF, pero cuando jugué un poco con BPEL, me resultó difícil de usar. Esto se debió principalmente al soporte de la herramienta (encontré que faltaba el complemento de eclipse para el modelado visual). Cuando combina esto con el hecho de que es difícil leer el código en XML en comparación con la "sintaxis del lenguaje de programación normal", entonces BPEL no era una solución viable. Si WF tiene una buena herramienta visual, entonces este problema al menos ha sido resuelto.
Las buenas razones son: visión visual de sus procesos comerciales. Incluso puede hacer que su cliente, el experto en el dominio, edite el flujo de trabajo con el diseñador; reinicie la aplicación y hágalo funcionar sin recompilar
Buen libro: Bruce Bukowics Y mi favorito absoluto: PRO C # 2010 y el .NET 4 tiene un excelente capítulo
No conozco un libro específicamente sobre este tema. Sin embargo, creo que parte del atractivo de WF (u otros productos de flujo de trabajo) es que reintroduce la posibilidad del paradigma de acoplamiento libre, basado en mensajes, en el que estaban interesados los chicos originales de OO (como Alan Kay).
El concepto de "mensaje" que se transmite no es inmediatamente obvio en WF. Sin embargo, la noción de objetos que actúan como máquinas discretas es.
Para un libro impresionante (pero algo loco) sobre el estado de OO, vea Object Thinking por David West . Y vea here la discusión de Alan Kay sobre lo que OO significa para él.
No estoy seguro de si hay una buena respuesta a su pregunta. El problema no es que la pregunta no sea válida o algo así porque estás pidiendo dos cosas muy diferentes.
Antes que nada, solicite razones convincentes para usar el flujo de trabajo. Esta es una pregunta muy subjetiva y no relacionada con la tecnología en absoluto. Puede encontrar documentos en la web que indiquen todo tipo de implementaciones de flujo de trabajo exitosas y sin éxito. Esto es independientemente de la tecnología, una solución que se hizo usando algún producto X podría haberse hecho con el producto Y. El capítulo de Shukla y Schmidt ciertamente explica los fundamentos, pero no estoy seguro de que sea un buen libro que te muestre dónde y cómo aplicar el flujo de trabajo.
En segundo lugar, está buscando un libro para enseñarle Windows Workflow Foundation. La primera pregunta es WF3 o WF4 ya que son bestias muy diferentes. Asumiré WF4 porque reemplazará WF3 cuando se lanza .NET 4 (muy pronto) y comenzar con WF3 no tiene mucho sentido en la mayoría de los casos. Pero como WF3 nunca fue muy populair y el mercado de libros no es muy rentable para la mayoría de los escritores, todavía no hay libros de WF4. Creo que Bruce Bukovics está trabajando en una nueva versión de su Pro WF: Windows Workflow en el libro .NET 3.5 , que encontré uno de los libros WF3 más útiles. Hasta el momento, no hay nada y estás atrapado con los documentos, extremadamente limitados, en el sitio msdn y el blog como el mío here . Y, por supuesto, hay un curso como this de DevelopMentor (nota: el plug desvergonzado ya que soy el autor principal del curso)
Proporcioné una serie de razones en esta respuesta here , estas pueden ayudar un poco.
No es exactamente una respuesta a su pregunta, pero espero que todo esto siga siendo útil para usted.