Laden...

ASP.NET MVC5 Tasks?

Erstellt von Hopzy vor 4 Jahren Letzter Beitrag vor 4 Jahren 994 Views
H
Hopzy Themenstarter:in
8 Beiträge seit 2019
vor 4 Jahren
ASP.NET MVC5 Tasks?

Hallo,

ich bin relativ neu, was das Programmieren mit asp.net angeht - daher bitte ich um etwas Verständnis für evtl. dumme Fragen 😃.

Und zwar würde ich gerne einem Benutzer mehrere Tasks zur Verfügung stellen.
Diese sollen solange im Hintergrund aktiv laufen bis der Benutzer selbst sie wieder stoppt.
Daher auch, wenn sich der Benutzer ausloggt.

Ich hatte anschließend ein wenig nachgeschaut und bin auf das IHostedService interface gestoßen - hier. Allerdings ist das nur für ASP.NET Core?

Mir ist auch bewusst, dass Webanwendungen eig. nicht langlebig sind - sprich man damit Tasks verwalten sollte - aber ist es dennoch irgendwie möglich?

Andere alternative was ich gefunden habe ist hangfire...

Nun die Frage an euch - wie geht man da am besten vor? Gibt es evtl. bereits irgendwelche Pattern?

viele Grüße!

16.807 Beiträge seit 2008
vor 4 Jahren

Hangfire ist hier der korrekte Weg für Long Running Tasks; direkt ASP.NET Core nicht so ohne weiteres.
Da müsstest sehr viel selbst programmieren (was Du selbst verlinkt hast).

IHostedService ist nicht ASP.NET Core Only.
Siehe in einem Console App Sample von mir hier: https://github.com/BenjaminAbt/Hangfire.ConsoleHost/blob/master/sample/Server/Program.cs

PS: ASP.NET Core ist prinzipiell auch nichts anderes als eine Konsolenanwendung.

H
Hopzy Themenstarter:in
8 Beiträge seit 2019
vor 4 Jahren

Vielen Dank für die schnelle Antwort!

Ich habe mich nun etwas in hangfire eingelesen und frage mich, ob ich es korrekt verstanden habe bzw. die Umsetzung so korrekt ist.

Wenn ich beispielsweise eine "long running" Task für einen Benutzer erstelle bzw. er sie selbst erzeugt - muss ich mich darum kümmern, dass sie miteinander in Verbindung stehen? Sprich die ID der Task in Assoziation mit dem Benutzer setzen?

Was leider bisher auch noch nicht ganz funktioniert ist das Resumé der Task nachdem der Server den Pool recycled.

Vielen Dank für deine Hilfestellung - hat mir bisher sehr geholfen 😃

16.807 Beiträge seit 2008
vor 4 Jahren

muss ich mich darum kümmern, dass sie miteinander in Verbindung stehen? Sprich die ID der Task in Assoziation mit dem Benutzer setzen?

Alles, was Authorisierung (AuthN) betrifft, musst Du immer selbst umsetzen. Das kann Dir kein Framework abnehmen.
Vor allem, da Hangfire überhaupt keine Benutzer kennt sondern nur ein Job Scheduler ist.

Was leider bisher auch noch nicht ganz funktioniert ist das Resumé der Task nachdem der Server den Pool recycled.

Ich vermute Du sprichst hier von einem Job statt einem Task.

Du musst Dir überlegen, ob Du wirklich ein Job Resume haben willst, oder ob Du nicht einfach den Job erneut startest (mit neuer Job ID).
Letzteres ist IIRC das Standardverhalten von Hangfire.