¿Cuáles son las ventajas de usar WCF en marcos como Massemploy o el cliente MSMQ escrito a mano?

StackOverflow https://stackoverflow.com/questions/617859

Pregunta

Estoy considerando el uso de MSMQ como una solución para realizar una ejecución asíncrona en mi próximo proyecto. Quiero saber las diferencias entre el uso de WCF y marcos como Mass reglas o incluso el cliente MSMQ escrito a mano para colocar / leer la tarea fuera de MSMQ.

Básicamente, la aplicación consistirá en varios sitios web (internos a través de LAN o externos a través de Internet) que leerán o escribirán datos a través de una capa de servicio (ya sea WCF o un servicio web normal). Luego, esta capa de servicio hará una de dos cosas: 1. escribir datos en la base de datos 2. y / o iniciar el proceso en segundo plano colocando un mensaje en la cola. 3. Obviamente, también puede recuperar datos de la base de datos. El agente pequeño (un servicio de Windows) en el otro lado de la cola supervisará la cola y se ejecutará según el comando de tarea.

Esta arquitectura será bastante fácil de escalar (agregar más colas y agentes) y fácil de implementar en comparación con RPC o ejecución distribuida o lo que sea. Y el procesamiento del agente no necesita ser en tiempo real. Y el agente y la capa de servicio son aplicaciones separadas, excepto que comparten los objetos de dominio comunes y los Repositorios, etc.

¿Qué piensas? Sugerencias de arquitectura para los requisitos anteriores son bienvenidas. ¡Gracias!

¿Fue útil?

Solución

WCF agrega una abstracción sobre MSMQ. De hecho, una vez que defina contratos compatibles (las operaciones deben ser OneWay), puede cambiar MSMQ en la configuración, de manera transparente. (Por ejemplo, puede cambiar a HttpWS normal o un enlace NetTcp).

Debe evaluar los otros beneficios de WCF, como la seguridad, etc., para ver cómo se adaptan a sus necesidades. Una vez más, deben ser razonablemente transparentes del hecho de que está utilizando MSMQ debajo. Por ejemplo, agregar seguridad SOAP y así sucesivamente debería "funcionar" independientemente del uso de MSMQ.

(Aunque, IIRC, aún necesita iniciar sesión en el escritorio en cada máquina que usa MSMQ, con la cuenta de servicio que usará MSMQ , para generar el certificado en el perfil local de la máquina. Y entonces, no funciona muy bien desde IIS6, ya que los perfiles de usuario no están cargados. Un dolor real en general, pero nada que ver con WCF específicamente)


Aparte de eso:

¿Has mirado a SQL Server Service Broker? Después de usar MSMQ + WCF y SSSB, creo que SSSB es enormemente más fácil de configurar y administrar. SSSB funciona con comandos T-SQL sobre cualquier cliente SQL (lo uso de Mono, en Linux, con transacciones). También le proporcionará envío / recepción transaccional, incluso de forma remota (creo que MSMQ 4 ahora lo permite). Realmente le quita mucho dolor a la cola de mensajes, y si ya está utilizando SQL Server ...

SSSB a menudo se pasa por alto ya que SQL Management Studio no tiene diseñadores de GUI para todo, pero no es difícil y es una gran opción. El único inconveniente es que si desea la capacidad de envío local (es decir, un mensaje de cola cuando la red no funciona), deberá ejecutar una instancia local de SQL Express.

Otros consejos

Su arquitectura parece sólida y razonable. Sin embargo, debe considerar el uso de WCF net MSMQ en lugar de clases MSMQ codificadas a mano. WCF envuelve esta funcionalidad común en un bonito modelo de programación. También creo que hay algunas mejoras en el protocolo utilizado por wcf en comparación con el System.Messaging básico

Eche un vistazo al valor agregado en MSMQ simple:

http://readthedocs.org/docs/masstransit/en/ latest / overview / valueadd.html

En resumen, obtienes una gran cantidad de conceptos de mensajería claramente presentados en la API con Mass reglas; hasta cierto punto no lo tendría si lo hubiera codificado a mano o utilizado WCF.

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