2008-12-01 24 views
9

Mi organización se está preparando para implementar un nuevo sistema, que es una aplicación asp.net. La aplicación tendrá una gran cola de trabajo fuera de línea que inicia el sitio web. Esta cola tendrá diferentes tipos de actividad, idealmente en mensajes XML. Piense en cosas como notificaciones por correo electrónico, tareas programadas, etc.ASP.NET: el mejor sistema de cola para una nueva aplicación

En el pasado, la organización probablemente habría utilizado MSMQ para realizar esta tarea. Sin embargo, consideran que MSMQ es de la vieja escuela (y estoy parcialmente de acuerdo con ellos), por lo que vamos a hacer una revisión arquitectónica para determinar la "mejor" solución.

En mi opinión, hay algunas opciones posibles:

1. Seguir con una nueva implementación en la última versión de MSMQ: no es ideal, pero es un producto conocido.
2. Use Windows Workflow Foundation, que he escuchado de algunos otros desarrolladores que lo han usado para este tipo de cosas.
3. Desarrolle una solución de base de datos personalizada.

¿Me faltan soluciones obvias? Idealmente, este será un producto de Microsoft, pero realmente solo necesita trabajar en una tienda centrada en Microsoft.

Me preocupa lo siguiente:
1. Facilidad de implementación y mantenimiento
2. Una solución que será alrededor de un rato
3. Capaz de manejar un buen volumen de filas, con los datos XML de tamaño mediano en ellos
4. Sistema de cola absolutamente confiable, con actualización rápida (es probable que múltiples procesos de utilidad extraigan los registros de la cola para procesarlos).

+1

La etiqueta de WWF debe ser sólo WF (http://msdn.microsoft.com/en-us/netframework/aa663328.aspx). Supongo que porque WWF es World Wildlife Fund, que no debe confundirse con WWE, anteriormente WWF. – Bratch

Respuesta

13

Leer la publicación parece ser la única razón por la que cree que MSMQ no es adecuado es porque alguien piensa que es "vieja escuela". No creo que sea una buena razón para no usarlo, ya que parece que su empresa tiene experiencia con él, por lo que no habría curva de aprendizaje, lo que significa una fácil implementación y mantenimiento.

Además, MSMQ encajaría perfectamente con todas las inquietudes que mencionó que tiene. Entonces, a menos que haya otra razón "real" para no usarlo, creo que me quedaré con MSMQ.

1

¿Has visto un Service Broker en SQL Server? Es un sistema de búsqueda que utiliza la base de datos como una tienda de respaldo.

3

Sugeriría buscar en WCF, puede configurarlo para especificar persistencia, mensajes en cola y utiliza la tecnología MSMQ bajo las sábanas. La abstracción/interfaz de la WCF y la tecnología deberían estar presentes por mucho tiempo.

0

usted tiene un par de opciones:

  1. Biztalk: Está construido para la entrega de mensajes garantizada y enrutamiento a nivel corporativo. Es difícil de configurar, costoso y tiene una curva de aprendizaje abrupta; sin embargo, una vez que lo enciendes, es sólido.

  2. MSMQ: Rápido, económico como en Free, fácil de usar, y simplemente funciona.

  3. SQL Service Broker. Es un paso adelante de MSMQ, pero un gran paso hacia abajo desde Biztalk.

Los principales problemas se reducen al conjunto de características que necesita. Biztalk es más o menos su propio entorno de desarrollo. Mientras que MSMQ requiere que construyas todo a su alrededor.

+0

SSB tiene bastantes defectos, algunos grandes en mis ojos. 1) problemas de escala complejos relacionados con el reciclaje de identificadores de conversación. 2) costo de la licencia de SQL por nodo - MSMQ supera ampliamente Solo iría con SSB si ya tuviera SQL en la mezcla. – stephbu

0

Se podría contemplar la utilización de un intermediario de mensajes de código abierto como Apache ActiveMQ

2

Estoy de acuerdo con los alces-en-la-selva que MSMQ probablemente es lo que debe soportar.

Tal vez investigue algunas API alternativas que usan MSMQ bajo la cubierta, como nServiceBus de Udi Dahan.

0

Parece que para todo su sistema, puede usar Windows Workflow para administrar su lógica de negocio, y simplemente use MSMQ como el almacenamiento para su lista de tareas. Su flujo de trabajo comenzará retirando el siguiente mensaje de la cola, y luego determinará qué hacer con él.

Hacer cola es algo con lo que no quiere meterse, confiar en algo que funciona y que ya ha sido probado por muchas personas.

2

Como alternativa a ActiveMQ (mencionado anteriormente) existe RabbitMQ de fuente abierta. Por lo que dicen, se integra muy bien con ASP.NET y WCF.

http://www.rabbitmq.com/

Cuestiones relacionadas