2017-03-16 4 views
2

Ich benutze Service-Stack, um die Erstellung RESTful-Dienste zu erstellen, habe keine Tiefenkenntnis davon. Dies funktioniert als Sendeanforderung und Rückmeldung. Ich habe ein Szenario und meine Frage hängt davon ab.Wie Request und Response im Service-Stack verarbeitet werden?

Szenario: Ich sende Anfrage vom Browser oder einem Client, wo ich Anfrage an den Server senden kann. Betrachten Sie Server dauert 3 Sekunden, um einzelne Anfrage zu verarbeiten und Antwort an Browser zurückzusenden. Nach einer Sekunde, habe ich eine weitere Anfrage an den Server von demselben Browser (Client) gesendet. Jetzt bekomme ich die Antwort der zweiten Anfrage, die ich später gesendet habe.

Frage 1: Was passiert hinter der ersten Anfrage, die ich keine Antwort erhalten habe.

Frage 2: Wie kann ich die Verarbeitung von Orphan-Anfrage stoppen.

Bearbeiten: Ich habe IIS-Server verwendet, um Dienste zu hosten.

Antwort

3

ServiceStack executes requests concurrently on multithreaded web servers, unabhängig davon, ob Sie auf ASP.NET/IIS hosten oder selbst gehostet werden, sodass zwei gleichzeitige Anfragen gleichzeitig auf verschiedenen Threads ausgeführt werden. Es gibt verschiedene Szenarien, wenn Sie in Ihren Services asynchrone Tasks ausführen, in denen der Thread zur Ausführung verschiedener Tasks freigegeben wird, die Implementierungsdetails jedoch weitgehend irrelevant sind.

HTTP-Web-Anfragen werden jeweils bis zum Ende ausgeführt, selbst wenn die Client-Verbindung verloren geht, werden Ihre Dienste nie benachrichtigt und es werden keine Ausnahmen ausgelöst.

Aber für lange laufenden Dienste können Sie die High-Level-ServiceStack's Cancellable Requests Feature aktivieren, die eine Möglichkeit für Clients ermöglicht, lange laufende Anfragen abzubrechen.

+0

Ich habe das, wenn Client-Sammlung verloren ist Ihre Dienste werden nie benachrichtigt und keine Ausnahmen werden ausgelöst, aber Frage 1 ist immer noch unbeantwortet. –

+0

@RavindraSinare es wurde geantwortet, da beide gleichzeitig auf verschiedenen Threads ausgeführt werden – mythz

+1

Was im Falle von zwei bereits gleichzeitig ausgeführt wird und bevor es geht, um beide zu beenden, sende ich dritten? Was passiert mit beiden? –

Verwandte Themen