Sdílet prostřednictvím


Spolehlivé relace – přehled

Spolehlivé zasílání zpráv SOAP (Windows Communication Foundation) (WCF) poskytuje komplexní spolehlivost přenosu zpráv mezi koncovými body SOAP. Dělá to v sítích, které jsou nespolehlivé tím, že přejdou chyby přenosu a selhání na úrovni zpráv SOAP. Konkrétně poskytuje doručování zpráv odesílaných přes protokol SOAP nebo zprostředkovatelé dopravy založené na relacích, jednoúčelové a (volitelné). Doručování založené na relacích poskytuje seskupení zpráv v relaci s volitelným pořadím zpráv.

Toto téma popisuje spolehlivé relace, jak a kdy je používat a jak je zabezpečit.

Spolehlivé relace WCF

Spolehlivé relace WCF je implementace spolehlivého zasílání zpráv SOAP, jak je definováno protokolem WS-ReliableMessaging.

Spolehlivé zasílání zpráv WCF SOAP poskytuje ucelenou spolehlivou relaci mezi dvěma koncovými body bez ohledu na počet nebo typ zprostředkovatelů, které oddělují koncové body zasílání zpráv. Patří sem všechny zprostředkovatelé přenosu, kteří nepoužívají protokol SOAP (například proxy servery HTTP) nebo zprostředkovatelé používající protokol SOAP (například směrovače nebo mosty založené na protokolu SOAP), které jsou potřeba pro tok zpráv mezi koncovými body. Spolehlivý kanál relace podporuje interaktivní komunikaci tak, aby služby připojené takovým kanálem běžely souběžně a vyměňovaly a zpracovávaly zprávy za podmínek nízké latence, tj. v relativně krátkých intervalech času. Tato spojka znamená, že tyto komponenty společně postupují nebo selžou, takže mezi nimi není žádná izolace.

Spolehlivá relace maskuje dva druhy selhání:

  • Selhání na úrovni zpráv PROTOKOLU SOAP, která zahrnuje ztracené nebo duplicitní zprávy a zprávy, které přicházejí v jiném pořadí než v pořadí, ve kterém byly odeslány.

  • Chyby přenosu.

Spolehlivá relace implementuje protokol WS-ReliableMessaging a okno přenosu v paměti za účelem maskování selhání na úrovni zpráv SOAP a opětovné navázání připojení v případě selhání přenosu.

Spolehlivá relace poskytuje zprávy PROTOKOLU SOAP, které protokol TCP poskytuje pro pakety PROTOKOLU IP. Připojení soketu TCP poskytuje jednotný přenos paketů IP mezi uzly v pořadí. Spolehlivý kanál poskytuje stejný typ spolehlivého přenosu, ale liší se od spolehlivosti soketů TCP následujícími způsoby:

  • Spolehlivost je na úrovni zprávy SOAP, ne pro libovolný paket bajtů s libovolnou velikostí.

  • Spolehlivost je přenosově neutrální, nejen pro přenos přes protokol TCP.

  • Spolehlivost není svázaná s konkrétní přenosovou relací (například relace, která poskytuje připojení TCP) a může používat více přenosových relací současně nebo sekvenčně po celou dobu životnosti spolehlivé relace.

  • Spolehlivá relace je mezi koncovými body SOAP odesílatele a příjemce bez ohledu na počet přenosových připojení potřebných pro připojení mezi nimi. Stručně řečeno, spolehlivost protokolu TCP končí tam, kde končí přenosové připojení, zatímco spolehlivá relace poskytuje komplexní spolehlivost.

Spolehlivé relace a vazby

Jak už bylo zmíněno dříve, spolehlivá relace je přenosově neutrální. Můžete také vytvořit spolehlivou relaci s mnoha vzory výměny zpráv, jako je odpověď na žádost nebo duplexní. Spolehlivá relace WCF je vystavena jako vlastnost sady vazeb.

Použijte spolehlivou relaci na koncových bodech, které používají:

  • Standardní přenosové vazby založené na protokolu HTTP:

    • WsHttpBinding a zpřístupňuje žádosti a odpovědi nebo jednosměrné kontrakty.

    • Pokud používáte spolehlivou relaci přes odpověď na žádost nebo jednoduchý jednosměrný kontrakt služby.

    • WsDualHttpBinding a zpřístupňuje duplexní kontrakty, odpovědi na žádosti nebo jednosměrné kontrakty.

    • WsFederationHttpBinding a zpřístupňuje žádosti a odpovědi nebo jednosměrné kontrakty.

  • Standardní přenosové vazby založené na protokolu TCP:

    • NetTcpBinding a zpřístupňuje duplexní, žádost o odpověď nebo jednosměrné kontrakty.

Použijte spolehlivou relaci u všech ostatních vazeb vytvořením vlastní vazby, jako je HTTPS (další informace o problémech, viz Spolehlivé relace a zabezpečení) nebo pojmenovanou vazbu kanálu.

Spolehlivou relaci můžete naskládat na různé typy podkladových kanálů a výsledný tvar kanálu spolehlivé relace se liší. Na klientovi i na serveru závisí typ podporovaného kanálu spolehlivé relace na typu použitého podkladového kanálu. Následující tabulka uvádí typy kanálů relací podporované v klientovi jako funkci základního typu kanálu.

Podporované typy spolehlivých kanálů relací† IRequestChannel IRequestSessionChannel IDuplexChannel IDuplexSessionChannel
IOutputSessionChannel Ano Ano Ano Ano
IRequestSessionChannel Ano Ano No No
IDuplexSessionChannel No No Ano Yes

† Podporované typy kanálů jsou hodnoty, které jsou k dispozici pro obecnou TChannel hodnotu parametru, která je předána do BuildChannelFactory<TChannel>(BindingContext) metody.

Následující tabulka uvádí typy kanálů relací podporované na serveru jako funkci základního typu kanálu.

Podporované typy spolehlivých kanálů relací} IReplyChannel IReplySessionChannel IDuplexChannel IDuplexSessionChannel
IInputSessionChannel Ano Ano Ano Ano
IReplySessionChannel Ano Ano No No
IDuplexSessionChannel No No Ano Yes

{Podporované typy kanálů jsou hodnoty, které jsou k dispozici pro obecnou TChannel hodnotu parametru, která je předána metodě BuildChannelListener<TChannel>(BindingContext) .

Spolehlivé relace a zabezpečení

Zabezpečení spolehlivé relace je důležité, aby se zajistilo, že komunikující strany (služba a klient) jsou ověřeny a že zprávy vyměňované v relaci nejsou manipulovány. Kromě toho je důležité zajistit integritu každé jednotlivé spolehlivé relace. Spolehlivá relace je zabezpečená tím, že ji provážete s kontextem zabezpečení, který je reprezentovaný a spravovaný kanálem relace zabezpečení. Kanál zabezpečení poskytuje relaci zabezpečení. Tokeny zabezpečení vyměněné během vytváření relace se pak použijí k zabezpečení zpráv ve spolehlivé relaci.

Pokud je spolehlivá relace přes tcp-S, relace TCP je svázaná se spolehlivou relací. Zabezpečení přenosu proto zajišťuje, že zabezpečení je také svázané se spolehlivou relací. V takovém případě je opětovné zřízení připojení vypnuté.

Jedinou výjimkou je použití protokolu HTTPS. Relace SSL (Secure Sockets Layer) není vázána na spolehlivou relaci. To představuje hrozbu, protože relace, které sdílejí kontext zabezpečení (relace SSL), nejsou vzájemně chráněny; v závislosti na aplikaci to může nebo nemusí představovat skutečnou hrozbu.

Používání spolehlivých relací

Pokud chcete použít spolehlivé relace WCF, vytvořte koncový bod s vazbou, která podporuje spolehlivou relaci. Použijte jednu ze systémových vazeb, které WCF poskytuje s povolenou spolehlivou relací, nebo vytvořte vlastní vazbu, která to dělá.

Mezi systémové vazby, které podporují a umožňují spolehlivou relaci ve výchozím nastavení, patří:

Systémové vazby, které podporují spolehlivou relaci jako možnost, ale ve výchozím nastavení ji nepovolují, zahrnují:

Příklad vytvoření vlastní vazby najdete v tématu Postupy: Vytvoření vlastní vazby spolehlivé relace pomocí protokolu HTTPS.

Diskuzi o vazbách WCF, které podporují spolehlivé relace, naleznete v tématu Systémové vazby.

Kdy použít spolehlivé relace

Je důležité pochopit, kdy ve své aplikaci používat spolehlivé relace. WCF podporuje spolehlivé relace mezi koncovými body, které jsou aktivní a aktivní současně. Pokud vaše aplikace po určitou dobu vyžaduje nedostupnost jednoho z koncových bodů, použijte fronty k dosažení spolehlivosti.

Pokud scénář vyžaduje dva koncové body připojené přes protokol TCP, může být k zajištění spolehlivé výměny zpráv dostačující protokol TCP. I když není nutné používat spolehlivou relaci, protože tcp zajišťuje, že pakety přicházejí v pořadí a pouze jednou.

Pokud má váš scénář některou z následujících charakteristik, musíte zvážit použití spolehlivé relace.

  • Zprostředkovatelé SOAP, jako jsou směrovače SOAP

  • Proxy zprostředkovatelé nebo dopravní mosty

  • Přerušované připojení

  • Relace přes HTTP

Viz také