ASP-MVC Anwendung auf Server?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
(...) welche mir die CSV-Datei, welche sich auf dem Server befindet ausliest (...)

Ein Webserver kann auch statische Dateien ausliefern. Dafür ist keine extra Webanwendung notwendig. Das heißt, für diesen Part benötigst du nur die URL zur Datei. Mit einer WebClient-Instanz kannst du einen Request an die URL schicken, die Datei herunterladen, lesen und anschließend die Daten weiterverarbeiten.

(...) und anschließend auf eine Datenbank speichert, welche sich ebenfalls auf dem Server befindet (...)

Wenn die Webanwendung die Verbindungsdaten zum Datenbankserver kennt und Letzterer für die Anwendung erreichbar ist, klappt das.

Allerdings sollte nur die Webanwendung Zugriff auf den Datenbankserver erhalten, niemand anders. Vielleicht möchtest du ebenso den Zugriff auf die CSV-Datei begrenzen?

Für eine Absicherung gibt es mehrere Optionen. Du könntest bspw. eine IP-Whitelist pflegen oder auf dem Server eine weitere Anwendung (z.B. erneut ASP.NET-basiert) laufen lassen, die als Proxy / API agiert (Anfragen werden an bestimmte URLs geschickt, zu denen es entsprechende Routen / Action Controller gibt, die bspw. Daten schicken oder schreiben).


Schnitzel41 
Fragesteller
 19.01.2023, 20:52

Danke für deine Antwort. Also so weit ich das verstanden habe, würde mein Vorschlag klappen? Ich kenne mich leider im Bereich Informatik noch nicht so gut aus. Eine Frage hätte ich noch. Gibt es in ASP.net MVC eine Möglichkeit das eine Action alle 10s aufgerufen wird, ohne das die Webapp aufgerufen wird, diese Action sollte also im Hintergrund laufen. In meinem Fall würde ich diese Funktion verwenden um die CSV alle 10s auf die Datenbank zu bringen. Das ist notwendig, denn die CSV Datei erneuert sich in gewissen Zeitintervallen, bzw bekommt neue Daten.

0
regex9  20.01.2023, 04:15
@Schnitzel41

Ja, wie oben geschrieben.

Wenn du den Datenbankserver nicht selbst verwaltest (also einen Webhoster nutzt), sind direkte Anfragen von außen (aus Sicherheitsgründen) in der Regel übrigens direkt gesperrt. Mein letztgenannter Lösungsvorschlag (eine weitere Webanwendung auf dem Server des Webhoster) wäre an dieser Stelle das Mittel der Wahl. Oder du schaust nach Dienstleistern wie Firebase oder Back4App, die grundsätzlich bereits eine eigene API zur Datenkommunikation einsetzen.

Gibt es in ASP.net MVC eine Möglichkeit das eine Action alle 10s aufgerufen wird (...)

Da der Datenimport ein eigenständiger, vom Rest der Anwendung unabhängiger Job ist, muss er gar nicht Teil der Webanwendung sein. Du kannst eine einfache C#-(Konsolen-)Anwendung bauen, die über die Windows Aufgabenplanung getriggert wird. Oder du registriert die Anwendung als Windows Service und nutzt Quartz.NET / Hangfire / Topshelf / ... für die zeitliche Steuerung.

Wenn der Job jedoch fester Bestandteil der ASP.NET-Webanwendung ist, besteht das Problem, dass ein Pool Recycle des Webservers die regelmäßige Ausführung des Jobs unterbrechen/verzögern kann. Automatische Pool Recycles werden bspw. nach Konfigurationsänderungen an der Webanwendung getriggert, nach Inaktivitätsphasen (wenn die Webanwendung seit einer gewissen Zeit keine Anfrage erhalten hat) oder zum Freisetzen von Speicher.

Quartz.NET verweist als mögliche Lösung für dieses Problem in seinem FAQ auf das Application Initialization-Modul, welches seit IIS 8 zusätzlich eingerichtet werden kann.

0