Sdílet prostřednictvím


Synchronní scénáře využívající HTTP, TCP nebo pojmenované kanály

Toto téma popisuje aktivity a přenosy pro různé scénáře synchronních požadavků a odpovědí s klientem s jedním vláknem, pomocí protokolu HTTP, TCP nebo pojmenovaného kanálu. Další informace o požadavcích s více vlákny najdete v asynchronních scénářích využívajících protokol HTTP, TCP nebo Pojmenovaný kanál .

Synchronní žádost nebo odpověď bez chyb

Tato část popisuje aktivity a přenosy pro platný synchronní scénář žádosti a odpovědi s klientem s jedním vláknem.

Klient

Vytvoření komunikace s koncovým bodem služby

Klient je vytvořen a otevřen. Pro každý z těchto kroků se okolí aktivity (A) přenese do aktivity "Konstrukt klient" (B) a "Open Client" (C). Pro každou aktivitu, do které se přenáší, se okolí aktivity pozastaví, dokud nedojde k přenosu zpět, tj. dokud se nespustí kód ServiceModel.

Vytvoření požadavku na koncový bod služby

Okolí aktivity se přenáší do aktivity ProcessAction (D). V rámci této aktivity se odešle zpráva požadavku a přijme se zpráva s odpovědí. Aktivita končí, když se ovládací prvek vrátí do uživatelského kódu. Vzhledem k tomu, že se jedná o synchronní požadavek, okolí aktivity pozastaví, dokud se ovládací prvek nevrátí.

Uzavření komunikace s koncovým bodem služby

Aktivita uzavření klienta (I) se vytvoří z okolní aktivity. Je to stejné jako nové a otevřené.

Server

Nastavení hostitele služby

Nové a otevřené aktivity ServiceHost (N a O) se vytvářejí z okolí aktivity (M).

Aktivita naslouchacího procesu (P) se vytvoří z otevření ServiceHost pro každý naslouchací proces. Aktivita naslouchacího procesu čeká na příjem a zpracování dat.

Příjem dat na drátu

Když data dorazí do drátu, vytvoří se aktivita ReceiveBytes, pokud ještě neexistuje (Q) pro zpracování přijatých dat. Tuto aktivitu je možné znovu použít pro více zpráv v rámci připojení nebo fronty.

Aktivita ReceiveBytes spustí aktivitu ProcessMessage (R), pokud má dostatek dat k vytvoření zprávy akce SOAP.

V aktivitě R se zpracovávají hlavičky zpráv a ověřuje se hlavička activityID. Pokud je tato hlavička přítomná, ID aktivity je nastaveno na aktivitu ProcessAction; v opačném případě se vytvoří nové ID.

Při zpracování volání se vytvoří a přepojí aktivita ProcessAction (S). Tato aktivita končí, když se dokončí veškeré zpracování související s příchozí zprávou, včetně spuštění uživatelského kódu (T) a odeslání zprávy s odpovědí( pokud je to možné).

Zavření hostitele služby

Aktivita Uzavření hostitele služby (Z) se vytvoří z okolí aktivity.

Diagram showing synchronous scenarios: HTTP, TCP, or named pipes.

V <části A: name> je symbol zástupce, A který popisuje aktivitu v předchozím textu a v tabulce 3. Name je zkrácený název aktivity.

Pokud propagateActivity=truemá akce procesu u klienta i služby stejné ID aktivity.

Synchronní žádost nebo odpověď s chybami

Jediným rozdílem oproti předchozímu scénáři je, že se jako zpráva odpovědi vrátí chybová zpráva PROTOKOLU SOAP. Pokud propagateActivity=truese ID aktivity zprávy požadavku přidá do chybové zprávy SOAP.

Synchronní jednosměrná cesta bez chyb

Jediným rozdílem v prvním scénáři je, že se na server nevrátí žádná zpráva. U protokolů založených na protokolu HTTP se klientovi stále vrací stav (platný nebo chybový). Důvodem je to, že http je jediný protokol s sémantikou odezvy požadavku, která je součástí zásobníku protokolu WCF. Vzhledem k tomu, že zpracování protokolu TCP je pro WCF skryté, neposílají se klientovi žádné potvrzení.

Synchronní jednosměrná cesta s chybami

Pokud při zpracování zprávy (Q nebo novější) dojde k chybě, klientovi se nevrátí žádné oznámení. Je to stejné jako scénář synchronní jednosměrné bez chyb. Pokud chcete zobrazit chybovou zprávu, neměli byste použít jednosměrný scénář.

Duplex

Rozdíl oproti předchozím scénářům spočívá v tom, že klient funguje jako služba, ve které vytváří aktivity ReceiveBytes a ProcessMessage, podobně jako asynchronní scénáře.