Pregunta

mirando hacia el concepto de hacer cola para aplicaciones web (es decir, poner algunos tipos de trabajo en una cola para la terminación de un trabajador independiente, en lugar de ser completado en el ciclo de petición de web).

Me gustaría saber si hay buenas soluciones existentes para este que se pueden utilizar en una environemnt ASP.NET MVC.

Alguien ha tenido alguna experiencia (buena o mala)?

Gracias!

ACTUALIZACIÓN:

Solo para aclarar, no estoy hablando de cola las peticiones entrantes. Voy a tratar de ilustrar lo que quiero decir ...

1) Situación Estándar:

  • Solicitud del navegador
  • inicia el procesamiento del servidor
  • comienza mucho trabajo
  • Long trabajo terminado
  • servidor de procesamiento terminado
  • respuesta devuelta al navegador

2) Lo que estoy buscando en:

  • Requsest desde el navegador
  • inicia el procesamiento del servidor
  • trabajo de largo colocado en la cola
  • servidor de procesamiento terminado
  • respuesta devuelta al navegador

Y en otro proceso (posiblemente después de que se envió la respuesta):

  • trabajo a largo tomado de la cola
  • comienza mucho trabajo
  • Long trabajo terminado

En el primer caso el usuario ha esperado mucho tiempo para resoponse servidor, en el segundo que fue rápido.

Por supuesto, hay ciertos tipos de trabajos que serían apropiados para esto, algunos que no lo sería.

Update2:

El cliente no tiene que actualizarse inmediatamente con los resultados del tiempo de trabajo. Los cambios se acaba de mostrarse en la aplicación cada vez que el usuario ha pasado a actualizar una página (después de que el trabajo se había completado, por supuesto).

Piense en algunas de las cosas que suceden en desbordamiento de pila - que no se actualizan inmediatamente en cada parte de la aplicación, pero esto happends con bastante rapidez - Sospecho que algunos de estos puestos de trabajo están en cola.

¿Fue útil?

Solución

Publicación de los datos de petición en una MSMQ cola y tienen una Servicio de windows procesar los elementos de la cola. O bien, dejar que la solicitud Web generar un proceso que procesan los elementos de la cola.

Otros consejos

El Rhino servicio de autobús es otra solución que puede funcionar para usted:
http://ayende.com/Blog/archive/ 2008/12/17 / rino-servicio-bus.aspx

Es posible comprobar en el uso de un ESB. He jugado un poco con MassTransit: http://code.google.com/p/masstransit/ - la documentación es (o al menos era) un poco escaso, pero es fácil de implementar

.

Además, se desarrollan aplicaciones que se ejecutan con Amazon EC2 y encanta su servicio AmazonSQS.

Gracias,

Hal

Ya que menciona en otro comentario que usted estaba buscando un equivalente al servicio de Amazon SQS ... puede que desee ver en Windows Azure. Tienen una cola de API equivalentes:
http://msdn.microsoft.com/en-us/library/dd179363. aspx

He implementado este patrón haciendo que el servidor web de llamar a un servicio WCF de forma asíncrona. Los asistentes VS generarán proxies asincrónicos para que cuando se consume un servicio WCF. Si usted debe haber garantizado la entrega de la solicitud al servicio, usted podría utilizar MSMQ como la capa de transporte para el servicio WCF.

Creo que el comentario de Chrisitan podría ser su respuesta, pero teniendo en cuenta que no sé mucho acerca de IIS y cola con ella, mi solución sería:

Hacer una solicitud asincrónica y cargar los detalles del trabajo en la base de datos. A continuación, tener un trabajo para recorrer la base de datos y procesar los detalles del trabajo. Lo hago por uno de mis sitios. Puede que no sea la mejor solución por ahí, pero hace el trabajo.

Editar

Mi respuesta podría seguir funcionando, pero tendrá que tener algún mecanismo de sondeo en el cliente para comprobar continuamente la base de datos para ver si el trabajo de ese usuario se lleva a cabo, a continuación, coger los datos que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top