Was entspricht RegisterObject / QueueBackgroundWorkItem in ASP.NET 5?

8

In "System.Web" ASP.NET kann Hintergrundarbeit über RegisterObject / QueueBackgroundWorkItem registriert werden, um an der Shutdown-Sequenz von IIS teilzunehmen (komplett mit 90 Sekunden Gnadenfrist), aber ich bin kämpfen, um die genaue Entsprechung in ASP.NET 5 zu finden.

Betrachten Sie die Quelle für Microsoft.AspNet.Hosting.HostingEngine , Kann ich sehen, dass es über IApplicationLifecycle.ApplicationStopping und IApplicationLifecycle.ApplicationStopped signalisiert (zwischen denen es den Server und PipelineInstance disponiert), aber es scheint keinen Platz für die 90 Sekunden Gnadenfrist zu geben, die RegisterObject benötigt in der alten API.

Die IIS-Integrationsschicht wurde noch nicht geöffnet (falls überhaupt), daher ist es schwierig zu sehen, wie diese Implementierung Dinge abbildet.

Fehle ich eine API? Sollte ich eine blockierende Abschaltung über CancellationToken.Register() durchführen? Ist das etwas, das von "v1 of vNext" weggelassen wurde?

Jede Erleuchtung würde sehr geschätzt werden.

    
Richard Szalay 28.12.2014, 11:53
quelle

1 Antwort

6

Ich habe das Folgende mit Hilfe der auf Katana basierenden Hangfire-Implementierung als Inspiration erstellt. Es hat keine Tests außer der Überprüfung, dass der Shutdown-Code ausgeführt wurde, wenn IIS Express beendet wurde, aber es funktioniert als Proof of Concept.

Der Entwurf hier ist offensichtlich nicht für "Feuer und vergessen" Aufgaben, da sie direkt vor dem Herunterfahren ausgelöst werden könnten. Es funktioniert jedoch für so etwas wie einen idempotenten Queue-Prozessor (vorausgesetzt, Timeouts im Leerlauf wurden deaktiviert)

%Vor%

Was kann dann so verwendet werden:

%Vor%     
Richard Szalay 31.12.2014, 00:13
quelle

Tags und Links