Wählen eines TransportsChoosing a Transport

In diesem Thema werden die Kriterien zum Wählen einer der drei Transportarten erläutert, die in Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) enthalten sind: HTTP, TCP und Named Pipes.This topic discusses criteria for choosing among the three main transports that are included in Windows Communication Foundation (WCF)Windows Communication Foundation (WCF): HTTP, TCP, and named pipes. WCFWCF enthält außerdem einen Message Queuing-Transport (wird auch als MSMQ bezeichnet), jedoch wird Message Queuing nicht in diesem Dokument behandelt. also includes a message queuing (also known as MSMQ) transport, but this document does not cover message queuing.

Das WCFWCF-Programmiermodell trennt Endpunktvorgänge (wie in einem Dienstvertrag beschrieben) von dem Transportmechanismus, der zwei Endpunkte verbindet.The WCFWCF programming model separates endpoint operations (as expressed in a service contract) from the transport mechanism that connects two endpoints. Dies gibt Ihnen Flexibilität bei der Entscheidung, wie Sie Ihre Dienste im Netzwerk offenlegen möchten.This gives you the flexibility to decide how to expose your services to the network.

In WCFWCF, geben Sie an, wie zum Übertragen von Daten in einem Netzwerk zwischen Endpunkten mit einer Bindung, besteht aus einer Folge von Bindungselementen.In WCFWCF, you specify how to transfer data across a network between endpoints by using a binding, which is made up of a sequence of binding elements. Ein Transport wird durch ein Transportbindungselement dargestellt, das Teil der Bindung ist.A transport is represented by a transport binding element, which is part of the binding. Eine Bindung enthält optionale Protokollbindungselemente, wie Sicherheit, ein erforderliches Nachrichtenencoder-Bindungselement und ein erforderliches Transportbindungselement.A binding includes optional protocol binding elements, such as security, a required message encoder binding element, and a required transport binding element. Bei einem Transport wird das serialisierte Formular einer Nachricht an eine andere bzw. von einer anderen Anwendung gesendet.A transport sends or receives the serialized form of a message to or from another application.

Wenn Sie eine Verbindung zu einem vorhandenen Client oder Server herstellen möchten, haben Sie ggf. keine Wahl, welchen Transport Sie verwenden.If you must connect to an existing client or server, you may not have a choice about using a particular transport. Sie können jedoch WCFWCF-Dienste über mehrere Endpunkte bereitstellen, die jeweils einen anderen Transport verwenden.However, WCFWCF services can be made accessible through multiple endpoints, each with a different transport. Wenn ein einzelner Transport für die beabsichtigten Nutzer des Dienstes nicht ausreicht, können Sie in Erwägung ziehen, den Dienst über mehrere Endpunkte hinweg offenzulegen.When a single transport does not cover the intended audience for your service, consider exposing the service over multiple endpoints. Clientanwendungen können dann den Endpunkt verwenden, der am besten für sie geeignet ist.Client applications can then use the endpoint that is best for them.

Nachdem Sie einen Transport gewählt haben, müssen Sie eine Bindung auswählen, die den Transport verwendet.After you choose a transport, you must select a binding that uses it. Sie können eine vom System bereitgestellte Bindung auswählen (finden Sie unter sicherheitsbindungsarten Bindungen), oder Sie können eine eigene benutzerdefinierte Bindung erstellen (finden Sie unter benutzerdefinierte Bindungen).You can choose a system-provided binding (see System-Provided Bindings), or you can build your own custom binding (see Custom Bindings). Sie können auch eine eigene Bindung anlegen.You can also create your own binding. Weitere Informationen finden Sie unterFor more information, seeErstellen von benutzerdefinierten Bindungen. Creating User-Defined Bindings.

Vorteile der einzelnen TransporteAdvantages of Each Transport

In diesem Abschnitt sind die Hauptgründe für die Wahl einer der drei wichtigsten Transportarten beschrieben. Er enthält auch ein ausführliches Diagramm als Hilfe bei der Auswahl.This section describes the main reasons for choosing any one of the three main transports, including a detailed decision chart for choosing among them.

Verwenden des HTTP-TransportsWhen to Use HTTP Transport

HTTP ist ein Anforderung-/Antwortprotokoll für den Austausch zwischen Clients und Servern.HTTP is a request/response protocol between clients and servers. Diese Transportart wird am häufigsten von Webbrowserclients verwendet, die mit einem Webserver kommunizieren.The most common application consists of Web-browser clients that communicate with a Web server. Der Client sendet eine Anforderung an einen Server, der nach Anforderungsnachrichten von Clients lauscht.The client sends a request to a server, which listens for client request messages. Wenn der Server eine Anforderung empfängt, gibt er eine Antwort zurück, die den Status der Anforderung enthält.When the server receives a request, it returns a response, which contains the status of the request. Wenn dieser Vorgang erfolgreich ist, werden optionale Daten, z. B. eine Webseite, eine Fehlermeldung oder andere Informationen, zurückgegeben.If successful, optional data, such as a Web page, an error message, or other information is returned. Weitere Informationen finden Sie unterFor more information aboutdie HTTP-Protokoll finden Sie unter HTTP - Hypertext Transfer Protocol. the HTTP protocol, see HTTP - Hypertext Transfer Protocol.

Das HTTP-Protokoll basiert nicht auf einer Verbindung. Nachdem die Antwort gesendet wurde, wird kein entsprechender Zustand beibehalten.The HTTP protocol is not connection-based—once the response is sent, no state is maintained. Die Anwendung muss jeden erforderlichen Zustand beibehalten, um Transaktionen mit mehreren Seiten verarbeiten zu können.To handle multiple-page transactions, the application must persist any necessary state.

Unter WCFWCF wird die HTTP-Transportbindung aus Gründen der Interoperabilität mit älteren Nicht-WCFWCF-Systemen optimiert.In WCFWCF, the HTTP transport binding is optimized for interoperability with legacy non-WCFWCF systems. Wenn alle kommunizierenden Parteien WCFWCF verwenden, sind auf TCP oder Named Pipes basierende Bindungen schneller.If all communicating parties are using WCFWCF, the TCP-based or named pipes-based bindings are faster. Weitere Informationen finden Sie unterFor more information, seeNetTcpBinding und NetNamedPipeBinding. NetTcpBinding and NetNamedPipeBinding.

Verwenden des TCP-TransportsWhen to Use the TCP Transport

TCP ist ein verbindungsbasierter, datenstromorientierter Zustellungsdienst mit End-to-End-Fehlererkennung und -behebung.TCP is a connection-based, stream-oriented delivery service with end-to-end error detection and correction. Verbindungsbasiert bedeutet, dass eine kommunikationssitzung zwischen Hosts eingerichtet wird, vor dem Austauschen von Daten.Connection-based means that a communication session between hosts is established before exchanging data. Ein Host ist ein Gerät in einem TCP/IP-Netzwerk, das über eine logische IP-Adresse verfügt.A host is any device on a TCP/IP network identified by a logical IP address.

TCP ermöglicht die zuverlässige Datenzustellung und Benutzerfreundlichkeit.TCP provides reliable data delivery and ease of use. TCP benachrichtigt den Absender der Paketzustellung, stellt sicher, dass Pakete auch in der Sendereihenfolge zugestellt werden, überträgt verloren gegangene Pakete neu und sorgt dafür, dass Datenpakete nicht dupliziert werden.Specifically, TCP notifies the sender of packet delivery, guarantees that packets are delivered in the same order in which they are sent, retransmits lost packets, and ensures that data packets are not duplicated. Beachten Sie, dass diese zuverlässige Zustellung zwischen zwei TCP/IP-Knoten gilt, und nicht dasselbe wie ist WS-ReliableMessaging, welche gilt zwischen Endpunkten, unabhängig davon, wie viele Zwischenknoten diese enthalten.Note that this reliable delivery applies between two TCP/IP nodes, and is not the same thing as WS-ReliableMessaging, which applies between endpoints, no matter how many intermediate nodes they may include.

Der WCFWCF-TCP-Transport ist für das Szenario optimiert, bei dem beide Enden der Kommunikation WCFWCF verwenden.The WCFWCF TCP transport is optimized for the scenario where both ends of the communication are using WCFWCF. Diese Bindung ist die schnellste WCFWCF-Bindung für Szenarien, bei denen die Kommunikation zwischen verschiedenen Computern erfolgt.This binding is the fastest WCFWCF binding for scenarios that involve communicating between different machines. Die Vorgänge des Nachrichtenaustauschs verwenden das BinaryMessageEncodingBindingElement für die optimierte Nachrichtenübertragung.The message exchanges use the BinaryMessageEncodingBindingElement for optimized message transfer. TCP ermöglicht die Duplexkommunikation und kann daher verwendet werden, um Duplexverträge zu implementieren, auch wenn der Client sich hinter NAT (Network Address Translation) befindet.TCP provides duplex communication and so can be used to implement duplex contracts, even if the client is behind network address translation (NAT).

Verwenden des Transports mittels benannter PipesWhen to Use the Named Pipe Transport

Eine benannte Pipe ist ein Objekt im Windows-Betriebssystemkernel, zum Beispiel ein Abschnitt eines gemeinsam genutzten Speichers, den Prozesse für die Kommunikation verwenden können.A named pipe is an object in the Windows operating system kernel, such as a section of shared memory that processes can use for communication. Eine benannte Pipe hat einen Namen und kann für die unidirektionale Kommunikation oder Duplexkommunikation zwischen Prozessen auf einem einzelnen Computer verwendet werden.A named pipe has a name, and can be used for one-way or duplex communication between processes on a single machine.

Wenn die Kommunikation zwischen verschiedenen WCFWCF-Anwendungen auf einem einzelnen Computer erforderlich ist und Sie jegliche Kommunikation von einem anderen Computer verhindern möchten, können Sie den Transport mittels benannter Pipes verwenden.When communication is required between different WCFWCF applications on a single computer, and you want to prevent any communication from another machine, then use the named pipes transport. Eine weitere Einschränkung besteht darin, dass Prozesse, die über Windows-Remotedesktop ausgeführt werden, ggf. auf die Windows-Remotedesktopsitzung beschränkt sind, wenn sie nicht über erweiterte Berechtigungen verfügen.An additional restriction is that processes running from Windows Remote Desktop may be restricted to the same Windows Remote Desktop session unless they have elevated privileges.

Warnung

Der folgende Fehler kann auftreten, bei der named Pipe-Transport mit einer WeakWildcard-URL-Reservierung für mehrere Websites in IIS gehostet: Fehler in der Aktivierungsdienst 'NetPipeActivator' des Protokolls 'net.pipe' beim Versuch, die für die Site '2', überwachen Daher wird das Protokoll für die Site vorübergehend deaktiviert.When using the named pipe transport with a weak wildcard URL reservation on multiple sites hosted in IIS, the following error may occur: An error occurred in the Activation Service 'NetPipeActivator' of the protocol 'net.pipe' while trying to listen for the site '2', thus the protocol is disabled for the site temporarily. Die Ausnahmemeldung Weitere Details angezeigt.See the exception message for more details. URL: WeakWildcard:net.pipe:/<Computername > / Status: ConflictingRegistration Ausnahme: Prozessname: SMSvcHost Prozess-ID: 1076\URL: WeakWildcard:net.pipe:/<machine name>/ Status: ConflictingRegistration Exception: Process Name: SMSvcHost Process ID: 1076\

Entscheidungspunkte für die Auswahl eines TransportsDecision Points for Choosing a Transport

In der folgenden Tabelle werden allgemeine Punkte beschrieben, die für die Auswahl eines Transports von Bedeutung sind.The following table describes the common decision points used to choose a transport. Sie sollten alle zusätzlichen Attribute und Transporte berücksichtigen, die für Ihre Anwendung gelten.You should consider any additional attributes and transports that apply to your application. Wählen Sie die Attribute aus, die für die Anwendung wichtig sind, wählen Sie die Transporte, die sich für die Attribute eignen, und wählen Sie anschließend die Transporte aus, die am besten mit Ihrem Attributsatz funktionieren.Identify the attributes that are important for your application, identify the transports that associate favorably with each of your attributes, and then select the transports that work best with your attribute set.

AttributAttribute BeschreibungDescription Häufig verwendete TransporteFavored transports
DiagnoseDiagnostics Die Diagnose ermöglicht es Ihnen, Probleme mit der Transportkonnektivität automatisch zu erkennen.Diagnostics allow you to automatically detect transport connectivity problems. Alle Transporte unterstützen die Fähigkeit, Fehlerinformationen zurückzusenden, die die Konnektivität beschreiben.All transports support the ability to send back fault information that describes connectivity. WCFWCF enthält jedoch keine Diagnosetools zum Untersuchen von Netzwerkproblemen.However, WCFWCF does not include diagnostic tools for investigating network issues. KeinerNone
HostingHosting Alle WCFWCF-Endpunkte müssen innerhalb einer Anwendung gehostet werden.All WCFWCF endpoints must be hosted inside an application. IIS 6.0IIS 6.0 und ältere Versionen unterstützen nur Hostanwendungen, die den HTTP-Transport verwenden. and earlier support only hosting applications that use the HTTP transport. Windows VistaWindows Vista unterstützt das Hosten von allen WCFWCF-Transporten, auch von TCP und Named Pipes.On Windows VistaWindows Vista, support is added for hosting all WCFWCF transports, including TCP and named pipes. Weitere Informationen finden Sie unterFor more information, seeIn Internetinformationsdienste (IIS) hosten und Hosten in Windows Process Activation Service. Hosting in Internet Information Services and Hosting in Windows Process Activation Service. HTTPHTTP
InspektionInspection Die Inspektion ist die Fähigkeit, während der Übertragung Informationen aus Nachrichten zu extrahieren und zu verarbeiten.Inspection is the ability to extract and process information from messages during transmission. Das HTTP-Protokoll trennt Routing- und Steuerungsinformationen von den Daten, um das Erstellen von Tools zu vereinfachen, die Nachrichten untersuchen und analysieren.The HTTP protocol separates routing and control information from data, making it easier to build tools that inspect and analyze messages. Transporte, die leicht zu überprüfen sind, erfordern ggf. auch weniger Verarbeitungsleistung in Netzwerkeinrichtungen.Transports that are easy to inspect may also require less processing power in network appliances. Die verwendete Sicherheitsebene wirkt sich darauf aus, ob Nachrichten überprüft werden können.The level of security used impacts whether messages can be inspected. HTTPHTTP
WartezeitLatency Die Wartezeit ist die Mindestmenge an Zeit, die erforderlich ist, um einen Austausch von Nachrichten durchzuführen.Latency is the minimum amount of time required to complete an exchange of messages. Alle Netzwerkvorgänge weisen je nach gewähltem Transport mehr oder weniger Wartezeit (Latenz) auf.All network operations have more or less latency depending on the choice of transport. Das Verwenden der Duplexkommunikation oder unidirektionalen Kommunikation mit einem Transport, der das systemeigene Nachrichtenaustauschmuster Anforderung/Antwort verwendet, zum Beispiel HTTP, kann zu einer längeren Wartezeit führen, da die Korrelation von Nachrichten erforderlich ist.Using duplex or one-way communication with a transport whose native message exchange pattern is request-reply, such as HTTP, can cause additional latency due to the forced correlation of messages. Erwägen Sie in dieser Situation, einen Transport zu verwenden, der als systemeigenes Nachrichtenaustauschmuster Duplex verwendet, zum Beispiel TCP.In this situation, consider using a transport whose native message exchange pattern is duplex, such as TCP. TCP, NamedTCP, Named

PipePipe
ReichweiteReach Die Reichweite eines Transports gibt an, in welchem Umfang der Transport eine Verbindung zu anderen Systemen herstellen kann.The reach of a transport reflects how capable the transport is at connecting with other systems. Der Transport mittels benannter Pipes besitzt nur eine geringe Reichweite. Er kann nur eine Verbindung zu Diensten herstellen, die auf dem gleichen Computer ausgeführt werden.The named pipe transport has very little reach; it can only connect to services running on the same machine. Die Transportarten TCP und HTTP verfügen jeweils über eine ausgezeichnete Reichweite und können auch einige NAT- und Firewallkonfigurationen durchdringen.The TCP and HTTP transports both have excellent reach and can penetrate some NAT and firewall configurations. Weitere Informationen finden Sie unterFor more information, seeArbeiten mit NATs und Firewalls. Working with NATs and Firewalls. HTTP, TCPHTTP, TCP
SicherheitSecurity Die Sicherheit ist die Fähigkeit, während der Übertragung Nachrichten zu schützen, indem die Vertraulichkeit, Integrität oder Authentifizierung sichergestellt wird.Security is the ability to protect messages during transfer by supplying confidentiality, integrity, or authentication. Die Vertraulichkeit schützt eine Nachricht davor, untersucht zu werden, die Integrität schützt eine Nachricht davor, geändert zu werden, und die Authentifizierung liefert zuverlässige Informationen zum Absender oder Empfänger der Nachricht.Confidentiality protects a message from being examined, integrity protects a message from being modified, and authentication gives assurances about the sender or receiver of the message.

WCFWCF unterstützt die Übertragungssicherheit auf der Nachrichtenebene und auf der Transportebene. supports transfer security both at the message level and transport level. Die Nachrichtensicherheit wird mit einem Transport verknüpft, wenn der Transport einen gepufferten Übertragungsmodus unterstützt.Message security composes with a transport if the transport supports a buffered transfer mode. Die Unterstützung für die Transportsicherheit ändert sich in Abhängigkeit vom gewählten Transport.Support for transport security varies depending on the chosen transport. Die Transportarten HTTP, TCP und benannte Pipe verfügen in Bezug auf die Unterstützung der Transportsicherheit über eine angemessene Parität.The HTTP, TCP, and named pipe transports have reasonable parity in their support for transport security.
AlleAll
DurchsatzThroughput Der Durchsatz misst die Datenmenge, die in einem bestimmten Zeitraum übertragen und verarbeitet werden kann.Throughput measures the amount of data that can be transmitted and processed in a specified period of time. Wie die Wartezeit auch, kann der gewählte Transport sich auf den Durchsatz für Dienstvorgänge auswirken.Like latency, the chosen transport can affect the throughput for service operations. Die Maximierung des Durchsatzes für einen Transport erfordert sowohl die Minimierung des Mehraufwands für die Übertragung von Inhalten als auch die Reduzierung des Wartezeitraums für den Abschluss des Nachrichtenaustauschs.Maximizing throughput for a transport requires minimizing both the overhead of transmitting content as well as minimizing the time spent waiting for message exchanges to complete. Sowohl der TCP-Transport als auch der Transport mittels benannter Pipes fügen dem Nachrichtentext wenig Mehraufwand hinzu und unterstützen eine systemeigene Duplexform, die die Wartezeit auf Antworten für Nachrichten reduziert.Both the TCP and named pipe transports add little overhead to the message body and support a native duplex shape that reduces the wait for message replies. TCP, benannte PipeTCP, named pipe
ToolsTooling Die Tools umfassen die Unterstützung für Drittanbieteranwendungen für ein Protokoll, mit dem die Entwicklung, die Diagnose, das Hosten und andere Aktivitäten durchgeführt werden können.Tooling represents third-party application support for a protocol for development, diagnosis, hosting, and other activities. Entwicklungstools und Softwareanwendungen, die in Verbindung mit dem HTTP-Protokoll verwendet werden können, stellen eine besonders hohe Investition dar.Developing tools and software to work with the HTTP protocol signifies a particularly large investment. HTTPHTTP

Siehe auchSee Also

BasicHttpBinding
< xref:System.ServiceModel.WsHttpBinding>< xref:System.ServiceModel.WsHttpBinding>
< System.ServiceModel.WsDualHttpBinding < System.ServiceModel.WsFederationHttpBinding HttpTransportBindingElement< System.ServiceModel.WsDualHttpBinding < System.ServiceModel.WsFederationHttpBinding HttpTransportBindingElement
NetTcpBinding
TcpTransportBindingElement
NetNamedPipeBinding
NamedPipeTransportBindingElement
BindungenBindings
Vom System bereitgestellte BindungenSystem-Provided Bindings
Erstellen benutzerdefinierter BindungenCreating User-Defined Bindings