tiempo - Quartz.NET vs Windows tareas programadas. ¿Qué tan diferentes son?
quartz asp net (4)
Con Quartz.NET pude contrastar algunos de los puntos anteriores:
- Código para escribir: puede expresar su intención en lenguaje .NET, escribir pruebas unitarias y depurar la lógica
- La integración con el registro de eventos, tiene Common.Logging que permite escribir incluso a db ..
- Robusto y confiable también
- API aún más rica
Es sobre todo una pregunta sobre lo que necesitas. Las tareas programadas de Windows pueden darle todo lo que necesita. Pero si necesita agrupación (trabajadores distribuidos), control detallado sobre las reglas de activación o manejo incorrecto de fuego, es posible que desee comprobar lo que Quartz.NET tiene para ofrecer en estas áreas.
Tome lo más simple que cumpla con sus requisitos, pero lo suficientemente abstracto para permitir el cambio.
¿Estoy buscando alguna comparación entre Quartz.NET y las tareas programadas de Windows?
¿Qué tan diferentes son? ¿Cuáles son los pros y los contras de cada uno? ¿Cómo elijo cuál usar?
TIA,
Desafortunadamente, los ensamblajes de trabajo de Quartz.NET no se pueden actualizar sin reiniciar el proceso / host / servicio. Eso es bastante grande para algunas personas (incluido yo mismo).
Es completamente posible crear un marco para trabajos que se ejecutan bajo el Programador de tareas. Los ensamblajes basados en MEF pueden ser llamados por una sola aplicación de consola, con todo administrado mediante una interfaz de usuario de configuración. Aquí hay una envoltura gestionada popular:
Disfruté mi breve tiempo de trabajo con Quart.NET, pero el requisito de reinicio era un problema demasiado grande para superar. Marko ha hecho un gran trabajo con él a lo largo de los años, y siempre ha sido servicial y receptivo. Tal vez algún día el proyecto obtenga soporte para múltiples AppDomain
, lo que solucionaría este problema. (Dicho esto, promete ser mucho trabajo. Felicitaciones a él y sus colaboradores si deciden asumirlo).
Parafraseando a Marko, si necesitas:
- Agrupación (trabajadores distribuidos)
- Control de grano fino sobre las reglas de disparo o manejo incorrecto
... entonces Quartz.NET será su requerimiento.
Mi primera reacción sería intentar que el WinScheduler integral funcione con sus necesidades antes de instalar otro programador: el razonamiento:
- no requiere instalación - instalado y habilitado por defecto
- No hay código para escribir - trabajos expresados como metadatos
- integración con el registro de eventos, etc.
- Robusto y confiable, lo suficientemente bueno para MSFT, Google, etc.
- API razonablemente rica: crear trabajos, verificar el estado, etc.
- Integrado con herramientas de gestión remota.
- integración de seguridad: ejecute trabajos en diferentes credenciales
- herramientas de monitoreo
Luego acércate a Quartz si no satisface tus necesidades. El cuarzo ciertamente tiene muchas de estas características también, pero evite agregar otro servicio que pueda poseer y administrar, si puede.
Una distinción importante, para mí, que no se incluye en las otras respuestas es lo que ejecuta el programador.
El Programador de tareas de Windows solo puede ejecutar programas y scripts ejecutables. El código escrito para su uso dentro de Quartz puede interactuar directamente con los componentes .NET de su proyecto.
Con el Programador de tareas, tendrás que escribir un ejecutable de shell o un script. Dentro de ese shell, puedes interactuar con los componentes de tu proyecto. Si bien escribir este código de shell no es un proceso difícil, debe considerar la implementación de archivos adicionales.
Si anticipa agregar más tareas programadas durante la vida útil del proyecto, puede que necesite crear shells o archivos de script ejecutables adicionales, que requieren actualizaciones para el proceso de implementación. Con Quartz, no necesita estos archivos, lo que reduce el esfuerzo total necesario para crear e implementar tareas adicionales.