Sdílet prostřednictvím


Doporučené postupy pro spolehlivé relace

Toto téma popisuje osvědčené postupy pro spolehlivé relace.

Nastavení MaxTransferWindowSize

Spolehlivé relace ve Windows Communication Foundation (WCF) používají okno přenosu k uložení zpráv v klientovi a službě. Konfigurovatelná vlastnost MaxTransferWindowSize označuje, kolik zpráv může okno přenosu obsahovat.

U odesílatele to znamená, kolik zpráv může okno přenosu při čekání na potvrzení obsahovat; u příjemce označuje, kolik zpráv má být pro službu ve vyrovnávací paměti.

Volba správné velikosti má vliv na efektivitu sítě a optimální kapacitu služby. Následující části podrobně popisuje, co vzít v úvahu při výběru hodnoty pro tuto vlastnost a dopad hodnoty.

Výchozí velikost okna přenosu je osm zpráv.

Efektivní využívání sítě

V tomto kontextu termín síť odpovídá všemu používanému jako základ komunikace mezi klientem (odesílatelem) a službou (příjemce). To zahrnuje přenosová připojení a všechny zprostředkující nebo mosty mezi, včetně směrovačů SOAP nebo proxy serverů HTTP nebo bran firewall.

Efektivní využití sítě zajišťuje plné využití síťové kapacity. Množství dat, která se dají přenést za sekundu přes síť (rychlost dat) i doba potřebnou k přenosu dat od odesílatele do příjemce (latence) má vliv na to, jak efektivně se síť využívá.

U odesílatele vlastnost MaxTransferWindowSize označuje, kolik zpráv může při čekání na potvrzení obsahovat okno přenosu. Pokud je latence sítě vysoká a chcete zajistit responzivní odesílatele a efektivní využití sítě, měli byste zvětšit velikost okna přenosu.

Například i v případě, že odesílatel udržuje krok s rychlostí dat, může být latence vysoká, pokud mezi odesílatelem a příjemcem existuje několik zprostředkovatelů nebo že data musí projít ztrátovým zprostředkovatelem nebo sítí. Odesílatel tedy musí počkat na potvrzení zpráv v okně přenosu, než přijme nové zprávy, které se mají odeslat do přenosu. Čím menší je vyrovnávací paměť s vysokou latencí, tím méně efektivní využití sítě. Na druhou stranu příliš vysoká velikost okna přenosu může mít vliv na službu, protože služba může potřebovat zachytit vysokou rychlost dat odesílaných klientem.

Spuštění služby do kapacity

Stejně jako síť se efektivně používá, v ideálním případě chcete, aby služba běžela s optimální kapacitou. Vlastnost velikosti okna přenosu u příjemce určuje, kolik zpráv může příjemce ukládat do vyrovnávací paměti. Tato zpráva ukládání do vyrovnávací paměti pomáhá nejen řízení toku sítě, ale také umožňuje službě běžet na plnou kapacitu. Pokud je například vyrovnávací paměť jedna zpráva a zprávy přicházejí rychleji, než je služba dokáže zpracovat, může síť zahodit zprávy a kapacita může být nevyužitá nebo nevyužitá.

Použití vyrovnávací paměti zvyšuje dostupnost služby při souběžném příjmu a ukládání zpráv do vyrovnávací paměti při zpracování dříve přijatých zpráv.

Doporučujeme použít stejné MaxTransferWindowSize pro odesílatele i příjemce.

Povolení řízení toku

Řízení toku je mechanismus, který zajišťuje, aby odesílatel a příjemce zůstali ve vzájemném tempu. To znamená, že zprávy se spotřebovávají a fungují tak rychle, jak se vytvářejí. Velikost okna přenosu v klientovi a službě zajišťuje, aby odesílatel a příjemce byly v přiměřeném časovém intervalu synchronizace.

Důrazně doporučujeme, abyste vlastnost FlowControlEnabledtrue nastavili, když používáte spolehlivou relaci mezi klientem WCF a službou WCF.

Nastavení MaxPendingChannels

Při psaní služby, která umožňuje spolehlivou komunikaci relací od různých klientů, je možné, aby mnoho klientů vytvořilo spolehlivou relaci se službou současně. Odpověď služby v těchto situacích závisí na MaxPendingChannels vlastnosti.

Když odesílatel vytvoří spolehlivý kanál relace pro příjemce, metoda handshake mezi nimi vytvoří spolehlivou relaci. Po vytvoření spolehlivé relace se kanál umístí do fronty čekajícího kanálu pro přijetí službou. Vlastnost MaxPendingChannels označuje, kolik kanálů může být v tomto stavu.

Služba může být ve stavu, kdy nemůže přijímat další kanály. Pokud je fronta plná, pokus o vytvoření spolehlivé relace se odmítne a klient se musí opakovat.

Je také možné, že čekající kanály ve frontě zůstanou ve frontě delší dobu. Mezitím může dojít k vypršení časového limitu nečinnosti ve spolehlivé relaci, což způsobí, že kanál přejde do chybného stavu.

Při psaní služby, která obsluhuje více klientů současně, byste měli nastavit hodnotu, která je vhodná pro vaše potřeby. Nastavení příliš vysoké hodnoty pro vlastnost má vliv na MaxPendingChannels vaši pracovní sadu.

Výchozí hodnota pro MaxPendingChannels čtyři kanály.

Spolehlivé relace a hostování

Při hostování webu, který používá spolehlivé relace, byste měli mít na paměti následující důležité aspekty:

  • Spolehlivé relace jsou stavové a stav se udržuje v doméně AppDomain. To znamená, že všechny zprávy, které jsou součástí spolehlivé relace, musí být zpracovány ve stejné doméně AppDomain. Webové farmy a webové zahrady, ve kterých je velikost farmy nebo zahrady větší než jeden uzel, nemůže toto omezení zaručit.

  • Spolehlivé relace využívající dva kanály HTTP (například pomocí WsDualHttpBinding) můžou vyžadovat více než výchozí dvě připojení HTTP pro jednotlivé klienty. To znamená, že duplexní spolehlivá relace může vyžadovat až dvě připojení, protože souběžné zprávy aplikace a protokolu můžou v každém okamžiku přenášet každý způsob. Za určitých podmínek v závislosti na vzoru výměny zpráv služby to znamená, že je možné zablokovat službu hostované na webu pomocí duálních relací HTTP a spolehlivých relací. Pokud chcete zvýšit počet povolených připojení HTTP na klienta, přidejte následující položky do příslušného konfiguračního souboru (například web.config příslušné služby):

    <configuration>
      <system.net>
        <connectionManagement>
          <add name="*" maxconnection="4" />
        </connectionManagement>
      </system.net>
    </configuration>
    

    Hodnota atributu maxconnection je počet potřebných připojení. Minimum v tomto případě by mělo být čtyři připojení.