Bien, un poco de fondo aquí. Tengo una aplicación web a gran escala (MVC3) que hace todo tipo de cosas sin importancia. Necesito que esta aplicación web tenga la capacidad de programar trabajos Quartz.NET ad-hoc en una base de datos Oracle. Luego, deseo que los trabajos se ejecuten más tarde a través de un servicio de ventanas . Idealmente, me gustaría programar que se ejecuten en intervalos regulares, pero con la opción de agregar trabajos a través de la aplicación web.Tricky Quartz.NET Escenario
Básicamente, la arquitectura deseada es alguna variación de esto:
aplicación Web < -> Quartz.NET < -> Base de datos < -> Quartz.NET < -> servicio de Windows
Lo que he codificado hasta ahora:
- Un servicio de Windows que (por el momento) programa Y ejecuta los trabajos. Obviamente, este no será el caso a largo plazo, pero me pregunto si puedo mantener esto y modificarlo para que básicamente represente a ambos "Quartz.NET" en el diagrama anterior.
- La aplicación web (supongo detalles no son muy importantes aquí)
- Los puestos de trabajo (que en realidad son simplemente otro servicio ventanas)
Y un par de notas importantes:
- TIENE que ejecutarse desde un servicio de Windows, y TIENE que programarse a través de la aplicación web (para reducir la carga en IIS)
- La arquitectura de arriba se puede reordenar un poco, suponiendo que el ab ove bala todavía se aplica.
Ahora, algunas preguntas:
- Es esto posible?
- Asumiendo (1) pasa, ¿qué piensan ustedes que es la mejor arquitectura para esto? Vea la primera viñeta en lo que he codificado.
- ¿Puede alguien darme algunos métodos de Quartz que me ayuden a consultar el DB para que los trabajos se ejecuten una vez que ya están programados?
Habrá una recompensa en esta pregunta tan pronto como sea elegible. Si la pregunta es respondida de manera satisfactoria antes de esa fecha, aún otorgaré la recompensa al cartel de la respuesta. Entonces, en cualquier caso, si das una buena respuesta aquí, obtendrás una recompensa.
Bien, algunas preguntas primero. ¿Qué es, según usted, un trabajo de Quartz? Hice una investigación rápida sobre esto y parece que un trabajo Quartz.Net es una implementación auto escrita de una interfaz. El proyecto de Quartz es la parte que hace la programación. Los trabajos se pueden almacenar en una base de datos Oracle con el uso de ADO.net de acuerdo con la página principal del proyecto. ¿Cuál es tu problema real aquí? – Remco
Bueno, estoy tratando de descubrir cómo dividir las cosas de Quartz para que una entidad las planifique y otra entidad las ejecute. Normalmente, simplemente hago algo como: _scheduler.ScheduleJob (jobDetail, trigger); Pero eso lo configura para disparar automáticamente de vez en cuando, dependiendo de 'trigger'. Me gustaría mantener esa funcionalidad, pero también obtener la funcionalidad para programar trabajos sobre la marcha –
Y el trabajo de cuarzo en mi caso es un servicio de Windows que purga archivos innecesarios del sistema –