Creé un servicio de Windows para un cliente nuestro que recopila todas las filas nuevas/cambiadas de la base de datos, las convierte en un CSV y el FTP las carga en algún lugar todas las noches. Ahora resulta que no tienen acceso para instalar o ejecutar un servicio de Windows (es una solución hospedada solo de ruta web).¿Se puede ejecutar un "servicio" que ejecuta una tarea programada desde un proyecto ASP.Net?
Pensé que sería bastante fácil modificar el código de servicio de Windows para ejecutarlo dentro del proceso ASP.Net y crear una instancia desde Global.asax (he hecho esto en el pasado, alojando un servicio WCF desde dentro de un MVC proyecto). Estamos en ASP.Net 4.0, usando formularios web, y esta tarea ejecuta Quartz y OpenPG todas las noches a la medianoche (u otra hora configurada).
A mi jefe le preocupaba el proceso de alojamiento durante el tiempo de inactividad durante el cual nadie golpeaba el sitio. Estoy bastante seguro de que esto no sucede, pero no lo sé con absoluta certeza.
¿Funcionará como estoy pensando, o habrá algún problema para implementarlo de esta manera?
Gracias!
Editar: Sé que "puede" (crear un objeto y llamar a un método que no bloquea la ejecución de Application_Start que dispara un temporizador o hilo de fondo o algo así y ejecuta código en segundo plano) pero es bueno idea y el proceso de hosting ASP.Net dormirá/matará el hilo en el que se está ejecutando? Si es así, ¿puedo generar un nuevo hilo (ya sea crear mi propio hilo, o consumir uno del grupo) y hacer que se ejecute infinitamente sin que lo maten?
El cliente solo tiene una solución alojada en la web, sin VM, sin escritorio, nada. Si tuviéramos acceso al programador de tareas, probablemente tendremos acceso a la instalación del Servicio de Windows. –
¿Parece que necesita un proveedor de hosting diferente, tal vez? ¿Cuánto control de base de datos tienes? ¿Puedes programar un trabajo en la base de datos para hacerlo? – DancesWithBamboo
Somos una tienda profesional, claramente no adoptaríamos ese enfoque, pero el cliente decidió contratar un host con algún proveedor de hosting. Entonces ninguno. –