Dela via


Välja en transport

I det här avsnittet beskrivs kriterier för att välja bland de tre viktigaste transporterna som ingår i Windows Communication Foundation (WCF): HTTP, TCP och namngivna rör. WCF innehåller också en meddelandekötransport (kallas även MSMQ), men det här dokumentet omfattar inte meddelandeköer.

WCF-programmeringsmodellen separerar slutpunktsåtgärder (uttryckta i ett tjänstkontrakt) från transportmekanismen som ansluter två slutpunkter. Detta ger dig flexibiliteten att bestämma hur du ska exponera dina tjänster för nätverket.

I WCF anger du hur du överför data över ett nätverk mellan slutpunkter med hjälp av en bindning, som består av en sekvens med bindningselement. En transport representeras av ett transportbindningselement, som är en del av bindningen. En bindning innehåller valfria protokollbindningselement, till exempel säkerhet, ett obligatoriskt meddelandekodarbindningselement och ett obligatoriskt transportbindningselement. En transport skickar eller tar emot den serialiserade formen av ett meddelande till eller från ett annat program.

Om du måste ansluta till en befintlig klient eller server kanske du inte har något val om att använda en viss transport. WCF-tjänster kan dock göras tillgängliga via flera slutpunkter, var och en med en annan transport. När en enda transport inte täcker den avsedda målgruppen för din tjänst bör du överväga att exponera tjänsten över flera slutpunkter. Klientprogram kan sedan använda den slutpunkt som passar dem bäst.

När du har valt en transport måste du välja en bindning som använder den. Du kan välja en bindning som tillhandahålls av systemet (se System-Provided Bindings) eller skapa en egen anpassad bindning (se Anpassade bindningar). Du kan också skapa en egen bindning. Mer information finns i Skapa användardefinierade bindningar.

Fördelar med varje transport

I det här avsnittet beskrivs de främsta orsakerna till att välja någon av de tre viktigaste transporterna, inklusive ett detaljerat beslutsdiagram för att välja bland dem.

När http-transport ska användas

HTTP är ett protokoll för begäran/svar mellan klienter och servrar. Det vanligaste programmet består av webbläsarklienter som kommunicerar med en webbserver. Klienten skickar en begäran till en server som lyssnar efter klientbegärandemeddelanden. När servern tar emot en begäran returneras ett svar som innehåller status för begäran. Om det lyckas returneras valfria data, till exempel en webbsida, ett felmeddelande eller annan information. Mer information om HTTP-protokollet finns i HTTP – Hypertext Transfer Protocol.

HTTP-protokollet är inte anslutningsbaserat – när svaret har skickats underhålls inget tillstånd. Om du vill hantera transaktioner med flera sidor måste programmet bevara alla nödvändiga tillstånd.

I WCF är HTTP-transportbindningen optimerad för samverkan med äldre icke-WCF-system. Om alla kommunicerande parter använder WCF går TCP-baserade eller namngivna rörbaserade bindningar snabbare. Mer information finns i NetTcpBinding och NetNamedPipeBinding.

När TCP-transporten ska användas

TCP är en anslutningsbaserad, strömorienterad leveranstjänst med felidentifiering och korrigering från slutpunkt till slutpunkt. Anslut ionsbaserad innebär att en kommunikationssession mellan värdar upprättas innan data utbytas. En värd är en enhet i ett TCP/IP-nätverk som identifieras av en logisk IP-adress.

TCP ger tillförlitlig dataleverans och enkel användning. Mer specifikt meddelar TCP avsändaren av paketleveransen, garanterar att paket levereras i samma ordning som de skickas, överför förlorade paket igen och säkerställer att datapaket inte dupliceras. Observera att den här tillförlitliga leveransen gäller mellan två TCP/IP-noder och inte är samma sak som WS-ReliableMessaging, som gäller mellan slutpunkter, oavsett hur många mellanliggande noder de kan innehålla.

WCF TCP-transporten är optimerad för scenariot där båda ändarna av kommunikationen använder WCF. Den här bindningen är den snabbaste WCF-bindningen för scenarier som omfattar kommunikation mellan olika datorer. Meddelandeutbytena BinaryMessageEncodingBindingElement använder för optimerad meddelandeöverföring. TCP tillhandahåller duplexkommunikation och kan därför användas för att implementera duplexkontrakt, även om klienten ligger bakom NAT (Network Address Translation).

När du ska använda den namngivna rörtransporten

Ett namngivet rör är ett objekt i Windows-operativsystemets kernel, till exempel ett avsnitt av delat minne som processer kan använda för kommunikation. Ett namngivet rör har ett namn och kan användas för enkelriktad eller dubbelriktad kommunikation mellan processer på en enda dator.

När kommunikation krävs mellan olika WCF-program på en enda dator, och du vill förhindra all kommunikation från en annan dator, använder du den namngivna rörtransporten. En ytterligare begränsning är att processer som körs från Windows Fjärrskrivbord kan begränsas till samma Windows Fjärrskrivbord-session om de inte har utökade privilegier.

Varning

När du använder den namngivna rörtransporten med en svag url-reservation med jokertecken på flera platser i IIS kan följande fel inträffa: Ett fel uppstod i aktiveringstjänsten "NetPipeActivator" för protokollet "net.pipe" när du försökte lyssna efter platsen "2", vilket innebär att protokollet inaktiveras tillfälligt för platsen. Mer information finns i undantagsmeddelandet. URL: WeakWildcard:net.pipe:/<machine name>/ Status: ConflictingRegistration Exception: Process Name: SMSvcHost Process ID: 1076\

Beslutspunkter för att välja en transport

I följande tabell beskrivs de vanliga beslutspunkter som används för att välja en transport. Du bör överväga eventuella ytterligare attribut och transporter som gäller för ditt program. Identifiera de attribut som är viktiga för ditt program, identifiera de transporter som associeras positivt med vart och ett av dina attribut och välj sedan de transporter som fungerar bäst med din attributuppsättning.

Attribut beskrivning Favoriserade transporter
Diagnostik Med diagnostik kan du automatiskt identifiera problem med transportanslutningen. Alla transporter stöder möjligheten att skicka tillbaka felinformation som beskriver anslutningen. WCF innehåller dock inte diagnostikverktyg för att undersöka nätverksproblem. Ingen
Värd Alla WCF-slutpunkter måste finnas i ett program. IIS 6.0 och tidigare versioner stöder endast värdprogram som använder HTTP-transporten. I Windows Vista läggs stöd till för att hantera alla WCF-transporter, inklusive TCP och namngivna rör. Mer information finns i Hosting in Internet Information Services and Hosting in Windows Process Activation Service (Värd i Internet Information Services och hosting i Windows Process Activation Service). HTTP
Inspektion Inspektion är möjligheten att extrahera och bearbeta information från meddelanden under överföringen. HTTP-protokollet separerar routning och kontrollinformation från data, vilket gör det enklare att skapa verktyg som inspekterar och analyserar meddelanden. Transporter som är lätta att inspektera kan också kräva mindre bearbetningskraft i nätverksinstallationer. Vilken säkerhetsnivå som används påverkar om meddelanden kan inspekteras. HTTP
Svarstid Svarstid är den minsta tid som krävs för att slutföra ett utbyte av meddelanden. Alla nätverksåtgärder har mer eller mindre svarstid beroende på valet av transport. Om du använder dubbelsidig eller enkelriktad kommunikation med en transport vars interna meddelandeutbytesmönster är begäran-svar, till exempel HTTP, kan det orsaka ytterligare svarstid på grund av tvingad korrelation mellan meddelanden. I den här situationen bör du överväga att använda en transport vars inbyggda meddelandeutbytesmönster är duplex, till exempel TCP. TCP, med namnet

Pipe
Reach Transportens räckvidd återspeglar hur kapabel transporten är att ansluta till andra system. Den namngivna rörtransporten har mycket liten räckvidd; Den kan bara ansluta till tjänster som körs på samma dator. Både TCP- och HTTP-transporterna har utmärkt räckvidd och kan penetrera vissa NAT- och brandväggskonfigurationer. Mer information finns i Arbeta med NAT och brandväggar. HTTP, TCP
Säkerhet Säkerhet är möjligheten att skydda meddelanden under överföringen genom att tillhandahålla konfidentialitet, integritet eller autentisering. Konfidentialitet skyddar ett meddelande från att undersökas, integritet skyddar ett meddelande från att ändras och autentisering ger garantier om avsändaren eller mottagaren av meddelandet.

WCF stöder överföringssäkerhet både på meddelandenivå och transportnivå. Meddelandesäkerhet består av en transport om transporten stöder ett buffrat överföringsläge. Stöd för transportsäkerhet varierar beroende på vilken transport som valts. HTTP-, TCP- och namngivna rörtransporter har rimlig paritet i sitt stöd för transportsäkerhet.
Alla
Genomflöde Dataflödet mäter mängden data som kan överföras och bearbetas under en angiven tidsperiod. Precis som svarstid kan den valda transporten påverka dataflödet för tjänståtgärder. Att maximera dataflödet för en transport kräver att du minimerar både omkostnaderna för att överföra innehåll och minimerar den tid som ägnas åt att vänta på att meddelandeutbyten ska slutföras. Både TCP och namngivna rörtransporter lägger till lite omkostnader i meddelandetexten och stöder en inbyggd duplexform som minskar väntan på meddelandesvar. TCP, med namnet pipe
Verktyg Verktyg representerar programstöd från tredje part för ett protokoll för utveckling, diagnos, värd och andra aktiviteter. Att utveckla verktyg och programvara för att arbeta med HTTP-protokollet innebär en särskilt stor investering. HTTP

Se även