net.tcp
ist einfach das URI-Schema unter Windows verwendet Endpunkte zu identifizieren, die unter Verwendung von TCP zugegriffen werden kann.
In ähnlicher Weise sind net.msmq
und net.pipe
die URI-Schemas, die Endpunkte adressieren, die MSMQ protocol bzw. Named Pipes protocol verwenden.
Das Präfix net
auf allen drei gibt an, dass das URI-Schema ausschließlich für die Verwendung auf der Microsoft .NET-Plattform entwickelt wurde und nicht allgemein im breiteren Internet akzeptiert wird. (Andere URI-Schemata wie http
und ftp
haben allgemein akzeptierte Bedeutungen und werden daher in WCF ohne Präfix verwendet). Das Präfix net
dient daher als Warnhinweis, dass der zugehörige Endpunkt mit anderen Anwendungen, die nicht auf der .NET-Plattform ausgeführt werden, eingeschränkt bzw. nicht kompatibel ist.
Beispiel URIs:
net.tcp://localhost:7272
net.msmq://somemachine/publicQueue
net.pipe://machine.domain.com/somePipe
SIDEBAR: Während MSMQ und Named Pipes sind klar Protokolle Microsoft und damit eine fehlende Interoperabilität unsurprising ist, TCP ist das Fundament Protokoll des Internets und daher sicherlich sollte es in WCF nicht .NET-spezifisch sein?
Nun, Interoperabilität in WCF wird bereits von SOAP und HTTP behandelt, die beide auf TCP laufen. Wenn Sie Interoperabilität über TCP wünschen, verwenden Sie eines dieser Protokolle.
Microsoft suchte daher nach einer Kommunikationsalternative, bei der Leistung und nicht Interoperabilität das Hauptziel war. TCP war die logische Wahl, aber TCP ist ein Protokoll relativ niedriger Ebene, das zusätzliches Verhalten erfordert und standardmäßig implementiert wird, um für ein Messaging-Framework wie WCF in einer direkten Weise zu arbeiten. Außerdem gibt es kein allgemein akzeptiertes URI-Schema für TCP-zugängliche Ressourcen, und daher musste Microsoft eines erfinden. So wurde net.tcp
geboren.
Während die URIs selbst nicht unbedingt genau angeben, welche Bindung zu verwenden ist, geben sie einen Hinweis. Laut Simon Mouriers Antwort sind die derzeit in WCF verfügbaren Bindungen here. So kann beispielsweise eine net.tcp
-Adresse angeben, dass NetTcpBinding, NetPeerTcpBinding oder NetTcpContextBinding erforderlich ist.
Warum kann ich kein Kopfgeld für diese Frage starten? Ich habe den Start Bounty Button nicht gesehen. – smwikipedia
net.tcp ist ein URI-Schema, während TCP nur ein Protokoll ist. Dies wird verwendet, damit WCF eine WCF-Nachricht über TCP unter Verwendung des .NET-Framing-Binärprotokolls empfängt oder sendet, wenn die Standardbindung verwendet wird. Der Standardwert hierfür ist Port 808, und das Framing-Format verwendet .net binary message framing. – Sajay