Laden...

Aufgabe in Backend ausführen in ASP .Net Core 6

Erstellt von cd77 vor einem Jahr Letzter Beitrag vor einem Jahr 353 Views
C
cd77 Themenstarter:in
7 Beiträge seit 2020
vor einem Jahr
Aufgabe in Backend ausführen in ASP .Net Core 6

Hallo Zusammen,

ich arbeite mich gerade in ASP .Net Core ein.
Bin an einem Punkt gekommen wo ich Hilfe/Rat brauche.
Und zwar habe ich ein Beispiel Projekt erstellt wo die Wetterdaten (Per Webscraping) je nach Ort ausgibt.

Ich möchte nicht die Wetterdaten von den Usern(wegen Redundanz) direkt abgerufen wird, sondern über eine Zwischenablage über einen Datenbank.
Das ist meine Herausforderung:
Ein Teil des Projekts soll nur im Backend zyklisch (z.B. 1xpro Tag) laufen und die nötigen Wetterdaten ins Datenbank speichern.
Welche Technologie kann ich verwenden um diesen Teil der Aufgabe nur im Server(Backend) laufen zu lassen.
im WWW habe ich IHostedService (StartAsync , StopAsync ) gefunden, aber irgendwo habe ich gelesen das dieses Technologie für kleine Aufgaben seien soll...

Bitte um Hilfe oder Ratschläge.

Alles Gute und Dank im Voraus
cd77

2.080 Beiträge seit 2012
vor einem Jahr

im WWW habe ich IHostedService (StartAsync , StopAsync ) gefunden, aber irgendwo habe ich gelesen das dieses Technologie für kleine Aufgaben seien soll

Irgendwo gelesen?

Es gibt eine IHostedService-Implementierung namens BackgroundService, die ist genau für sowas da.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

C
cd77 Themenstarter:in
7 Beiträge seit 2020
vor einem Jahr

Vielen Dank für so schnelle Reaxion!

Irgendwo wo heißt im www. Habe so viele Seiten durchstöbert mit so vielen Themen, habe den Überblick verloren.

Sind Cron-tab's besser, oder sollte man diese IHostedService-Implementierung bevorzugen?

Grüße
cd77

C
cd77 Themenstarter:in
7 Beiträge seit 2020
vor einem Jahr

Und,
läuft der IHostedService aufm Client oder Server?

2.080 Beiträge seit 2012
vor einem Jahr

Sind Cron-tab's besser, oder sollte man diese IHostedService-Implementierung bevorzugen?

Ist denke ich ziemlich egal.
Ich würde den BackgroundService nutzen, da der auf allen Plattformen gleich läuft und nicht noch separat im OS konfiguriert werden muss.

läuft der IHostedService aufm Client oder Server?

Server
Generell läuft jeder C#-Code auf dem Server, außer bei WebAssembly.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

C
cd77 Themenstarter:in
7 Beiträge seit 2020
vor einem Jahr

Ok,

Vielen Dank.
Du hast mir geholfen!

😁

16.842 Beiträge seit 2008
vor einem Jahr

Sind Cron-tab's besser, oder sollte man diese IHostedService-Implementierung bevorzugen?

Du wirst Cron Jobs meinen. Aber gerade wenn Du solche Vergleiche auf der Hand hast, solltest Du einen Blick in die Dokumentation werfen.
Das ist Dein Job als Entwickler:in.

Ein Cron Job wird von einem externen System getriggert.
Ein IHostedService läuft nur, wenn auch die Applikation läuft.

Das sind also fundamental andere Arten um etwas auslösen.
Wenn Deine Anwendung 247/ läuft, dann macht IHostedService im Endeffekt das gleiche.
Geht Deine Anwendung in einen Schlafmodus, weil zB. gerade nichts los ist, um Ressourcen zu sparen, dann läuft auch Dein IHostedService nicht.

Das steht auch direkt in der Dokumentation von IHostedService.

It is important to note that the way you deploy your ASP.NET Core WebHost or .NET Host might impact the final solution. For instance, if you deploy your WebHost on IIS or a regular Azure App Service, your host can be shut down because of app pool recycles.

Du musst also evaluieren, welche Anforderungen und Toolings Du hast um entscheiden zu können, welchen Weg Du gehst.

Die Aussage

im WWW habe ich IHostedService (StartAsync , StopAsync ) gefunden, aber irgendwo habe ich gelesen das dieses Technologie für kleine Aufgaben seien soll...

ohne Kontext macht kein Sinn. Wo hast Du die genau her? Vielleicht ein völlig anderer Kontext?
Der Backgroundservice ist für jede Art von dauerhafter Hintergrundaufgabe konzipiert.

C
55 Beiträge seit 2020
vor einem Jahr

Sind Cron-tab's besser, oder sollte man diese IHostedService-Implementierung bevorzugen?
Ist denke ich ziemlich egal.
Ich würde den BackgroundService nutzen, da der auf allen Plattformen gleich läuft und nicht noch separat im OS konfiguriert werden muss.

Als egal würde ich es nicht abtuen. Über Cron Jobs hast du schon eine relativ gute Kontrolle, die man bei Backgroundservices nicht hat.
Du kannst bei einem Cron Job genau definieren, zu welcher Minute, Stunde, Tag, Monat und Wochentag dieser ausgeführt wird.

16.842 Beiträge seit 2008
vor einem Jahr

Über Cron Jobs hast du schon eine relativ gute Kontrolle, die man bei Backgroundservices nicht hat.

Doch, das kannst Du mit Backgroundservices auch. Sehr beliebtes Paket für die einfache Kalkulation zur sehr genauen Ausführung ist https://github.com/HangfireIO/Cronos (braucht man aber nicht zwingend).
Der einzige Unterschied ist wirklich nur "Externer Trigger" vs. "Interner Trigger" - mit den jeweiligen Vor- und Nachteilen (Abhängigkeit, Umgebung, Isolation...).