El tiempo de ejecución de ASP.NET está pensado para cargas de trabajo breves que se pueden ejecutar en paralelo. Necesito poder programar eventos periódicos y tareas en segundo plano que pueden o no ejecutarse por períodos mucho más largos.Diseño de una biblioteca de tareas asíncrona para ASP.NET
Teniendo en cuenta lo anterior tengo los siguientes problemas a tratar:
- El dominio de aplicación puede apagar debido a los cambios (Web.config, BIN, App_Code, etc.)
- IIS recicla el AppPool en una con regularidad (diaria)
- IIS sí podría reiniciar, o para el caso el servidor puede bloquearse
no estoy convencido de que la ejecución de este código dentro de ASP.NET no es lo que hay que hacer, becuase permitiría un modelo de programación más simple. Pero hacerlo requeriría que un servicio externo realice periódicamente solicitudes a la aplicación para que la aplicación se mantenga en funcionamiento y todas las tareas en segundo plano se programen con la máxima atención. Tendrán que poder pausar y reanudar su trabajo, en el caso de un error inesperado.
Mi actual línea de pensamiento es algo como esto:
Si todos los puestos de trabajo están registrados en la base de datos, debe ser posible utilizar la base de datos como un mecanismo de contabilidad. En el caso de un error, la base de datos contendría todo el estado necesario para reanudar la operación en la próxima oportunidad dada.
Realmente recomiendo algunos comentarios/consejos sobre este asunto. He estado considerando ejecutar un servicio de Windows y también usar alguna solución RPC, pero no tiene el mismo atractivo para mí. Y en cambio, tendría muchos problemas de implementación y tareas de sincronización y código para cruzar varias aplicaciones. Debido a las necesidades de mi negocio, esto es menos que óptimo.
+1 para el enlace al artículo sobre la ejecución del procedimiento asíncrono. –
Eso es asombroso, desafortunadamente no todas las tareas en segundo plano pueden escribirse solo en T-SQL, muchas de ellas probablemente podrían hacerlo, pero ahora, tenemos soporte de depuración limitado para T-SQL, así como, cosas que tienen que estar en C# código, como enviar correos electrónicos. Además, algunas de estas transformaciones que hacemos realmente se ven torpes en SQL y, a menudo, nos resultan más fáciles de mantener usando el código C#. Sobre las tablas como colas, hice algo similar en el pasado, pero no he visto estas variaciones antes, gracias por los enlaces. –
La activación también puede iniciar procedimientos CLR, y también hay un activador externo que puede iniciar procesos normales (.exe): http://blogs.msdn.com/b/sql_service_broker/archive/2008/11/21/announcing- service-broker-external-activator.aspx –