Lang andauernder Hintergrundprozess in ASP.NET - Application_Start oder separater Prozess?

8

Ich entwickle eine .NET 4-Anwendung, die die Ausführung eines Back-End-Worker-Threads erfordert. Dieser Thread besteht hauptsächlich aus dem folgenden Code:

%Vor%

Die ASP.NET-App ist nur ein Frontend für die Datenbank.

Meine Frage ist, wo der beste Platz für diese Arbeiterschleife sein würde. Es sieht so aus, als wären meine beiden ersten Möglichkeiten (1), es von der Application_Start -Methode abzukoppeln und es einfach laufen zu lassen, oder (2) es in einem separaten Prozess zu bündeln (Windows-Dienst?)

(1) würde offensichtlich eine gewisse Logik im ASP.NET-Code benötigen, um zu überprüfen, ob sie noch läuft, da IIS sie möglicherweise abbricht. Es ist auch ziemlich ordentlich, dass die gesamte Anwendungslogik in einem einfach zu installierenden Paket liegt. (2) ist viel segregierter, fühlt sich aber viel unordentlicher an.

Was ist der beste Ansatz?

    
growse 06.12.2011, 14:55
quelle

2 Antworten

13

Ich würde mich nach Möglichkeit stark für den Windows-Dienst entscheiden. Hintergrund-Threading in ASP.NET kommt mit viel Gepäck .

  1. Die Lebensdauer Ihres Hintergrundprozesses ist dem IIS überlassen. Wenn IIS entscheidet, wann der App-Pool wiederverwendet werden soll, wird der Hintergrundprozess neu gestartet. Wenn IIS entscheidet, den App Pool aufgrund von Inaktivität zu beenden, wird der Hintergrundprozess nicht ausgeführt.
  2. Wenn IIS für die Ausführung als Web Garden konfiguriert ist (mehrere Prozesse pro AppPool), könnte Ihr Hintergrund-Thread mehr als einmal ausgeführt werden.
  3. Später, wenn Sie Ihre Website ausgleichen möchten (mehrere Server, auf denen die Site ausgeführt wird), müssen Sie möglicherweise Ihre Anwendung ändern, um sicherzustellen, dass das Hintergrund-Threading nur auf einem Server stattfindet.)

Und noch viel mehr.

    
vcsjones 06.12.2011, 14:59
quelle
0

Betrachten Sie etwas Einfaches wie Hangfire und denken Sie dann an Die Design-Punkte in dieser verwandten Antwort .

    
Matt Kocaj 19.01.2017 06:37
quelle

Tags und Links