Las 2 fijaciones son radicalmente diferentes.
NetTcpBinding
puede ser pensado como un formato propietario MS (generalmente binaria) similar en concepto a RPC
(por ejemplo, se puede utilizar para reemplazar .NET Remoting
). Es sincrónico, es decir, tanto el cliente como el servidor deben estar en línea al mismo tiempo, y el cliente recibe una respuesta (casi) de inmediato.
MSMQ
es una solución Middleware orientada a mensajes de Microsoft, que gira en torno a las colas asincrónicas, p. si el servidor de destino está fuera de línea cuando el cliente envía un mensaje, el mensaje se pondrá en cola en el cliente hasta que el servidor vuelva a estar en línea. Cada cola es de una sola vía, aunque la comunicación bidireccional se puede lograr a través de una segunda cola de servidor a cliente. El envío de mensajes WCF MSMQ requiere la instalación del servicio MSMQ
en el cliente. Los mensajes en la cola pueden tener un 'timeout' de entrega que se colocará en una cola de letra muerta correspondiente.
ejemplos del mundo real:
- me gustaría utilizar
NetTcpBinding
con la serialización binaria para un alto rendimiento, necesidades de comunicación síncrona entre un cliente y un servidor Microsoft WCF, por ejemplo, la carga de archivos, los medios de comunicación, etc., donde Xml
no sería útil (de lo contrario, me gustaría utilizar wsHttpBinding
para síncrono de mensajes Xml
/SOAP
)
- me gustaría utilizar
MSMQBinding
con DTC activado para asegurar la mensajería fiable entre 2 o más sistemas (por ejemplo, financieros), con al menos uno de los puntos finales está en .Net, y un servidor 'compatible' (no necesariamente WCF
, por ejemplo BizTalk
, u otros EAI
buses o ESB
autobuses que tienen adaptadores para MSMQ
, por ejemplo, existen puentes entre MSMQ and MQSeries
). Los mensajes suelen estar en un formato Xml
.
TL; DR
¿significa que el cliente, incluso si el servicio no está funcionando todavía utilizar el servicio
Sí. Si MSMQ
se ejecuta localmente, el cliente obtendrá un retorno inmediato respuesta exitosa (indicando que el mensaje ha sido puesto en cola). Sin embargo, esto no significa que el mensaje haya sido recibido con éxito por el servidor.
Gran respuesta, he usado ampliamente WCF en una serie de sistemas complejos y solo quería agregar mis dos centavos. 1. Evite el incumplimiento de WCF, excepto en casos de uso muy específicos, donde proporciona algo que carece de servicios web RESTful. 9/10 veces el dolor de cabeza de WCF no vale la recompensa. 2. NetTcpBinding es sin duda la mejor opción (y definitivamente la más rápida, excluyendo las tuberías con nombre) en mi experiencia personal. Sin embargo, no tiene redundancia incorporada como explica el póster. –
De acuerdo - han pasado 4 años y xml ahora es reparado en su mayoría por los servicios JSON, y WebApi ahora ha superado a WCF en un mundo RESTful. – StuartLC