Estoy en el proceso de desarrollar la arquitectura de un sitio web y me he encontrado con algo que nunca había hecho antes con ASP.NET. Lo que me gustaría hacer es ejecutar todas las noches una consulta contra entidades en una tabla de base de datos para verificar una columna de fecha y realizar una acción X o Y, dependiendo de cuál sea la fecha. Básicamente, quiero que se llame a una función una vez por noche. Todo lo que he buscado me ha llevado en algunas direcciones diferentes que parecen extremadamente complejas para una acción tan simple o se inclinan más hacia la cola de trabajos, que no es exactamente lo que quiero.

Cualquier sugerencia es bienvenida, solo buscando el enfoque más simple. ¡Gracias!

7
Chiggins 26 ene. 2016 a las 00:18

2 respuestas

La mejor respuesta

Puedo pensar en tres opciones diferentes.

  1. Si el trabajo que está haciendo está puramente relacionado con la base de datos, la mayoría de las plataformas de base de datos como Microsoft SQL Server, Oracle, etc. tienen la capacidad de programar trabajos que se ejecutan a intervalos regulares. Estos trabajos pueden ser sentencias SQL o procedimientos almacenados. MS SQL Server también le permitiría llamar al código C # desde un procedimiento almacenado, lo que sería útil.

  2. Utilice el sistema operativo para programar. Windows tiene trabajos del Programador de Windows (el {{ X0}}) y Unix tiene trabajos cron. Puede programar un ejecutable para que se ejecute todas las noches, que ejecutará código C # o código SQL.

  3. Escriba su propio servicio de programación. Este servicio se ejecutaría todo el tiempo como un servicio de Windows y ejecutaría algún código a intervalos regulares. Consulte los marcos de programación como Quartz.net, que pueden ayudar a organizar algunos de los detalles de la programación.

6
Mike Christensen 25 ene. 2016 a las 21:24

He usado Hangfire en un proyecto antes para hacer cosas como esta. Es absolutamente increíble y mantiene todo su código en una sola solución (sin jugar con los servicios de Windows), lo recomiendo ampliamente.

11
Barry 25 ene. 2016 a las 23:46