Delen via


Een transport kiezen

In dit onderwerp worden criteria besproken voor het kiezen van de drie belangrijkste transporten die zijn opgenomen in Windows Communication Foundation (WCF): HTTP, TCP en named pipes. WCF bevat ook een transport van berichtenwachtrijen (ook wel MSMQ genoemd), maar dit document heeft geen betrekking op berichtenwachtrijen.

Het WCF-programmeermodel scheidt eindpuntbewerkingen (zoals uitgedrukt in een servicecontract) van het transportmechanisme dat twee eindpunten verbindt. Dit biedt u de flexibiliteit om te bepalen hoe u uw services beschikbaar maakt voor het netwerk.

In WCF geeft u op hoe u gegevens overbrengt over een netwerk tussen eindpunten met behulp van een binding, die bestaat uit een reeks bindingselementen. Een transport wordt vertegenwoordigd door een transportbindingselement, dat deel uitmaakt van de binding. Een binding bevat optionele protocolbindingselementen, zoals beveiliging, een vereist element voor berichtcoderingsprogramma's en een vereist transportbindingselement. Een transport verzendt of ontvangt de geserialiseerde vorm van een bericht naar of van een andere toepassing.

Als u verbinding moet maken met een bestaande client of server, hebt u mogelijk geen keuze over het gebruik van een bepaald transport. WCF-services kunnen echter toegankelijk worden gemaakt via meerdere eindpunten, elk met een ander transport. Wanneer één transport niet de beoogde doelgroep voor uw service omvat, kunt u overwegen om de service beschikbaar te maken via meerdere eindpunten. Clienttoepassingen kunnen vervolgens het eindpunt gebruiken dat het beste voor hen is.

Nadat u een transport hebt gekozen, moet u een binding selecteren die deze gebruikt. U kunt een door het systeem geleverde binding kiezen (zie Door het systeem geleverde bindingen) of u kunt uw eigen aangepaste binding bouwen (zie Aangepaste bindingen). U kunt ook uw eigen binding maken. Zie Door de gebruiker gedefinieerde bindingen maken voor meer informatie.

Voordelen van elk transport

In deze sectie worden de belangrijkste redenen beschreven voor het kiezen van een van de drie hoofdtransporten, inclusief een gedetailleerd beslissingsdiagram voor het kiezen van een van deze transporten.

Wanneer http-transport gebruiken

HTTP is een aanvraag-/antwoordprotocol tussen clients en servers. De meest voorkomende toepassing bestaat uit webbrowserclients die communiceren met een webserver. De client verzendt een aanvraag naar een server, die luistert naar berichten van clientaanvragen. Wanneer de server een aanvraag ontvangt, retourneert deze een antwoord dat de status van de aanvraag bevat. Als dit lukt, worden optionele gegevens, zoals een webpagina, een foutbericht of andere informatie geretourneerd. Zie HTTP - Hypertext Transfer Protocol voor meer informatie over het HTTP-protocol.

Het HTTP-protocol is niet op basis van een verbinding. Zodra het antwoord is verzonden, blijft er geen status behouden. Als u transacties met meerdere pagina's wilt verwerken, moet de toepassing de benodigde status behouden.

In WCF is de HTTP-transportbinding geoptimaliseerd voor interoperabiliteit met verouderde niet-WCF-systemen. Als alle communicerende partijen GEBRUIKMAKEN van WCF, zijn de bindingen op basis van TCP of named pipes sneller. Zie voor meer informatie NetTcpBinding en NetNamedPipeBinding.

Wanneer het TCP-transport gebruiken

TCP is een op verbindingen gebaseerde, streamgeoriënteerde leveringsservice met end-to-end foutdetectie en -correctie. Verbinding maken ion-based betekent dat er een communicatiesessie tussen hosts tot stand wordt gebracht voordat gegevens worden uitgewisseld. Een host is elk apparaat in een TCP/IP-netwerk dat wordt geïdentificeerd door een logisch IP-adres.

TCP biedt betrouwbare levering van gegevens en gebruiksgemak. Tcp geeft de afzender van pakketbezorging een melding, garandeert dat pakketten worden geleverd in dezelfde volgorde waarin ze worden verzonden, verloren pakketten opnieuw worden verzonden en ervoor zorgt dat gegevenspakketten niet worden gedupliceerd. Houd er rekening mee dat deze betrouwbare levering van toepassing is tussen twee TCP/IP-knooppunten en niet hetzelfde is als WS-ReliableMessaging, dat van toepassing is tussen eindpunten, ongeacht het aantal tussenliggende knooppunten dat ze kunnen bevatten.

Het WCF TCP-transport is geoptimaliseerd voor het scenario waarin beide uiteinden van de communicatie WCF gebruiken. Deze binding is de snelste WCF-binding voor scenario's die betrekking hebben op communicatie tussen verschillende computers. De berichtenuitwisseling gebruikt de BinaryMessageEncodingBindingElement functie voor geoptimaliseerde berichtoverdracht. TCP biedt duplexcommunicatie en kan dus worden gebruikt voor het implementeren van duplexcontracten, zelfs als de client zich achter network address translation (NAT) bevindt.

Wanneer gebruikt u het benoemde pijptransport

Een benoemde pipe is een object in de Windows-besturingssysteemkernel, zoals een gedeelte van gedeeld geheugen dat processen kunnen gebruiken voor communicatie. Een benoemde pijp heeft een naam en kan worden gebruikt voor eenrichtings- of duplexcommunicatie tussen processen op één computer.

Wanneer communicatie tussen verschillende WCF-toepassingen op één computer is vereist en u wilt voorkomen dat er communicatie van een andere computer is, gebruikt u vervolgens het benoemde pijptransport. Een extra beperking is dat processen die worden uitgevoerd vanuit Windows Extern bureaublad mogelijk worden beperkt tot dezelfde Windows Extern bureaublad-sessie, tenzij ze verhoogde bevoegdheden hebben.

Waarschuwing

Wanneer u het benoemde pijptransport gebruikt met een zwakke jokerteken-URL-reservering op meerdere sites die worden gehost in IIS, kan de volgende fout optreden: er is een fout opgetreden in de Activeringsservice 'NetPipeActivator' van het protocol 'net.pipe' tijdens het luisteren naar de site '2', waardoor het protocol tijdelijk voor de site is uitgeschakeld. Zie het uitzonderingsbericht voor meer informatie. URL: WeakWildcard:net.pipe:/<machine name>/ Status: ConflictingRegistration Exception: Process Name: SMSvcHost Process ID: 1076\

Beslissingspunten voor het kiezen van een transport

In de volgende tabel worden de algemene beslissingspunten beschreven die worden gebruikt om een transport te kiezen. Houd rekening met eventuele aanvullende kenmerken en transporten die van toepassing zijn op uw toepassing. Identificeer de kenmerken die belangrijk zijn voor uw toepassing, identificeer de transporten die gunstig zijn gekoppeld aan elk van uw kenmerken en selecteer vervolgens de transporten die het beste werken met uw kenmerkenset.

Kenmerk Beschrijving Favoriete transporten
Diagnostiek Met diagnostische gegevens kunt u automatisch problemen met de transportconnectiviteit detecteren. Alle transporten ondersteunen de mogelijkheid om foutinformatie terug te sturen die de connectiviteit beschrijft. WCF bevat echter geen diagnostische hulpprogramma's voor het onderzoeken van netwerkproblemen. Geen
Hosting Alle WCF-eindpunten moeten worden gehost in een toepassing. IIS 6.0 en eerdere versies ondersteunen alleen het hosten van toepassingen die gebruikmaken van het HTTP-transport. Op Windows Vista wordt ondersteuning toegevoegd voor het hosten van alle WCF-transporten, inclusief TCP en named pipes. Zie Hosting in Internet Information Services en Hosting in Windows Process Activation Service voor meer informatie. HTTP
Inspectie Inspectie is de mogelijkheid om informatie uit berichten tijdens verzending te extraheren en te verwerken. Het HTTP-protocol scheidt routerings- en controlegegevens van gegevens, waardoor het eenvoudiger is om hulpprogramma's te bouwen die berichten inspecteren en analyseren. Transporten die gemakkelijk te inspecteren zijn, vereisen mogelijk ook minder verwerkingskracht in netwerkapparaten. Het gebruikte beveiligingsniveau is van invloed op de vraag of berichten kunnen worden gecontroleerd. HTTP
Latentie Latentie is de minimale tijd die nodig is om een uitwisseling van berichten te voltooien. Alle netwerkbewerkingen hebben meer of minder latentie, afhankelijk van de keuze van het transport. Het gebruik van dubbelzijdige of eenrichtingscommunicatie met een transport waarvan het systeemeigen berichtuitwisselingspatroon aanvraag-antwoord is, zoals HTTP, kan extra latentie veroorzaken vanwege de geforceerde correlatie van berichten. In deze situatie kunt u overwegen een transport te gebruiken waarvan het systeemeigen berichtuitwisselingspatroon duplex is, zoals TCP. TCP, benoemd

Pijp
Reach Het bereik van een transport geeft aan hoe geschikt het transport is bij het verbinden met andere systemen. Het benoemde pijptransport heeft zeer weinig bereik; het kan alleen verbinding maken met services die op dezelfde computer worden uitgevoerd. De TCP- en HTTP-transporten hebben beide een uitstekend bereik en kunnen enkele NAT- en firewallconfiguraties binnendringen. Zie Werken met NAT's en firewalls voor meer informatie. HTTP, TCP
Beveiliging Beveiliging is de mogelijkheid om berichten tijdens de overdracht te beschermen door vertrouwelijkheid, integriteit of verificatie te leveren. Vertrouwelijkheid beschermt een bericht tegen onderzoek, integriteit beschermt een bericht tegen wijziging en verificatie geeft garanties over de afzender of ontvanger van het bericht.

WCF ondersteunt overdrachtsbeveiliging zowel op berichtniveau als op transportniveau. Berichtbeveiliging bestaat uit een transport als het transport een bufferoverdrachtsmodus ondersteunt. De ondersteuning voor transportbeveiliging varieert afhankelijk van het gekozen transport. De HTTP-, TCP- en benoemde pijptransporten hebben redelijke pariteit in hun ondersteuning voor transportbeveiliging.
Alle
Doorvoer Doorvoer meet de hoeveelheid gegevens die in een opgegeven periode kunnen worden verzonden en verwerkt. Net als latentie kan het gekozen transport van invloed zijn op de doorvoer voor servicebewerkingen. Het maximaliseren van de doorvoer voor een transport vereist het minimaliseren van zowel de overhead van het verzenden van inhoud als het minimaliseren van de tijd die nodig is om te wachten totdat berichtenuitwisseling is voltooid. Zowel de TCP- als benoemde pijptransporten voegen weinig overhead toe aan de hoofdtekst van het bericht en ondersteunen een systeemeigen duplex-shape die het wachten op antwoorden op berichten vermindert. TCP, benoemde pijp
Hulpprogramma's Hulpprogramma's vertegenwoordigen ondersteuning van toepassingen van derden voor een protocol voor ontwikkeling, diagnose, hosting en andere activiteiten. Het ontwikkelen van hulpprogramma's en software voor gebruik met het HTTP-protocol betekent een bijzonder grote investering. HTTP

Zie ook