Titelbild-VSCode
C# Projekt in VS Code einrichten.

Blazor: Clean Architecture Projekt mit Visual Studio Code aufsetzen

Mich hat schon länger die Programmierung in C# mit Visual Studio Code (VS Code) interessiert. Visual Studio ist natürlich sehr mächtig für die Entwicklung in .NET, dennoch möchte ich mit VS Code mir die Projekt Erstellung anschauen. In meinen Projekten verwende ich gerne als Projekt Struktur die Clean Architecture. Im folgenden möchte ich das Thema nur kurz anreißen und anschließend ein Projekt entsprechend aufsetzen.

Clean Architecture

Da für mich als Entwickler ein wichtiger Faktor ist, das ich auf eine saubere Softwarearchitektur setze, bin ich öfter an dem Thema Clean Architecture in C# hängen geblieben. Die Softwarearchitektur ist in Schichten aufgeteilt. Unterteilt sind diese in Domain, Application, Infrastructure und Presentation. Die Kapselung sorgt unteranderem für besseren testbaren Code. In der folgenden Abbildung ist die Architektur grafisch dargestellt. In der Abbildung sind die Abhängigkeiten der Schichten gut zu erkennen.

Grafische Darstellung von der Softwarearchitektur Clean Architecture. Die Schichten Domain, Application, Infrastructure und Presentation bauen aufeinander auf. (Quelle)

Domain

In der Domain Schicht werden Entitäten, Enums, Exceptions, Typen implementiert.

Application

Die Application Schicht enthält die gesamte Anwendungslogik. Diese ist von der Domain Schicht abhängig, hat aber keine Abhängigkeiten von anderen Schichten. Diese Schicht definiert zusätzlich Interfaces für verwendete Services. Wenn die Anwendung z. B. auf einen Benachrichtigungsdienst zugreifen muss, wird eine neues Interface zur Anwendung hinzugefügt und eine Implementierung in der Infrasturcture Schicht erstellt.

Infrastructure

Die Infrastructure Schicht enthält Klassen für den Zugriff auf externe Ressourcen wie Dateisysteme, Webdienste usw. Diese Klassen sollten auf den in der Anwendungsschicht definierten Schnittstellen basieren.

Presentation

In der Presentation Schicht kommt die Schnittstelle zu den Benutzern. Dazu zählen beispielsweise Projekte wie eine API oder die Grafische Oberfläche für PC oder Web.

Projekt in VS Code erstellen

Ich habe VS Code gestartet und den Ordner geöffnet, wo ich mein Projekt abspeichern möchte. Anschließend habe ich das Terminal in VS Code geöffnet. Das Terminal sollte auf meinen Speicherort zeigen. Als erstes lege ich ein leeres Projekt an. In meinem Beispiel heißt dies BeispielProjekt und lege einen gleichnamigen Ordner über –output an, in dem das Projekt erstellt wird. Anschließend navigiere ich in den Ordner. Die Erstellung von .NET Projekten über das Terminal ist hier dokumentiert.

dotnet new sln --name BeispielProjekt --output BeispielProjekt
cd BeispielProjekt

In dem Projekt lege ich als erstes einen Ordner src (steht für source) für meinen Quellcode an. In Zukunft würde ich noch einen Ordner für Tests hinzufügen.

mkdir src

In meinem Ordner lege ich jetzt eine neues Projekt für Klassen in der Domain Schicht an. Anschließend muss ich das Domain Projekt meiner Projektmappe hinzufügen. Weitere Dokumentation dazu ist hier zu finden.

# Domain Projekt anlegen
dotnet new classlib --name Domain --output src\Domain
# Domain Projekt der Projektmappe hinzufügen
dotnet sln .\BeispielProjekt.sln add .\src\Domain\Domain.csproj

Wie bei dem Domain Projekt lege ich das Application Projekt an und füge es der Projektmappe hinzu. Zusätzlich füge ich dem Application Projekt eine Referenz auf das Domain Projekt hinzu. Weiter Dokumentation dazu ist hier zu finden.

# Application Projekt anlegen
dotnet new classlib --name Application --output src\Application
# Application Projekt der Projektmappe hinzufügen
dotnet sln .\BeispielProjekt.sln add .\src\Application\Application.csproj
# Domain Projekt als Referenz dem Application Projekt hinzufügen
dotnet add .\src\Application\Application.csproj reference .\src\Domain\Domain.csproj

Dasselbe Prozedere führe ich für das Infrastructure Projekt durch.

# Infrastructure Projekt anlegen
dotnet new classlib --name Infrastructure --output src\Infrastructure
# Infrastructure Projekt der Projektmappe hinzufügen
dotnet sln .\BeispielProjekt.sln add .\src\Infrastructure\Infrastructure.csproj
# Application Projekt als Referenz dem Infrastructure Projekt hinzufügen
dotnet add .\src\Infrastructure\Infrastructure.csproj reference .\src\Application\Application.csproj

Für die Presentation Schicht erstelle ich einen Ordner, weil hier oftmals mehrere Projekte ihren Platz finden.

mkdir src\Presentation

Für meine Testzwecke erstelle ich eine Blazor Server App mit dem Namen Server in dem Presentation Ordner.

# Blazor Server App in der Presentation Schicht erstellen
dotnet new blazorserver --name Server --output src\Presentation\Server
# Projekt der Projektmappe hinzufügen
dotnet sln .\BeispielProjekt.sln add .\src\Presentation\Server\Server.csproj
# Infrastructure Projekt als Referenz dem Server hinzufügen
dotnet add .\src\Presentation\Server\Server.csproj reference .\src\Infrastructure\Infrastructure.csproj

Als nächstes erstelle ich noch ein paar Dateien, die ich für sehr nützlich halte. Eine .editorconfig Datei für die Quellcode Formattierung, eine .gitignore Datei für die git-Verwaltung und eine README.md Datei für Projektinformationen, die in git angezeigt werden sollen.

# .editorconfig Datei erstellen
dotnet new editorconfig
# .gitignor Datei erstellen
dotnet new gitignore
# README.md Datei erstellen
echo "# Beispiel Projekt" > README.md

Mein Projekt ist jetzt vollständig und die Projektstruktur ist in der nachfolgenden Abbildung zu sehen.

Projektstruktur Clean Architecture
Zu sehen ist die Ordnerstruktur in VS Code nach der Erstellung des Projekts.

Nachdem ich alle Projekte erstellt habe und loslegen kann mit der Entwicklung, möchte ich die leere Blazor Server App starten. Dazu navigiere ich in den Server Ordner und starte die Blazor App.

cd .\src\Presentation\Server\
dotnet watch run

Erweiterungen

In meiner Entwicklungsumgebung VS Code benötige ich für das Projekt die Erweiterung C#. Zusätzlich habe ich für eine hübsche Ordnerstruktur die Erweiterung Material Icon Theme installiert.

Fazit

Ich habe hin und wieder gesehen, dass die Entwicklung in VS Code auch mit C# seine Vorzüge haben soll. Das werde ich noch selbst genauer betrachten. Die Erstellung der Projekte über das Terminal ist aber sehr gewöhnungsbedürftig. In Visual Studio ist da ein klarer Vorteil, weil die Erstellung über die Oberfläche im ersten Moment leichter und intuitiver ist. Ein Grundgerüst mit einer Clean Architecture sollte sich mit dieser Anleitung jedoch schnell erstellen lassen.

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert