Udostępnij za pośrednictwem


Scenariusze asynchroniczne z zastosowaniem protokołu HTTP lub TCP albo potoku nazwanego

W tym temacie opisano działania i transfery dla różnych scenariuszy asynchronicznych żądań/odpowiedzi z wielowątkowymi żądaniami przy użyciu protokołu HTTP, TCP lub nazwanego potoku.

Asynchroniczne żądanie/odpowiedź bez błędów

W tej sekcji opisano działania i transfery dla scenariusza asynchronicznego żądania/odpowiedzi z wielowątkowymi klientami.

Działanie wywołujące kończy się po beginCall powrocie i endCall zwraca. Jeśli wywołanie zwrotne jest wywoływane, wywołanie zwrotne zwraca wartość .

Wywoływane działanie kończy się po beginCall zwracaniu, endCall zwracaniu lub zwracaniu wywołania zwrotnego, jeśli zostało ono wywołane z tego działania.

Klient asynchroniczny bez wywołania zwrotnego

Propagacja jest włączona po obu stronach przy użyciu protokołu HTTP

Asynchronous client with no callback where propagateActivity is set to true on both sides.

Jeśli propagateActivity=true, ProcessMessage wskazuje, do którego działania ProcessAction ma być przenoszone.

W przypadku scenariuszy opartych na protokole HTTP funkcja ReceiveBytes jest wywoływana w pierwszym komunikacie do wysłania i istnieje przez okres istnienia żądania.

Propagacja jest wyłączona po obu stronach przy użyciu protokołu HTTP

Jeśli propagateActivity=false po obu stronach, ProcessMessage nie wskazuje, do którego działania ProcessAction ma być przenoszone. W związku z tym wywoływane jest nowe tymczasowe działanie ProcessAction z nowym identyfikatorem. Gdy odpowiedź asynchroniczna jest zgodna z żądaniem w kodzie ServiceModel, identyfikator działania można pobrać z kontekstu lokalnego. Rzeczywiste działanie ProcessAction można przenieść do tego identyfikatora.

Asynchronous client with no callback where propagateActivity is set to false on either side.

W przypadku scenariuszy opartych na protokole HTTP funkcja ReceiveBytes jest wywoływana w pierwszym komunikacie do wysłania i istnieje przez okres istnienia żądania.

Działanie akcji procesu jest tworzone na kliencie asynchronicznym podczas propagateActivity=false wywoływania lub wywoływania, a gdy komunikat odpowiedzi nie zawiera nagłówka Akcja.

Propagacja jest włączona po obu stronach przy użyciu protokołu TCP lub nazwanego potoku

Asynchronous client with no callback where propagateActivity is set to true on both sides and named pipe/TCP.

W przypadku scenariusza nazwanego potoku lub tcp wywoływana jest funkcja ReceiveBytes po otwarciu klienta i istnieje przez okres istnienia połączenia.

Podobnie jak w przypadku pierwszego obrazu, jeśli propagateActivity=true, ProcessMessage wskazuje, do którego działania ProcessAction ma być przenoszone.

Propagacja jest wyłączona po obu stronach przy użyciu potoku TCP lub nazwanego potoku

W przypadku scenariusza nazwanego potoku lub tcp wywoływana jest funkcja ReceiveBytes po otwarciu klienta i istnieje przez okres istnienia połączenia.

Podobnie jak drugi obraz, jeśli propagateActivity=false po obu stronach, ProcessMessage nie wskazuje działania ProcessAction do przeniesienia. W związku z tym wywoływane jest nowe tymczasowe działanie ProcessAction z nowym identyfikatorem. Gdy odpowiedź asynchroniczna jest zgodna z żądaniem w kodzie ServiceModel, identyfikator działania można pobrać z kontekstu lokalnego. Rzeczywiste działanie ProcessAction można przenieść do tego identyfikatora.

Asynchronous client with no callback where propagateActivity is set to false on either side and named pipe/TCP.

Klient asynchroniczny z wywołaniem zwrotnym

Ten scenariusz dodaje działania G i A", dla wywołania zwrotnego i endCall, oraz ich transfery w/wy.

W tej sekcji pokazano tylko użycie protokołu HTTP z propagateActivity=trueprogramem . Jednak dodatkowe działania i transfery dotyczą również innych przypadków (czyli propagateActivity=falseprzy użyciu protokołu TCP lub nazwanego potoku).

Wywołanie zwrotne tworzy nowe działanie (G), gdy klient wywołuje kod użytkownika, aby powiadomić, że wyniki są gotowe. Następnie kod użytkownika wywołuje wywołanie endCall zwrotne (jak pokazano na rysunku 5) lub poza wywołaniem zwrotnym (Rysunek 6). Ponieważ nie wiadomo, z którego działania endCall użytkownika jest wywoływane, to działanie ma etykietę A’. Możliwe, że wartość A może być identyczna lub inna niż A.

Shows an asynchronous client with callback, endcall in callback.

Shows an asynchronous client with callback, endcall outside callback.

Serwer asynchroniczny z wywołaniem zwrotnym

Shows an asynchronous server with callback.

Stos kanału wywołuje klienta w funkcji Odbieranie komunikatów: ślady dla tego przetwarzania są emitowane w samym działaniu ProcessRequest.

Asynchroniczne żądanie/odpowiedź z błędami

Błędy komunikatów o błędach są odbierane podczas .endCall W przeciwnym razie działania i transfery są podobne do poprzednich scenariuszy.

Asynchroniczne jednokierunkowe z błędami lub bez nich

Do klienta nie jest zwracana żadna odpowiedź ani błąd.