2010-01-06 20 views
5

Esto es lo que estoy tratando de hacer. Tengo un sitio web que permite a los usuarios enviar solicitudes que están en cola en una tabla de Trabajos que el servicio recoge y procesa. Tengo una columna de estado en la tabla que indica si la solicitud se pone en cola para su procesamiento o el servicio la está procesando actualmente o si el servicio ha terminado de procesar la solicitud. Todo el proceso toma unos minutos.¿Encuesta la base de datos desde una página web? - ASP.NET

Tengo una página de estado ASP.NET en la que tendré que mostrar el estado actual de su solicitud en tiempo real. Quiero mostrar algún tipo de animación e indicar el estado actual. Una forma en que podría hacer esto es tener una actualización meta http cada x segundos que verifique el estado de la solicitud (supongo que es así como sitios como Expedia, Priceline lo hace)

Me gustaría evitar una completa la actualización de la página es posible y está buscando una solución AJAX/JQuery. ¿Cómo implementaría esto? ¿Está encuestando el enfoque correcto?

Respuesta

4

La votación a través de AJAX es la más fácil y más simple para sus necesidades. Si conoces los límites superior e inferior en el tiempo que tomará, probablemente solo tendré la animación funcionando por ese período de tiempo y luego haré algo para el caso excepcional.

Otros han hecho lo mismo:

Ver: http://news.ycombinator.com/item?id=946165 y http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf

+0

¿me puede elaborar o señalar a un ejemplo de código sobre cómo implementar esto? – Nick

+0

Para la solución de votación, consulte: http://buntin.org/2008/09/23/jquery-polling-plugin/ Es para una aplicación de chat pero puede * fácilmente * adaptarse a sus necesidades. –

0

sondeo es probablemente el mejor método si no desea que la página Web para funcionar continuamente en el servidor ...

Sin embargo, si eso no te molesta, entonces es posible que desee echar un vistazo en una [similar answer] le di otra pregunta que le permite actualizar dinámicamente la página ... El navegador parecerá continuar "cargando" la página hasta que finalice.

0

¿Has mirado en asíncrono llamadas al servidor. Esto le permitiría poner una llamada en el servidor y no esperar el resultado, cuando la llamada terminara se activaría un evento y se golpearía un método en la página del cliente, esto suena como lo que necesita y no lo haría. hacer de votación, aquí hay más información:

http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

Espero que esto ayude.

+0

¿No debería ejecutar tiempos de espera si el proceso lleva más tiempo que el tiempo de espera de la sesión? – Nick

0

Es posible que desee buscar en "larga encuesta", también conocido como Comet.

La idea es hacer una solicitud asíncrona de Ajax del cliente. En el lado del servidor, cuelga la solicitud hasta que cambie el estado (para que tenga algo nuevo que informar). Luego, libera la solicitud y devuelve la información actualizada.

Esto tiene una ventaja sobre la votación pura en el sentido de que las solicitudes solo vuelven cuando algo ha cambiado. También puede parecer más receptivo, ya que depende en gran medida del lado del servidor.

Cuestiones relacionadas