Im letzten Teil
dieser Artikelserie haben wir gemeinsam die Infrastruktur für eine Webanwendung in Microsoft Azure eingerichtet. Bald können wir mit der Konzeption des Datenbankschemas und der Implementierung der dazugehörige Backend-Anwendung beginnen, welche die Daten abgreift, aufbereitet und dem Frontend durch API-Aufrufe zur Verfügung stellt. Bevor wir jedoch mit der Entwicklung beginnen, sollte die Struktur des Projektes klar definiert und geklärt werden, in welchem Framework wir eigentlich arbeiten.
.NET 5.0, ASP.NET Core, .NET Framework – Verwirrt?

Vor allem als Einsteiger ist man schnell verwirrt, was die Namensgebung der Produktpallette von Microsoft betrifft. Damit Ihr nicht von den ähnlich klingenden Begriffen stutzig werdet, hier eine kurze Erklärung zu .NET.
Microsoft nutzt den Begriff .NET in vielen unterschiedlichen Produktbereichen, von Programmiersprachen wie Visual Basic .NET bis hin zu verschiedenen Frameworks, die im Folgenden beschrieben werden:
.NET Framework: Im Jahre 2002 erschien die erste Version des Frameworks. Das letzte Update für das Framework wurde 2019 mit der Version 4.8 veröffentlich, da eine Weiterentwicklung nicht vorgesehen ist. Deshalb ist für viele Unternehmen eine Migration nach .NET Core oder .NET 5.0 unabdingbar. Wie man eine solche Migration konzipiert wird von meinem Kollegen Samuel Schnurr hier [1] beschrieben.
.NET Core: Unabhängig vom .NET Framework wurde 2016 .NET Core veröffentlich. Hintergrund hierfür war eine Modernisierung des veralteten .NET Frameworks. Zwar beinhaltet .NET Core viele Funktionen aus dem .NET Framework, so gibt es trotzdem keine direkten Abhängigkeiten untereinander. Aktuell gibt es das Framework in der Version 3.1.
.NET 5.0: Im November 2020 kündigte Microsoft die Veröffentlichung von .NET 5.0 an. Diese basiert auf .NET Core und bietet viele Vorteile wie z.B. eine Cross-Plattform-Unterstützung. Somit ist .NET 5.0 die neuste Version von .NET Core und wurde aufgrund der Verwechslungsgefahr zu .NET Framework 4.0 in .NET 5.0 umgetauft.
ASP.NET Core: ASP.NET (Active Server Pages) ist wie das Entity Framework ein Teilframework der vorgestellten Frameworks. Hierbei ist ASP.NET Core der Nachfolger von ASP.NET aus dem .NET Framework und in .NET Core (und natürlich .NET 5.0) wiederzufinden. Wir werden im Folgenden das Modul ASP.NET Core Web API benutzen, um unsere Schnittstelle für das Frontend zu implementieren.
Software-Architektur – Design-Pattern
Für die Software-Architektur empfiehlt es sich, das „Project Solution Pattern“ zu implementieren. Die Anwendung wird hierbei in einer Projektmappe durch mehrere Projekte unterteilt und somit strukturiert. Jedes Projekt ist durch einen eigenen Aufgabenbereich definiert, wodurch eine klare Abgrenzung entsteht:
Domain: Im Projekt „Domain“ werden alle Entitäten der Datenbank in Form von Klassen dargestellt. Hierbei entspricht eine Klasse einer Datenbanktabelle. Eigenschaften einer Klasse werden als Attribute der jeweiligen Datenbanktabelle interpretiert. Wir werden im kommenden Teil dieser Artikelserie mit Hilfe des Domain Projektes die tatsächlichen Datenbanktabellen erzeugen.
Repository: Das Repository ist die Schnittstelle zwischen Domain und Service. Hier werden alle Abfragen gegen die Datenbank ausgeführt und benötigte Inhalte abgerufen.
Service: Der Service bezieht benötigte Daten aus dem Repository und führt Geschäftslogik auf diesen Daten aus. Hier herrscht eine klare Trennung. Ein Service sollte nie direkt auf die Datenbank zugreifen oder sich dafür interessieren, woher die Daten herkommen.
Controller: Im Controller sind die einzelnen API-Aufrufe definiert. Der Controller ist somit die Schnittstelle zwischen der Außenwelt und unserer Anwendung. Hier kann z.B. unsere Frontend-Anwendung später anknüpfen.

Die Auswahl eines Template kann etwas überwältigend sein, da Visual Studio hier etliche Möglichkeiten bietet. Wir benötigen für unseren Controller ein ASP.NET-Core-Web-API-Projekt. Die Vorlage beinhaltet bereits Code, den wir später wieder verwenden oder direkt nutzen können. Während der Einrichtung sollte als Zielframework „.NET 5.0“ ausgewählt worden sein. Für die restlichen Projekte genügt jeweils eine .NET-Core-Klassenbibliothek, die natürlich auch „.NET 5.0“ als Zielframework innehält.

Nun solltet Ihr eine ähnliche Projektmappe wie ich vorfinden. Falls Ihr euer Ergebnis vergleichen wollt, findet Ihr das Repo für das Backend hier [2].
Im nächsten Teil zeige ich euch, wie man die Datenbank in Azure konfiguriert und durch den Code-First-Ansatz von Entity-Framework-Datenbanktabellen erzeugt werden können, ohne manuell auf der Datenbank zu agieren.