Die ASP.NET-Laufzeit ist für kurze Arbeitsauslastungen vorgesehen, die parallel ausgeführt werden können. Ich muss in der Lage sein, periodische Ereignisse und Hintergrundaufgaben zu planen, die möglicherweise für viel längere Zeit ausgeführt werden.Entwerfen einer asynchronen Taskbibliothek für ASP.NET
die oben angegeben Ich habe folgende Probleme zu bewältigen:
- Die AppDomain kann aufgrund von Änderungen shutdown (Web.config, sind, App_Code, etc.)
- IIS recycelt die AppPool auf einem regelmäßig (täglich)
- IIS selbst neu starten könnte, oder was das betrifft könnte der Server
abstürzen ich bin nicht davon überzeugt, dass dieser Code in ASP.NET ausgeführt wird, nicht das richtige zu tun, becuase es würde ein einfacheres Programmiermodell ermöglichen. Dies erfordert jedoch, dass ein externer Dienst regelmäßig Anfragen an die App sendet, damit die Anwendung ausgeführt wird und alle Hintergrundaufgaben mit äußerster Sorgfalt programmiert werden. Sie müssen im Falle eines unerwarteten Fehlers ihre Arbeit unterbrechen und fortsetzen können.
Meine heutige Linie des Denkens geht ungefähr so:
Wenn alle Jobs in der Datenbank registriert sind, sollte es möglich sein, die Datenbank als Buchhaltung Mechanismus zu verwenden. Im Falle eines Fehlers würde die Datenbank alle Zustände enthalten, die notwendig sind, um die Operation bei der nächsten gegebenen Gelegenheit fortzusetzen.
Ich würde wirklich einige Rückmeldungen/Ratschläge in dieser Angelegenheit applaudieren. Ich habe darüber nachgedacht, einen Windows-Dienst zu betreiben und auch eine RPC-Lösung zu verwenden, aber das hat nicht den gleichen Reiz für mich. Stattdessen hätte ich viele Probleme bei der Bereitstellung und die Synchronisierung von Aufgaben und Code durch mehrere Anwendungen. Aufgrund meiner geschäftlichen Bedürfnisse ist dies weniger als optimistisch.
+1 für den Link zum Artikel über die asynchrone Prozedurausführung. –
Das ist genial, leider können nicht alle Hintergrundaufgaben in nur T-SQL geschrieben werden, viele von ihnen könnten das wahrscheinlich, aber im Moment haben wir nur eingeschränkte Debugging-Unterstützung für T-SQL und Dinge, die in C# sein müssen. Code, wie das Senden von E-Mails. Auch einige dieser Transformationen, die wir machen, sehen in SQL wirklich peinlich aus und sind für uns oft einfacher, C# -Code zu verwenden. Über Tabellen als Warteschlangen habe ich in der Vergangenheit etwas Ähnliches gemacht, habe diese Variationen aber noch nicht gesehen, danke für die Links. –
Aktivierung kann auch CLR-Prozeduren starten, und es gibt auch einen externen Aktivator, der normale Prozesse (.exe) starten kann: http://blogs.msdn.com/b/sql_service_broker/archive/2008/11/21/announcing- service-broker-external-activator.aspx –