2011-05-05 24 views
5

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?

Respuesta

2

De manera predeterminada, IIS apagará un proceso inactivo. Sin embargo, puede cambiar esto, pero aún corre el riesgo de que no se pueda garantizar que un proceso web se esté ejecutando. La configuración del proceso de trabajo debe ayudar a mantenerlo funcionando.

1

Use el Programador de tareas de Windows .... este es un ejemplo perfecto de para qué sirve. Puede hacer que llame a su ensamblado directamente o simplemente puede usarlo para llamar a un punto final WCF en su sitio web.

+0

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. –

+0

¿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

+0

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. –

Cuestiones relacionadas