2016-08-31 5 views
1

In meiner ASP.NET-MVC-Anwendung speichern ich Informationen in statischen Klassen mit statischen VARs. Aber ASP.NET recycelt alle Daten und Threads nach und mein "App_Start" -Verfahren wird nach der Bereinigung aufgerufen.Halten Vars für lange Zeit in ASP/MVC

Ich löste das Problem mit den Backup-Aufgaben mit HangFire. Aber um die statische Klasse zu generieren, brauche ich eine lange Zeit. Die erste Anfrage nach dem Recycling muss warten, während die statischen Klassen eingerichtet werden.

Warum die Verzögerung? Ich benutze das EntityFramework und für die korrekte Handhabung brauche ich alle Datensätze aus der Datenbank mit ihren Beziehungen. Also halte ich alle Datensätze mit statischen Klassen und verwenden Sie die Datenbank als 2. Strategie.

Ich habe keine Ideen, was ich tun kann, um die Leistung zu verbessern. Meine erste Idee war es, die kompletten Daten zu serialisieren - aber wie ist die Performance für die Deserialisierung einer ArrayList mit 2K oder mehr Datensätzen? Gibt es eine Möglichkeit, das Recycling für meine statische ArrayList zu verhindern?

+4

2000 Datensätze sollten nicht lange dauern, um aus einer Datenbank zu lesen. Können Sie auch erklären, warum Sie alle Daten immer im Speicher behalten müssen? Das klingt nach einem Anti-Pattern, aber vielleicht gibt es dahinter einen Grund. –

+0

Ist Ihr App-Pool auf AlwaysRunning eingestellt? – ranieuwe

+0

Ich habe viele Beziehungen (Lazy Loading brauchen sehr lange) und meine Datensätze sind hierarchisch Ich muss die Hierarchie neu erstellen. Ja, App ist auf "AlwaysRunning" eingestellt, aber die Aufräumarbeiten machen es klar. – user6537157

Antwort

1

Ich würde empfehlen, stattdessen den application cache-Mechanismus für ASP.NET zu verwenden. Standardmäßig befindet sich der Cache jedoch immer noch im Arbeitsspeicher und wird innerhalb des Prozesses beibehalten, sodass App-Pool-Recycles ihn immer noch löschen würden. Die Lösung besteht darin, den Speicherort des Anwendungscache so zu ändern, dass er sich in einem anderen Prozess befindet. Informationen zum Speichern des Anwendungscaches finden Sie unter this answer.

Kurz gesagt, ich würde nicht empfehlen, App-Pool-Recycling zu vermeiden, da es Ihnen wirklich eine Menge Ärger ersparen kann.

+0

Danke, ich werde morgen nachsehen. – user6537157

Verwandte Themen