Hallo zusammen,
ich bin relativ neu in .NET Core und schreibe gerade meine erste REST-API (Web-API) mit ASP.NET Core 3.1. Leider stehe Ich gerade vor einem Problem an dem Ich schon länger am grübeln bin und keine 100%e saubere Lösung zum umsetzen finde.
Folgende Situation:
Ich habe eine ASP.NET Core 3.1 Rest-API entwickelt, welche 24/7 laufen soll. Diese Rest-API läuft dabei auf verschiedenen Systemen mit Windows oder Linux basierendem Betriebssystem. Nun soll eine automatische Updatelösung integriert werden (ohne grafische
Oberfläche).
Jetzt habe Ich schon einige allgemeine Möglichkeiten gefunden eine Art Update System umzusetzen.
1.) Eine wäre beispielsweise der OneClick installer, welche jedes mal die aktuellste Version im Falle eines verfügbaren Updates schreibt. Diese würde aber schon wegfallen, da nur Windows dabei unterstützt wird.
2.) Des Weiteren habe Ich noch eine Möglichkeit gesehen, die DLL Dateien zur Laufzeit ersetzen zu können. Die Anwendung würde sich dann im Hintergrund automatisch mit den neuen Komponenten aktualisieren. Soweit Ich das aber verstanden habe, geht dies auch
nur in Kombination eines IIS-Webserver auf einem Windows System.
3.) Ich lade mir zur Laufzeit die neue Version herunter (falls Verfügbar). Sobald der Download abgeschlossen ist, schließe Ich meine aktuelle Instanz und starte die aktuellste Version. Wenn keine Fehler auftreten, lösche Ich alle Versionen bis auf die aktuelle
(neueste).
Die Fragen die Ich mir dazu stelle sind:
- Nach meiner Erkenntnis wäre die 3.) Variante die beste für eine Plattformunabhängige Umsetzung. Oder gibt es da noch einen anderen Weg dies besser machen zu können?
- Wenn Ich die Anwendung für ein Update beenden möchte, wie gehe Ich da am besten vor? Ich habe im praktischen Fall verschiedene Benutzer, die auf die Controller der ASP.NET Core 3.1 Anwendung zugreifen und mehrere Threads im Hintergrund laufen. Wie kann
Ich diese Ordnungsgemäß beenden/Herunterfahren ohne die Anwendung einfach zu terminieren? Datenverlust und Inkonsistenzen wären die Folge von unfertigen Aufgaben die angefangen und mittendrin abgebrochen wurden.
Ich hoffe Ihr könnt mir weiterhelfen bzw. ein paar Tipps zu dieser Problemstellung geben. Vielen Dank schon mal im Voraus!
Freundliche Grüße
6d 61 72 69 6f