Delen via


Asynchrone scenario's met behulp van HTTP, TCP of Named-Pipe

In dit onderwerp worden de activiteiten en overdrachten beschreven voor verschillende asynchrone aanvraag-/antwoordscenario's, met multithreaded aanvragen met behulp van HTTP, TCP of named pipe.

Asynchrone aanvraag/antwoord zonder fouten

In deze sectie worden de activiteiten en overdrachten beschreven voor een asynchroon aanvraag-/antwoordscenario, met multithreaded-clients.

De activiteit van de beller wordt beëindigd wanneer beginCall het retourneert en endCall retourneert. Als een callback wordt aangeroepen, retourneert de callback.

De aangeroepen activiteit wordt beëindigd wanneer beginCall retourneert, endCall retourneert of wanneer de callback wordt geretourneerd als deze is aangeroepen vanuit die activiteit.

Asynchrone client zonder callback

Doorgifte is aan beide zijden ingeschakeld, met behulp van HTTP

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

Als propagateActivity=true, ProcessMessage geeft aan naar welke ProcessAction-activiteit moet worden overgedragen.

Voor scenario's op basis van HTTP wordt ReceiveBytes aangeroepen op het eerste bericht dat moet worden verzonden en bestaat het voor de levensduur van de aanvraag.

Doorgifte is uitgeschakeld aan beide zijden, met behulp van HTTP

Als propagateActivity=false aan beide zijden processMessage niet aangeeft naar welke ProcessAction-activiteit moet worden overgedragen. Daarom wordt een nieuwe tijdelijke ProcessAction-activiteit met een nieuwe id aangeroepen. Wanneer het asynchrone antwoord overeenkomt met de aanvraag in ServiceModel-code, kan de activiteits-id worden opgehaald uit de lokale context. De werkelijke ProcessAction-activiteit kan met die id worden overgebracht.

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

Voor scenario's op basis van HTTP wordt ReceiveBytes aangeroepen op het eerste bericht dat moet worden verzonden en bestaat het voor de levensduur van de aanvraag.

Er wordt een procesactieactiviteit gemaakt op een asynchrone client wanneer propagateActivity=false het aanroeper of aanroeper is en wanneer het antwoordbericht geen actieheader bevat.

Doorgifte is ingeschakeld aan beide zijden, met behulp van TCP of Named Pipe

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

Voor een scenario met named-pipe of TCP wordt ReceiveBytes aangeroepen wanneer de client wordt geopend en bestaat voor de levensduur van de verbinding.

Net als bij de eerste afbeelding propagateActivity=truegeeft ProcessMessage aan naar welke ProcessAction-activiteit moet worden overgedragen.

Doorgifte is uitgeschakeld aan beide zijden, met BEHULP van TCP of Named Pipe

Voor een scenario met named-pipe of TCP wordt ReceiveBytes aangeroepen wanneer de client wordt geopend en bestaat voor de levensduur van de verbinding.

Net als bij de tweede afbeelding propagateActivity=false geeft ProcessMessage aan beide zijden niet aan naar welke ProcessAction-activiteit moet worden overgedragen. Daarom wordt een nieuwe tijdelijke ProcessAction-activiteit met een nieuwe id aangeroepen. Wanneer het asynchrone antwoord overeenkomt met de aanvraag in ServiceModel-code, kan de activiteits-id worden opgehaald uit de lokale context. De werkelijke ProcessAction-activiteit kan met die id worden overgebracht.

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

Asynchrone client met Callback

In dit scenario worden activiteiten G en A toegevoegd, voor de callback en endCall, en hun overdrachten in/uit.

In deze sectie wordt alleen het gebruik van HTTP met propagateActivity=true. De aanvullende activiteiten en overdrachten zijn echter ook van toepassing op de andere gevallen (dat wil propagateActivity=falsegezegd, met BEHULP van TCP of Named-Pipe).

De callback maakt een nieuwe activiteit (G) wanneer de client gebruikerscode aanroept om aan te geven dat de resultaten gereed zijn. Gebruikerscode roept endCall vervolgens aan binnen de callback (zoals weergegeven in afbeelding 5) of buiten de callback (afbeelding 6). Omdat het niet bekend is van welke gebruikersactiviteit endCall wordt aangeroepen, wordt deze activiteit gelabeld A’. Het is mogelijk dat A identiek is aan of verschilt van A.

Shows an asynchronous client with callback, endcall in callback.

Shows an asynchronous client with callback, endcall outside callback.

Asynchrone server met Callback

Shows an asynchronous server with callback.

De kanaalstack roept de client terug op Bericht ontvangen: traceringen voor deze verwerking worden verzonden in de ProcessRequest-activiteit zelf.

Asynchrone aanvraag/antwoord met fouten

Foutberichtfouten worden ontvangen tijdens endCall. Anders zijn activiteiten en overdrachten vergelijkbaar met eerdere scenario's.

Asynchrone eenrichting met of zonder fouten

Er wordt geen antwoord of fout geretourneerd naar de client.