Hola gente.. disculpen pero el tiempo me lleva de la mano y corriendo..
Gracias a todos por las contestas..
Lo del WWF ya lo voy a mirar aunque no lo use.. por el average de
recomendaciones lo hace parecer importante.. ;)
Bien.. Me llegó un correo de Sebastian (al cual le debo aún las gracias), al
parecer mediante alguien de acá de la lista con algunas ideas sobre la
implementación.
Por ejemplo.. en mi caso, era necesario tener en cuenta la ejecución de
múltiples tareas al mismo tiempo, e incluso la definición de un time-out para
tareas que se queden colgadas(sin responder).
Por desgracia no puedo servirme de ningún servidor de Base de datos.. toda mi
configuración estará en XML.
Hasta ahora tengo.. Un Comando(Tarea), Un Procesador de tareas, un ejecutor y
un programador, con las siguientes responsabilidades..
El ejecutor: Ejecuta los comandos(lanza la tarea en un hilo independiente),
registra el resultado de dicha tarea (si hay errores, pregunta a la tarea si
soporta Undo y en tal caso lo ejecuta para revertir los cambios). Cada ejecutor
conoce del tiempo destinado para la tarea que procesa, por lo que si se
sobrepasa este tiempo, obliga a la misma a terminar (time-out).
El programador : Es quien se encarga de determinar las tareas que son
necesarias ejecutar. Dichas tareas son pasadas al procesador de tareas.
El procesador de tareas: Tiene una lista de las tareas a ejecutar, recorre cada
una creando un ejecutor para cada cual y diciéndole a este que comience a
ejecutar la tarea.
De cualquier forma se aceptan sugerencias.. igual han sido muy buenos todos los
comentarios..
Gracias a todos.
Omar..
----- Original Message -----
From: Carlos Peix
To: patrones List Member
Sent: Thursday, February 01, 2007 8:42 AM
Subject: [patrones] Command
Hola Omar,
Las respuestas que te han dado son mas que correctas, yo solo te contare una
experiencia de implementacion. Yo he implementado algo asi recientemente y tuve
que decidir entre dos opciones.
Todos los comandos se ejecutaban en el orden en que habian sido cargados,
solo que cada comando tenia una hora de ejecucion y habia que esperar hasta esa
hora para sacarlos y ejecutarlos.
La primera opcion fue una MSMQ en la que almacenaba los comandos serializados
(con la serializacion de MSMQ). Luego los sacaba de acuerdo a la hora
(almacenaba la hora en el label del mensaje).
La opcion MSMQ funciona mejor si sacas los comandos en forma ordenada, so
tenes que sacarlos de cualquier lugar de la cola (porque deben ser ejecutados
en un orden diferente a la insersion) no es tan bueno.
Luego hice otra implementacion de la cola basada en una tabla de SQLServer.
Alamacenaba los mensajes serializados y hacia queries de acuerdo a la hora de
ejecucion.
Por supuesto, para esto necesitas un servicio windows o una aplicacion de
consola que se ejecute y realice estas tareas.
Otra opcion es mirar WWF como recomienda Martin "Agile" Salias.
Carlos
----------------------------------------------------------------------------
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Omar del
valle Rodríguez
Sent: Miércoles, 31 de Enero de 2007 01:40 p.m.
To: patrones List Member
Subject: !-> [patrones] Command
Hola gente..
Estoy haciendo un servicio que se encarga de de manejar tareas. Cada tarea
será independiente del servicio que la maneja y el mismo debe soportar
adicionar nuevas tareas que sean desarrolladas posteriormente..
Como no tengo problemas en pedir que cada tarea debe cumplir determinados
requerimientos, pensé en el uso de Command para dicha implementación por
permitirme encapsular la petición como un objeto y parametrizar el cliente sin
necesidad de saber yo que operación realizará..
Ahora.. cada tarea debe ser ejecutada en determinados momentos que se
indiquen mediante configuración. Algo como el Scheduled Task de Windows.. mi
duda es.. como encaja el Scheduled dentro del command.??
Gracias..
Omar..