Frage

Jeff hat bereits darüber gebloggt Verwendung des Caches um auf seinen Websites eine „Out-of-Band“-Verarbeitung durchzuführen. Ich habe mich jedoch gefragt, welche anderen Techniken die Leute verwenden, um diese Art von Aufgaben zu verarbeiten.

War es hilfreich?

Lösung

Vor Jahren sah ich, wie Rob Howard eine Möglichkeit beschrieb, mit einem HttpModule Aufgaben im Hintergrund zu verarbeiten.Es scheint nicht so einfach zu sein wie die Verwendung des Caches, ist aber unter bestimmten Umständen möglicherweise besser.

Dieser Blogbeitrag verfügt über die Details, und es gibt viele andere, die die gleichen Informationen erfassen, wenn Sie sich umschauen.

Andere Tipps

Windows-Dienst

Vielleicht möchten Sie sich ansehen, wie DotNetNuke macht es.Ich weiß, dass es in VB.NET geschrieben ist, aber ich habe den Code in C# nachgerüstet.Ich habe die Quelle durchgesehen und festgestellt, dass es in ihrem Admin-Bereich eine Funktion zum Einrichten geplanter Aufgaben gibt.Diese Aufgaben werden über die Admin-Schnittstelle eingerichtet und in der Datenbank gespeichert.Wenn die Site gestartet wird, wird über die Datei Global.asax entweder ein weiterer Thread erstellt, um diesen Dienst auszuführen, der dann die geplanten Aufgaben zur geplanten Zeit ausführt.Ich kann mich nicht mehr an die genaue Logik erinnern, es ist schon eine Weile her, aber es ist definitiv eine gute Quelle dafür, wie andere Leute Out-of-Band-Prozesse für Asp.Net-Anwendungen durchgeführt haben.Diese Technik behält immer noch die Logik innerhalb der Asp.Net-Anwendung bei, läuft aber meiner Meinung nach aus dem Rahmen.

Wenn es sich hauptsächlich um Datenverarbeitungsaufgaben handelt und Sie MSSQL verwenden, wie wäre es dann mit geplanten SSIS-Aufgaben?

Geplante Aufgaben oder Cron-Jobs.

Das Problem bei geplanten Aufgaben oder Cron-Jobs besteht darin, dass sie keinen gemeinsamen Speicherplatz mit dem Webserver haben.Sie könnten eine geplante Aufgabe einrichten, die Seiten vom Webserver anfordert, aber das könnte bei lang laufenden Aufgaben zu Problemen führen.Es wäre schön, einige Threads mit niedriger Priorität auf dem eigentlichen ASP.Net-Anwendungsstapel laufen zu lassen, um einfache Hilfsaufgaben wie das Bereinigen von Caches, das Überwachen von Ressourcen und einfach die allgemeine Verwaltung zu erledigen.

Einfache Warteschlangendateien zusammen mit einem separaten Agenten.Schreiben Sie für jede Art von Out-of-Band-Prozess eine separate Agent-EXE-Datei, die ein Verzeichnis nach Warteschlangendateien überwacht, die alle Daten enthalten, die zur Ausführung des angegebenen Prozesses erforderlich sind.

Das mag schmutzig erscheinen, aber in der realen Welt bietet es meiner Meinung nach viel Flexibilität, Sie führen nicht viel Verarbeitung im ASP.net-Prozessraum durch und Sie könnten diesen Stil leicht anpassen, um die Verarbeitung auf billigen Linux-Servern zu betreiben, auf denen das ausgeführt wird Agent-Prozess auf Mono, wenn Sie mehr RAM/CPU/Festplatte benötigen.

Wenn Sie mit asp.net-Seiten am vertrautesten sind, können Sie eine kleine App schreiben, die Ihre Aufgabe erledigt, und die App dann mit einem externen Dienst „pingen“, der Ihre Website überwacht.Dadurch bleibt die App am Leben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top