2012-03-06 17 views
8

¿Cuál es el enfoque recomendado para el proceso que lleva mucho tiempo en ejecutarse? No quiero simplemente ejecutarlo en el servidor ya que la página se apagará.Tareas de larga ejecución: mejor práctica: ASP.NET 4.0, C#

me levantase la web y encontrar múltiples enfoques - AJAX, roscado, Servicios Web ... (ninguno de los cuales tiene experiencia con)

¿Cuál es el mejor método de la práctica de hacer frente a esto?

Gracias.

Respuesta

4

Una forma transparente y confiable es implementar la tarea deseada junto con la cola de procesamiento como WebService. Por lo tanto, en el lado del cliente puede simplemente enviar una solicitud al servidor web, recibir una identificación a cambio para verificar el resultado más tarde.

Todo lo demás depende de la experiencia de usuario que intente implementar. Simplemente puede dejar que el usuario actualice el control o la página completa de vez en cuando presionando un botón. O implemente un control basado en jaja que envía solicitudes y verifica los resultados de vez en cuando por sí mismo.

+0

Gracias por la respuesta. Como mencioné, encontré servicios web como una opción. Estoy específicamente buscando saber si esta es la mejor práctica o no. Una vez que lo sepa, lo analizaría más a fondo (¿usaría la nueva API web?) Mi situación es que el usuario cargará grandes archivos de Excel al servidor y agregará registros a la base de datos. – Rivka

+0

Echa un vistazo a esto también: http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx –

1

Según sus requisitos, puede simplemente configurar un servicio web (o, más exactamente, un WCF service ya que los servicios web XML normales están en desuso), como se menciona en pukipuki.

Si el proceso prolongado es complicado (muchos pasos, muy intensivos, algo que podría ser transferido a otros servidores) o necesita ser robusto (el trabajo puede fallar y necesita ser reintentado, etc.) es posible que desee para ver cómo funciona alguna forma de Message Queue Server para controlar el flujo de entrada y salida del servicio que realiza el proceso de ejecución prolongada. Message Queue Server es ciertamente excesivo en algunas situaciones, pero también es un buen marco que proporciona almacenamiento de mensajes, persistencia y control de flujo para que no tenga que compilarlo todo usted mismo. Here es una muy buena descripción de cómo usar MSMQ con ASP.NET (lo siento, pero el código de muestra parece ser VB y no C#).

8

Si solo está tratando de hacer una tarea larga, un servicio de Windows es perfecto para esto. No, no es un servicio web sino un servicio de Windows de la vieja escuela. Cuando alguien carga un Excel, su Servicio de Windows puede monitorear un directorio usando FileWatcher, y luego ejecutar el proceso de importación automáticamente. De esta forma, no está limitando su proceso a ASP.NET y los procesos de trabajo de IIS, que pueden reciclarse por varias razones. Parece que su aplicación realmente necesita estar fuera de IIS. El proceso de carga puede ser una interfaz web sencilla para colocar ese archivo en ese directorio que supervisa su Servicio de Windows.

Cuestiones relacionadas