2010-12-29 39 views
17

Estoy leyendo el < Learning WCF> de Michele Leroux Bustamante. En este libro, cuando se trata del protocolo net.tcp, el autor simplemente dice TCP en su lugar. Entonces, ¿cuál es la diferencia entre net.tcp y el famoso protocolo TCP?¿cuál es la diferencia entre net.tcp y el protocolo TCP?

Y como en net.msmq, net.pipe, ¿qué significa el prefijo neta?

Muchas gracias.

+0

¿por qué no puedo comenzar una recompensa por esta pregunta? No vi el botón de recompensa de inicio. – smwikipedia

+1

net.tcp es un esquema uri mientras que TCP es solo un protocolo. esto se usa para que WCF reciba o envíe un mensaje WCF a través de TCP utilizando el protocolo binario de entramado .NET al usar el enlace predeterminado. El valor predeterminado para esto es el puerto 808 y el formato de encuadre usa el encuadre de mensaje binario .net. – Sajay

Respuesta

1

El prefijo .net sugiere que los autores del framework hayan envuelto el protocolo para proporcionarle una API que oculta la complejidad y hace que sea más fácil para los desarrolladores utilizarla.

+0

Gracias por su comentario. Entonces net.tcp y TCP son esencialmente lo mismo. – smwikipedia

+0

No, yo no dije eso. Especulé que net.tcp es un envoltorio para TCP. Eche un vistazo y vea si eso es correcto. – duffymo

2

Esos son protocolos configurados dentro de la pila de Microsoft como opciones adicionales en comunicaciones WCF. Básicamente, herramientas que puede usar para sus servicios de comunicación. Tenga en cuenta, sin embargo, que si bien cada uno puede tener diversos beneficios, los protocolos net * que Microsoft ofrece para WCF no funcionan bien con los consumidores que no son WCF (y que no son de Microsoft) de esos servicios. Si la interoperabilidad es una preocupación, pueden causar dolores de cabeza más tarde.

4

net.tcp vive en el espacio de nombres Modelo de servicio (WCF). Está representado por muchas clases, siendo la más visible NetTcpBinding Class. Entonces, esencialmente net.tcp es un enlace WCF ('Un enlace seguro y confiable adecuado para comunicación entre máquinas').

Así, net.tcp sólo pueden utilizarse en el contexto de WCF, y es simplemente basado en el protocolo TCP. Pero no se puede decir net.tcp = TCP. net.tcp solo usa TCP. Comparado con otras vinculaciones, se considera como un rendimiento, pero no interoperable.

La historia es la misma para net.pipe, net.msmq, son enlaces WCF implementados sobre tecnologías de Windows inferiores, respectivamente Named Pipes y MSMQ.

Aquí es una lista de los enlaces de sistema proporcionado WCF: System-Provided Bindings

28

net.tcp es simplemente el esquema URI utilizado dentro de Windows para identificar los puntos finales que se puede acceder a través de TCP.

Del mismo modo, net.msmq y net.pipe, son los esquemas URI para hacer frente a los puntos finales que utilizan el MSMQ protocol y Named Pipes protocol, respectivamente.

El prefijo net en los tres indica que el esquema de URI se diseñó únicamente para su uso en la plataforma Microsoft .NET y no es generalmente aceptado en Internet. (Otros esquemas de URI, como http y ftp tienen significados generalmente aceptados y, por lo tanto, se utilizan dentro de WCF sin ningún prefijo). El prefijo net sirve, por lo tanto, como advertencia de que el punto extremo asociado tendrá una interoperabilidad limitada/no con otras aplicaciones que no se ejecutan en la plataforma .NET.

Ejemplo URI:

net.tcp://localhost:7272 
net.msmq://somemachine/publicQueue 
net.pipe://machine.domain.com/somePipe 

BARRA LATERAL: Mientras MSMQ y canalizaciones con nombre son claramente Microsoft protocolos y, por tanto, una falta de interoperabilidad no es sorprendente, TCP es el protocolo base de Internet y por lo tanto, seguramente su uso en WCF no debería ser .NET específico?

Bueno, la interoperabilidad en WCF ya está a cargo de SOAP y HTTP, que se ejecutan sobre TCP. Si desea interoperabilidad sobre TCP, use uno de esos protocolos.

Por lo tanto, Microsoft buscaba ofrecer una alternativa de comunicación en la que el objetivo principal fuera la performance, en lugar de la interoperabilidad. TCP fue la elección lógica, pero TCP es un protocolo de nivel relativamente bajo, que requiere un comportamiento adicional y se implementan los valores predeterminados para trabajar de una manera directa para un marco de mensajería como WCF. Además, no existe un esquema de URI generalmente aceptado para los recursos accesibles de TCP y, por lo tanto, Microsoft necesitaba inventar uno. Por lo tanto, nació net.tcp.


Mientras que los URI mismos no indican necesariamente exactamente la que la unión de utilizar, proporcionan una pista. Según la respuesta de Simon Mourier, los enlaces actualmente disponibles dentro de WCF se pueden encontrar en here. Entonces, por ejemplo, una dirección net.tcp podría indicar que se requiere NetTcpBinding, NetPeerTcpBinding o NetTcpContextBinding.

+4

Dado que cuando http se ejecuta sobre tcp simplemente lo llamamos "http" y ftp en tcp se llama simplemente "ftp" y bittorrent en la parte superior de tcp es "torrent" (y lo mismo ocurre con todos los demás protocolos de Internet) Creo que Microsoft debería haberlo llamado "net.wcf" en lugar de "net.tcp". – slebetman

+0

:-) Buen punto. Eso puede haber hecho las cosas un poco más claras. –

+0

Esa es, de lejos, la mejor respuesta. ¿Me puede dar un recurso para obtener información técnica más profunda sobre net.tcp? – csteinmueller

Cuestiones relacionadas