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.
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
=true
má 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
=true
se 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.