5

Digamos que tengo un servicio que expone dos puntos finales, el primero es un NetTCPBinding, el segundo es cualquier sabor de HttpBinding. Ambos implementan exactamente el mismo contrato de servicio.WCF NetTCPBinding vs HttpBinding diferencia en los datos enviados por cable

¿Cuál es la diferencia en lo que se envía por el cable?

  • Uso de netTcp es mi mensaje todavía serializado a XML? ¿O alguna representación binaria de mis objetos?
  • En términos de qué recibe los mensajes ¿cuál es la diferencia? ¿El punto final http solo comprenderá los comandos http (get/post, etc.) mientras que el punto final nettcp entiende algo diferente?
  • ¿Por qué Nettcp es más eficiente (en este caso no necesito interoperabilidad) que http? ¿Dónde está la sobrecarga?

Creo que en todos los casos, antes de colocar el mensaje en el cable se convertirá en binario, así que también http se encuentra encima de tcp en términos de red, por lo que se necesita algo adicional para las comunicaciones http.

gusta esta pregunta es un poco vago, pero espero que alguien sabrá lo que estoy tratando de preguntar :)

Respuesta

7

En WCF una unión particular no implica necesariamente una codificación particular. Varios enlaces se pueden configurar para usar varias codificaciones. Net.TCP usa una codificación binaria por defecto (creo que MTOM), y HTTP usa una codificación text/xml por defecto.

Con net.tcp sus mensajes van al remitente -> net.tcp -> receptor. Con HTTP van desde el remitente -> http -> tcp -> http -> receptor. Hay una capa extra. La ventaja de tcp es ambas: la capa adicional y la codificación predeterminada.

HTTP con una codificación binaria se acerca al rendimiento de net.tcp.

EDITAR: En realidad, creo que también puede haber otras optimizaciones en Net.TCP. Es un escenario de comunicación WCF-WCF, por lo que MS tiene el control de ambos extremos.

+0

Saludos. Pero, ¿qué hace la parte http para el mensaje? ¿Envolverlo en algún tipo de contenedor http? – Remotec

+1

Al usar HTTP, hay una negociación que es muy similar a la negociación entre un navegador web y un servidor web: se establece una conexión TCP, el cliente envía un verbo, una URL y, opcionalmente, encabezados y un cuerpo. El servidor responde con un estado, un bloque de encabezados y un cuerpo (si tiene éxito). TCP sí mismo hace un "apretón de manos" similar (protocolo diferente sin embargo). Al usar HTTP, debes hacer ambas cosas. – JohnC

Cuestiones relacionadas