Debugging und Ausführen von C#: VPS, Docker oder Cloud – was wählen?

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum die Bereitstellung von C# nicht beängstigend, sondern vorteilhaft ist

\n\n

Stellen Sie sich vor: Sie haben eine tolle C#-Anwendung geschrieben – sei es ein Telegram-Bot auf .NET 8, eine Web-API für einen Online-Shop oder ein Microservice für die Zahlungsabwicklung. Der Code ist debuggt, die Tests laufen durch, lokal funktioniert alles einwandfrei. Es bleibt nur noch der letzte Schritt – die Anwendung ins Internet zu bringen, damit echte Menschen sie nutzen können.

\n\n

Und hier beginnt das Interessante. Wo soll bereitgestellt werden? Auf einem VPS, in Docker-Containern oder direkt in der Cloud? Jede Option hat ihre Vor- und Nachteile sowie Fallstricke. In diesem Artikel analysieren wir alle drei Ansätze anhand realer C#-Codebeispiele, damit Sie eine fundierte Entscheidung treffen können.

\n\n

Option 1: VPS – der Klassiker für alle, die alles kontrollieren wollen

\n\n

Ein virtueller privater Server (VPS) ist wie die Anmietung einer Wohnung in einem „digitalen Haus“. Sie haben Root-Zugriff, installieren selbst das Betriebssystem, konfigurieren die Firewall und installieren die .NET-Runtime. Ideal für alle, die die volle Kontrolle wünschen oder spezifische Anforderungen haben.

\n\n

Wie man C# auf einem VPS bereitstellt: Schritt für Schritt

\n\n

Angenommen, Sie haben eine ASP.NET Core Web-API. Hier ist die minimale Vorgehensweise:

\n\n
    \n
  1. Verbinden Sie sich per SSH mit dem Server (Ubuntu 22.04).
  2. \n
  3. Installieren Sie die .NET-Runtime:
  4. \n
\n\n
wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh\nchmod +x dotnet-install.sh\n./dotnet-install.sh --channel 8.0\nexport PATH="$HOME/.dotnet:$PATH"
\n\n

Erstellen Sie die Anwendung im Release-Modus und kopieren Sie die Dateien per SCP oder Rsync auf den Server:

\n\n
dotnet publish -c Release -o ./publish\nscp -r ./publish/* user@your-server:/var/www/myapp/
\n\n

Starten Sie die Anwendung als systemd-Dienst, damit sie nach Abstürzen automatisch neu gestartet wird:

\n\n
[Unit]\nDescription=My C# App\n\n[Service]\nWorkingDirectory=/var/www/myapp\nExecStart=/home/user/.dotnet/dotnet /var/www/myapp/MyApp.dll\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target
\n\n

Vorteile von VPS: volle Kontrolle, niedriger Preis (ab 5 $/Monat), Sie können alles ausführen – ob Windows oder Linux.

\n\n

Nachteile: Sie sind selbst für Sicherheit, Updates und Backups verantwortlich. Wenn die Anwendung um 3 Uhr morgens abstürzt – müssen Sie aufstehen.

\n\n

Option 2: Docker – Containerisierung für faule Perfektionisten

\n\n

Docker ist eine Möglichkeit, Ihre C#-Anwendung mit allen Abhängigkeiten in einen leichten Container zu packen. „Bei mir funktioniert es“ wird zu „es funktioniert überall“.

\n\n

Dockerfile für .NET 8

\n\n

Erstellen Sie im Projektstammverzeichnis eine Datei Dockerfile:

\n\n
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\nCOPY *.csproj .\nRUN dotnet restore\nCOPY . .\nRUN dotnet publish -c Release -o out\n\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENV ASPNETCORE_URLS=http://+:80\nEXPOSE 80\nENTRYPOINT ["dotnet", "MyApp.dll"]
\n\n

Erstellen und starten Sie:

\n\n
docker build -t my-csharp-app .\ndocker run -d -p 8080:80 --name myapp my-csharp-app
\n\n

Jetzt ist Ihre Anwendung unter http://localhost:8080 erreichbar. Wenn Sie mehrere Dienste benötigen (Datenbank + API + Frontend), verwenden Sie Docker Compose:

\n\n
version: '3.8'\nservices:\n  api:\n    build: .\n    ports:\n      - "5000:80"\n    depends_on:\n      - db\n  db:\n    image: postgres:15\n    environment:\n      POSTGRES_PASSWORD: example
\n\n

Vorteile von Docker: Isolation, Reproduzierbarkeit, einfache Skalierung (starten Sie einfach 5 weitere Container), einheitliche Umgebung.

\n\n

Nachteile: Sie müssen sich mit Docker-Netzwerken und Volumes auskennen, für eine einfache Anwendung kann es Overkill sein.

\n\n

Option 3: Cloud – Infrastruktur an Profis delegieren

\n\n

Cloud-Plattformen (Microsoft Azure, AWS, Google Cloud sowie russische Alternativen – Yandex Cloud, VK Cloud) übernehmen die Serververwaltung, Lastverteilung,

Blogs

Buchempfehlungen