asp.net - scheduled - quartz asp net
"Out of Band" Processing Techiniques para aplicaciones asp.net (9)
Jeff previamente escribió un blog sobre el uso del caché para realizar el procesamiento "fuera de banda" en sus sitios web. Sin embargo, me preguntaba qué otras técnicas usan las personas para procesar este tipo de tareas.
El problema con las tareas programadas o las tareas cron es que no comparten espacio de memoria con el servidor web. Podría configurar una tarea programada que solicitara páginas del servidor web, pero eso podría crear problemas con las tareas de ejecución prolongada. Sería bueno tener algunos subprocesos de baja prioridad que se ejecutan en la pila de aplicaciones ASP.Net real para realizar tareas sencillas de utilidad como limpiar cachés, supervisar recursos y simplemente ocuparse del mantenimiento general.
Hace años, vi a Rob Howard describir una forma de utilizar un HttpModule para procesar tareas en segundo plano. No parece tan ingenioso como usar el caché, pero podría ser mejor para ciertas circunstancias.
Esta publicación de blog tiene los detalles, y hay muchos otros que capturan la misma información si miras alrededor.
Servicio de Windows
Tareas programadas o trabajos cron.
si se trata principalmente de tareas de procesamiento de datos y está utilizando MSSQL, ¿qué hay de las tareas programadas de SSIS?
Archivos de cola simples junto con un agente separado. Para cada tipo de proceso fuera de banda, escriba un agente independiente .exe que mire un directorio para los archivos de la cola que incluya los datos necesarios para realizar el proceso especificado.
Esto puede parecer sucio, pero en el mundo real creo que proporciona mucha flexibilidad, no se está procesando mucho en el espacio de proceso de ASP.net y se puede adaptar fácilmente este estilo al procesamiento de la granja en servidores Linux baratos que ejecutan el proceso de agente en Mono para cuando necesite más RAM / CPU / disco.
Es posible que desee ver cómo lo hace DotNetNuke . Sé que está escrito en VB.NET, pero modifiqué el código en C #. Estaba leyendo detenidamente la fuente y noté que tenían una función en su área de administración para configurar las tareas programadas. Estas tareas se configuran a través de la interfaz de administración y se almacenan en la base de datos. Cuando el sitio comienza, a través del archivo Global.asax, crean otro hilo para ejecutar este servicio que luego ejecuta las tareas programadas a la hora programada. No recuerdo la lógica exacta, ha pasado un tiempo, pero definitivamente es un buen recurso sobre cómo otras personas han realizado procesos fuera de banda para las aplicaciones Asp.Net. Esta técnica aún mantiene la lógica dentro de la aplicación Asp.Net, pero se agota en mi opinión.
Si está más cómodo con las páginas de asp.net, puede escribir una aplicación pequeña para manejar su trabajo y luego "hacer ping" a la aplicación con un servicio externo que supervise su sitio web. Esto mantendrá la aplicación viva.
- Tareas programadas usando http://www.codeproject.com/KB/cs/tsnewlib.aspx o schtasks.exe .
- Quartz.NET
- MSMQ
- Trabajos de SQL Server
- Servicio de Windows
- System.Threading.Timer o System.Timers.Timer
- System.ComponentModel.BackgroundWorker
- Llamadas y devoluciones de llamada asincrónicas