Blazor Server, ASP.NET Core und C#
Mit Blazor Server, ASP.NET Core und C# hat man als Entwickler einen modernen Open Source Tech-Stack zur Verfügung um schnell Web-Applikationen zu schreiben. Ich habe für mein Projekt mehrere Möglichkeiten evaluiert und bin zu diesem Ergebnis gekommen.
Blazor Server, ASP.NET Core und C#
Vor dem Start eines neuen Projekts trifft man üblicherweise eine Entscheidung über die zu verwendende Technologie. Auch für mein „kleines“ privates Projekt, eine Neuimplementierung meines Racing Managers musste eine solche her. Kurz die Ausgangslage:
Aufgabenstellung
Die mittlerweile über 6 Jahre alte in PHP und mit dem Smarty Framework entwickelte App soll durch eine moderne und möglichst performante Neuentwicklung ersetzt werden. Laufen soll diese neu Entwickelte Software auf einem eigenen Server, ich bin also nicht an eine vorgegebene Technologie eines Hosters gebunden. Ziel: besser, schneller und spannender muss die Simulation werden. Außerdem soll diese nicht „fertig“ sein, sondern laufend weiterentwickelt werden. Zum Einsatz kommen neben einem soliden und im besten Fall Open Source Tech-Stack auch eine Versionsverwaltung mit Git, ein automatisches Deployment und soweit möglich automatische Tests. Die Software wird plattformunabhängig implementiert. Sie läuft zum Start auf einem günstigen Linux Hosting in Container, soll aber ohne großen Aufwand auch in einer Cloud hochskaliert werden können.
Technologieauswahl
Ich habe mich für das Projekt für einen Microsoft Open Source Tech Stack entschieden. Das Backend wird in C# und .NET Core erstellt und mit Blazor Server wird ein flexibler und moderner Client erstellt. Es erfolgt eine Strikte Trennung der Teilbereich in einzelne Docker Container die über Schnittstellen interagieren. Das Frontend wird neben dem C# Anteil von Blazor noch durch TypeScript unterstützt. Als Datenbank dient PostgreSQL. Die Auswahl ist somit zwar Microsoft lastig, jedoch zu 100% Open Source. Da ich beruflich in diesem Bereich viel Erfahrung habe wurde diese Entscheidung subjektiv getroffen.
Technologieabwahl
Die Technologie ist gewählt und wird das Projekt prägen und mich die nächsten Wochen beschäftigen. Zur erwähnen sind nun noch jene Alternativen die ich zwar evaluiert, aber abgewählt habe.
- ASP.NET MVC
ursprünglich habe ich die ersten Zeilen vom Client im MVC Pattern geschrieben. Es zeigt sich bei der Implementierung aber schnell, dass man viel mehr Klassen und Code braucht um den selben Output zu bekommen. MVC ist ein seit vielen Jahren bewährtes Pattern, bei der Implementierung lerne ich aber nichts dazu und verbringe unnötig viel Zeit für eine komplexe Struktur die der Client nicht benötigt. - Java / Sprint boot
eine gute Alternative, jedoch wäre die Einarbeitungszeit parallel mit meinem Job als .NET Entwickler etwas zu stressig für mein Hobbyprojekt. - REST API only
geplant war im ersten Schritt sogar eine reine REST API Schnittstelle und einem Server. Der Client hätte dann komplett in Frontendtechnologie wie einer Android App oder nur TypeScript entwickelt werden können. Als mögliche Alternative lebt diese Idee weiter, eventuell werde ich nach meiner Client Referenzimplementierung eine API aufbauen und zur Verfügung stellen.
Es gibt kein „richtig“ oder „falsch“, jeder Entwickler sollte die Tools und Technologien wählen die am besten passen. Ich denke ich habe eine gute Wahl getroffen.
Fazit
Mit Blazor Server, ASP.NET Core und C# habe ich die Wahl für den Tech Stack meiner neuen App definiert. In Folge dessen werden in den nächsten Wochen bestimmt zahlreiche Artikel zu diesen Themen erscheinen.