
Workshop | .NET (MAUI/ASP.NET Core Blazor)
Von Andreas Kaiser am 02.10.2025
Nach meinem Workshop im 1. Semester habe ich mich Anfang des 2. Semesters erneut entschieden, einen eigenen (halben) Workshop zu gestalten. Bei der Themenwahl war mir diesmal wichtig, ein Thema zu wählen, dass mehr Coding-lastig und weniger Konfigurations-lastig ist. Ich habe diesen Workshop schlussendlich auf die Arbeit mit .NET ausgerichtet. Das Framework bietet durch seine Vielseitigkeit eine geeignete Grundlage, um sich vertieft mit den programmiertechnischen Aspekten der nativen App-Entwicklung auf der Windows-Seite auseinanderzusetzen. Ziel war es, das Verständnis für Aufbau, Struktur und Zusammenspiel der Komponenten, die das .NET MAUI Framework mit sich bringt, aufzubauen und in einem kurzen Praxisbeispiel zu festigen. Gleichzeitig verstand ich den Workshop als eine Art Vorbereitung auf das 3. Semester, denn dort wird in der Masterklasse voraussichtlich noch tiefer in die Welt von .NET eingestiegen.
Theoretische Grundlagen:
Was steckt hinter .NET?
Der erste Teil des Workshops widmete sich die theoretischen Grundlagen meines Workshopthemas anzueignen. .NET wurde im Jahr 2000 von Microsoft eingeführt und hat sich seitdem von einer proprietären Lösung hin zu einer freien, quelloffenen und plattformübergreifenden Software-Plattform entwickelt. Heute (in Version 9/10) deckt .NET ein breites Spektrum an Einsatzmöglichkeiten ab. Dieses erstreckt sich vom Web über Desktop bis hin zu Mobile.
Zentral ist dabei die Common Language Runtime (CLR), die als gemeinsame Laufzeitumgebung dient. Sie erlaubt es, unterschiedliche Programmiersprachen miteinander zu kombinieren, wobei C# die dominierende Sprache ist. Dieses Zusammenspiel sorgt für Effizienz, Konsistenz und Flexibilität in der Entwicklung.
Das .NET Ecosystem
Um den Aufbau von .NET besser zu verstehen, lohnt sich ein Blick auf das Ecosystem:
- Runtime & Core Libraries: Basis für die Ausführung von .NET-Programmen, inklusive Garbage Collector, Just-in-Time-Compiler und Standardbibliotheken.
- Languages: Offiziell unterstützt werden C#, F# und VB.NET, wobei C# in der Praxis dominiert.
- Frameworks: Unterschiedliche Bereiche, z. B. ASP.NET Core für Web, Blazor für moderne Frontend-Entwicklung, .NET MAUI für Mobile/ Desktop oder WPF/WinForms für klassische Windows-Anwendungen.
- Tools & IDEs: Visual Studio, Visual Studio Code, CLI-Werkzeuge.
- Community & Packages: Über NuGet steht ein riesiges Paket-Ökosystem bereit, das von Microsoft und der Community gepflegt wird.

Exkurs: C# als Rückgrat von .NET
Ein kurzer Exkurs führte in die Sprache C#, die als Rückgrat von .NET gilt. Sie kombiniert eine klare, objektorientierte Struktur mit modernen Sprachkonzepten. Besonders hervorzuheben sind Features wie LINQ, Lambda-Ausdrücke oder das asynchrone Programmiermodell mit async/await, die den Entwicklungsprozess spürbar vereinfachen.
Einsatzfelder von .NET in der Praxis
Das .NET-Framework ist äußerst vielseitig und findet Anwendung in verschiedensten Bereichen:
- Web: mit ASP.NET Core oder Blazor, wo sogar C# direkt im Browser laufen kann.
- Desktop: für klassische Anwendungen auf Windows und macOS.
- Mobile: plattformübergreifend mit .NET MAUI.
ASP.NET Core Blazor
Ein besonders spannender Teil des .NET-Ökosystems und daher extra hervorzuheben ist Blazor. Mit Blazor stellt .NET ein Front-End-Webframework bereit, dass komplett auf C# setzt und JavaScript in vielen Szenarien überflüssig macht.
Es gibt zwei Hauptvarianten des Frameworks:
- Blazor WebAssembly: Führt C#-Code direkt im Browser aus – clientseitig, ohne zusätzlichen Servercode.
- Blazor Server: Nutzt eine persistente Verbindung, bei der die Logik auf dem Server ausgeführt wird und die UI-Änderungen in Echtzeit an den Browser übertragen werden.
Die Vorteile von Blazor:
- Einheitliche Codebasis für Front- und Backend (kein Sprachmix nötig).
- Höhere Entwicklerproduktivität durch Wiederverwendung von Logik und Komponenten.
- Engere Integration mit dem gesamten .NET-Ökosystem.
Native Entwicklung mit .NET MAUI
Bevor es zur Umsetzung ging, habe ich im Workshop ausführlich .NET MAUI beleuchtet…

… das Framework, mit dem sich native Anwendungen für Android, iOS, Windows und macOS aus einer einzigen Codebasis entwickeln lassen.
Das Grundprinzip:
- Die Benutzeroberfläche wird in XAML beschrieben,
- die Logik in C# umgesetzt.
Diese klare Trennung verbessert Übersichtlichkeit, Wartbarkeit und Wiederverwendbarkeit des Codes.
Ein wichtiges Architekturprinzip ist das MVVM-Pattern (Model–View–ViewModel):
- View: definiert Layout und Darstellung
- ViewModel: enthält Logik, Eigenschaften und Befehle
- Model: Datenmodell mit Geschäfts- und Validierungslogik
Mit diesem erreicht man eine saubere und skalierbare App-Struktur.
Wichtige Konzepte in .NET MAUI
Damit die Theorie greifbarer wird, habe ich im Workshop die wichtigsten Bausteine, mit denen .NET MAUI arbeitet vorgestellt – Konzepte, die auch später in der praktischen Umsetzung wiederkehren:
In .NET MAUI gibt es vier Ausführungszustände (nicht ausgeführt, laufend, deaktiviert und gestoppt), die den Lebenszyklus einer App beschreiben. Diese Zustände regeln, wann die Anwendung gestartet, pausiert, fortgesetzt oder beendet wird. Sie sind entscheidend für Ressourcenmanagement, Statusspeicherung und die Reaktion auf Benutzerinteraktionen oder Systemereignisse.
Data Binding
Das Data Binding in .NET MAUI sorgt für eine Synchronisation zwischen UI-Elementen und ViewModel-Eigenschaften. Es unterstützt verschiedene Bindungsmodi (etwa One-Way und Two-Way), wodurch Änderungen automatisch zwischen UI und Datenmodell ausgetauscht werden. Dadurch wird Boilerplate-Code reduziert und die Wartbarkeit deutlich verbessert. Außerdem erlaubt es ein dynamisches Update der Benutzeroberfläche, sobald sich Daten verändern.
Dependency Injection (DI)
Dependency Injection ermöglicht eine lose Kopplung zwischen Klassen und steigert damit die Testbarkeit der Anwendung. In .NET MAUI können verschiedene Lebenszyklen definiert werden, etwa Singleton, Transient oder Scoped. Die Registrierung der Dienste erfolgt zentral in der App-Initialisierung (App.xaml.cs), was die Verwaltung der Abhängigkeiten übersichtlich und einheitlich gestaltet.
Bindable Properties
Bindable Properties sind spezielle Eigenschaften, die eine Datenbindung in benutzerdefinierten Controls ermöglichen. Sie erleichtern das Erstellen wiederverwendbarer UI-Komponenten und sorgen dafür, dass sich die Oberfläche automatisch aktualisiert, sobald sich eine Eigenschaft ändert. So bleibt das UI stets im Einklang mit den zugrunde liegenden Daten.
Behaviors
Behaviors dienen in .NET MAUI dazu, UI-Elemente um wiederverwendbare Logik zu erweitern. Dadurch kann Verhalten wie Validierung, Animation oder Interaktion modular und flexibel hinzugefügt werden – ohne die zugrunde liegende Code-Behind-Struktur zu verändern.
Shell-Navigation
Die Shell in .NET MAUI vereinheitlicht die Navigationsstruktur einer App. Sie unterstützt deklaratives Routing und Parameterübergabe, was Navigation besonders einfach und klar macht. Zudem erlaubt sie eine bequeme Verwaltung von Flyout-Menüs, Tab-Bars und anderen Navigationselementen. So wird der Implementierungsaufwand bei komplexeren Navigationsszenarien deutlich reduziert.
Components & Layouting
In .NET MAUI lassen sich wiederverwendbare Custom Controls erstellen, um die Benutzeroberfläche gezielt zu erweitern. Neben den Standardkomponenten können Custom Renderer und Community-Bibliotheken (über NuGet) eingebunden werden, um zusätzliche Funktionalität bereitzustellen. Das Layout basiert auf verschiedenen Pages wie ContentPage, NavigationPage und ShellPage, unterstützt Responsive Design und trennt Layout von Logik – was zu klar strukturierten, modularen Anwendungen führt.
Essentials
NET MAUI Essentials bieten eine einheitliche API für den Zugriff auf native Gerätefunktionen. Damit können Funktionen wie Kamera, GPS, Akku oder Sensoren genutzt werden, ohne plattformabhängigen Code schreiben zu müssen.
Praxisteil: WeatherApp (.NET MAUI)
Nach der ausführlichen Theorie folgte die praktische Auseinandersetzung mit dem .NET MAUI Framework, bei der wir die zentralen Konzepte in einer kleinen bzw. einfach gehaltenen Anwendung erprobt und umgesetzt haben. Entstanden ist dabei eine WeatherApp, die aktuelle Wetterdaten über eine API lädt, den Standort des Geräts berücksichtigen kann und über eine einfache Navigation verfügt. Die App ist so aufgebaut, dass es drei zentrale Seiten gibt: eine Startseite, die als Einstieg dient und erklärt, was die App macht, eine Einstellungsseite, auf der der gewünschte Standort festgelegt und gespeichert werden kann, und eine Wetterseite, die die eigentlichen Daten anzeigt. Hier die graphische Ansicht:
Der eigentliche Abruf der Daten ist im WeatherService gekapselt. Er ruft die API mit dem eingegebenen Stadtnamen oder den ermittelten Koordinaten auf, verarbeitet die JSON-Antwort und gibt ein eigenes Datenmodell zurück. Dadurch bleibt die Logik von der Oberfläche getrennt, und das Modell kann im gesamten Projekt wiederverwendet werden. Auf der Wetterseite bindet das ViewModel die Daten an die Oberfläche. Sobald über den Button „Wetter abfragen“ ein Request ausgelöst wird, landet das Ergebnis in einer Property des ViewModels. Über Data Binding wird diese Property automatisch im UI angezeigt, ohne dass zusätzlicher Code für die Aktualisierung nötig ist.
Eine weitere Funktion ist die Standortabfrage über MAUI Essentials. Mit Geolocation.GetLocationAsync
wird die aktuelle Position ermittelt und als Koordinaten an die API übergeben. Dadurch lassen sich exakte Wetterwerte für die aktuelle Position anzeigen. Um beim Testen nachvollziehen zu können, welche Werte vom Gerät oder Emulator zurückkommen, habe ich Logging eingebaut. Damit sieht man direkt, ob die Koordinaten plausibel sind und welche Wetterdaten von der API zurückgeliefert werden.
In den Einstellungen kann der Nutzer einen Standardort hinterlegen. Dieser wird über Preferences dauerhaft gespeichert, sodass die App beim nächsten Start direkt darauf zurückgreifen kann. Das Eingabefeld ist dabei direkt an eine Property im SettingsViewModel gebunden. Wird ein Ort eingetragen, landet der Wert sofort im Code, beim Speichern zusätzlich in den Preferences.
Die Navigation zwischen den Seiten läuft über Blazor-Routen. So bleibt die Struktur klar und konsistent: Startseite, Einstellungen, Wetteranzeige. Damit ist die App modular aufgebaut und kann jederzeit um weitere Seiten erweitert werden.
Der Source-Code des Praxis-Projektes kann hier abgerufen werden:
Fazit
Zu Beginn hat vor allem die Grundeinrichtung eines neuen .NET-Projekts mit MAUI mehr Zeit in Anspruch genommen als geplant. Künftig werde ich diesen Schritt vorab erledigen, um im Workshop mehr Zeit zu haben und hektisches Coden zu vermeiden, das am Ende nur zusätzliches Bugfixing erfordert. Gleichzeitig konnte ich erste praktische Erfahrungen mit C# und der Windows-nativen Umgebung sammeln und habe gemerkt, dass mir die Wissensvermittlung in diesem Workshop jedenfalls leichter gefallen ist, als beim allerersten Mal. Insgesamt stimmt mich das zuversichtlich, hier eine gute Grundlage geschaffen zu haben, um im 3. Semester noch tiefer in die .NET-Entwicklung einzusteigen.
Folien der Präsentation:
Lehrreiche weiterführende Links:
https://dotnet.microsoft.com/en-us/learn
https://learn.microsoft.com/de-de/dotnet/core/introduction
https://learn.microsoft.com/de-de/dotnet/maui/?view=net-maui-9.0
https://learn.microsoft.com/de-de/dotnet/csharp/
https://www.it-schulungen.com/wir-ueber-uns/wissensblog/was-ist-net-maui-9-das-plattformuebergreifende-ui-framework-im-detail.html
https://medium.com/quick-code/understanding-the-net-ecosystem-f60f571e1152
Beitragsbild: https://www.unimedia.tech/wp-content/uploads/2023/11/Maui-1.webp