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
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.
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
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=true
geeft 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.
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
=false
gezegd, 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.
Asynchrone server met 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.