2009-01-27 8 views
6

Sé que esta pregunta se ha hecho un poco antes. Pero mirando a mi alrededor todavía no puedo decidir qué ruta debería seguir. Aquí está mi situación, con suerte usted puede ayudar:MSMQ vs Temporada de volcado de tabla

Tendremos una serie de servicios web que recibirán cientos de aplicaciones móviles. Estos servicios generarán datos en el dispositivo con nueva información que irá a los dispositivos y regresará de ellos. Los datos devueltos por los dispositivos deberán actualizar una sola base de datos del servidor SQL central que también alimente varias aplicaciones de escritorio y un sitio web.

Para reducir la cantidad de tiempo para la solicitud/respuesta de estos servicios, hemos decidido procesar los datos provenientes de los dispositivos después del hecho, ya sea pegándolos en una instancia de MSMQ o almacenando los objetos serializados de forma temporal. almacén de datos y tener un servicio de Windows procesarlos más tarde.

Así que mis opciones, pero aparte de esto aquí hay un par de cosas más que podrían ayudar a que ustedes me aconsejan:

  • Los datos devueltos por los dispositivos no serán devueltos en paquetes de mensajes más pequeños que necesitan estar ordenado del lado del servidor.
  • No sé nada de MSMQ, pero antes he escrito servicios de Windows. Aunque no tengo problemas para elegir MSMQ si es necesario.
  • Quiero mantener la respuesta de los dispositivos en algún lugar en caso de que el proceso falle por algún motivo causado por los datos. De esta forma puedo interrogar los datos y ver si hay un problema, es decir, el dispositivo permite a un usuario agregar comentarios que extienden la longitud del campo relacionado en la base de datos del lado del servidor.

Con esta información, ¿cree que vale la pena que busque aprender MSMQ o debería seguir con la solución más simple?

Chris.

Respuesta

8

MSMQ no es una mala elección y definitivamente no es difícil de aprender, pero tenga en cuenta que hay algunas limitaciones que debe tener en cuenta.

Contras:

  • Cada cola sólo pueden ser de 2 GB.
  • Cada mensaje 4MB (aunque el límite de 4MB se puede arreglar usando MSMQ con WCF).
  • Solo para Windows, por lo que está limitado a usarlo con la biblioteca .NET, C/C++ o COM para entornos habilitados para COM.

Pros:

  • Compatible con Windows Red equilibrador de carga.
  • Admite Microsoft Cluster Service.
  • Integrado con Active Directory.
  • Se envía con Windows.
  • Admite transacciones.
  • Los mensajes de auditoría pueden rastrearse en los mensajes de MSMQ en el registro de eventos de Windows.
  • Los mensajes pueden autenticarse (firmarse) o encriptarse automáticamente al enviarlos, y se pueden verificar y descifrar en la recepción.

Otro enfoque que quizás desee considerar es escribir sus datos en una tabla de etapas. Esta podría ser una buena idea, ya que desea tener un registro de devolución de mensajes.

Es difícil dar consejos cuando no conozco el resto de la arquitectura del sistema, pero espero que esta respuesta ayude un poco.

Enlaces útiles

Programming MSMQ in .NET - Part 1
Using MSMQ with WCF

+0

de Identificación del ayuda gracias – Owen