2010-12-29 4 views
17

Ich lese die < Learning WCF> von Michele Leroux Bustamante. In diesem Buch, wenn es darum geht, net.tcp Protokoll, sagt der Autor nur TCP statt. Also, was ist der Unterschied zwischen net.tcp und dem berühmten TCP Protokoll?Was ist der Unterschied zwischen net.tcp und TCP-Protokoll?

Und wie in net.msmq, net.pipe, was der net Präfix bedeutet das?

Vielen Dank.

+0

Warum kann ich kein Kopfgeld für diese Frage starten? Ich habe den Start Bounty Button nicht gesehen. – smwikipedia

+1

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

Antwort

1

Das Präfix .net schlägt vor, dass die Rahmen Autoren das Protokoll eingewickelt haben Sie mit einer API zur Verfügung zu stellen, die Komplexität verbirgt und macht es für Entwickler einfacher, es zu benutzen.

+0

Danke für Ihren Beitrag. Net.tcp und TCP sind also im Wesentlichen dasselbe. – smwikipedia

+0

Nein, das habe ich nicht gesagt. Ich spekulierte, dass net.tcp ein Wrapper für TCP ist. Schau es dir an und schau, ob das stimmt. – duffymo

2

Das sind Protokolle innerhalb des Microsoft-Stack als zusätzliche Optionen in WCF-Kommunikation einzurichten. Grundsätzlich können Sie Tools für Ihre Dienste zur Kommunikation nutzen. Beachten Sie jedoch, dass die von Microsoft für WCF veröffentlichten net * -Protokolle bei Nicht-WCF- (und Nicht-Microsoft-) Nutzern dieser Dienste nicht gut funktionieren, obwohl sie unterschiedliche Vorteile haben können. Wenn Interoperabilität ein Problem darstellt, können sie später Kopfschmerzen verursachen.

4

net.tcp im Service-Modell (WCF) Namespace lebt. Es wird von vielen Klassen vertreten, am sichtbarsten ist NetTcpBinding Class. Im Wesentlichen ist also net.tcp eine WCF-Bindung ("Eine sichere, zuverlässige Bindung, die für die Kommunikation zwischen Maschinen geeignet ist").

Also, net.tcp kann nur im WCF-Kontext verwendet werden, und ist einfach basierend auf das TCP-Protokoll. Aber net.tcp = TCP kann man nicht sagen. net.tcp verwendet nur TCP. Im Vergleich zu anderen Bindungen gilt es als performant, aber nicht interoperabel.

Die Geschichte ist das gleiche für net.pipe, net.msmq, sie sind WCF-Bindungen über niedrigere Windows-Technologien bzw. Named Pipes und MSMQ implementiert. Hier

ist eine Liste der System bereitgestellt WCF Bindings: System-Provided Bindings

28

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.

+4

Da, wenn http oben auf tcp läuft, nennen wir es einfach "http" und ftp auf tcp heißt einfach "ftp" und bittorrent auf tcp ist "torrent" (und dasselbe gilt für alle anderen Internetprotokolle), denke ich, Microsoft sollte es "net.wcf" anstelle von "net.tcp" genannt haben. – slebetman

+0

:-) Guter Punkt. Das mag die Dinge ein wenig klarer gemacht haben. –

+0

Das ist die mit Abstand beste Antwort. Können Sie mir eine Ressource für tiefergehende technische Informationen über net.tcp geben? – csteinmueller

Verwandte Themen