Blazor vs. MVC: Warum mehr Unternehmen auf Blazor setzen sollten
Bildvorlagen: John Samuel | CC BY-SA 4.0 / dotnet | CC0
Blazor revolutioniert die Webentwicklung mit beeindruckenden Leistungsverbesserungen. Als Softwareentwickler konnten wir in den letzten Jahren beobachten, wie dieses Framework konstant an Bedeutung gewonnen hat. Für diesen Erfolg gibt es viele gute Gründe.
Im Vergleich zu traditionellen Frameworks wie ASP.NET MVC bietet Blazor WebAssembly viele entscheidende Vorteile. Besonders hervorzuheben ist die Möglichkeit, sowohl client- als auch serverseitige Logik mit C# zu schreiben, was den Entwicklungsprozess erheblich vereinfacht. Darüber hinaus ermöglicht die komponentenbasierte Architektur von Blazor eine bessere Wiederverwendbarkeit und Modularität.
Warum nicht einfach MVC statt Blazor nehmen?
Der Model-View-Controller (MVC) ist ein fester Bestandteil der ASP.NET-Entwicklung. Allerdings führt die Art von MVC, die in den Standardprojektvorlagen implementiert ist, häufig zu Problemen. Diese Probleme liegen in dessen Struktur begründet.
Problem 1: Strukturelle Probleme im Backend
Die Aufgabenteilung zwischen Model, View und Controller führt zwar zu einer sauberen Trennung der Komponenten, allerdings auf Kosten eines erheblichem Kommunikationsaufwands. Obwohl die Organisation mit drei Hauptkomponenten übersichtlich aussieht (das Model ist für die Daten und Logik zuständig, der View stellt die Daten dar, und der Controller nimmt Eingaben an), ist der Controller in der Praxis oft überdimensioniert und daher ein Bottleneck.
Darüber hinaus erfordert das MVC-Muster eine strikte Ordnerstruktur, die bei größeren Anwendungen schnell unübersichtlich werden kann. Für eine typische MVC-App benötigt man verschiedene Ordner wie „Controllers“, „Views“, „Models“ (etc.), was die Anwendungsentwicklung verlangsamt, da die Entwickler ständig zwischen diesen Ordnern wechseln müssen.
Obwohl MVC in seiner Grundidee die Wiederverwendbarkeit des Codes fördert und die Wartbarkeit verbessert, zeigt sich in der Realität, dass der Overhead in der Kommunikation und die zusätzliche Komplexität bei umfangreicheren Projekten problematisch werden können.
Problem 2: Unzureichendes UX
In den letzten Jahren wuchsen die Anforderungen an die Benutzerfreundlichkeit und die Interaktivität von Geschäftsanwendungen. Neue Standards, wie responsives und emotionales Design, stellen klassische MVC-Implementierungen vor erhebliche Herausforderungen.
So steht die synchrone Natur traditioneller Webanwendungen im Widerspruch zu reaktionschnellen Interfaces, da die Seite bei jeder Aktion vollständig neu geladen wird. Auch das Barrierefreiheitsstärkungsgesetz (BFSG) stellt heute einen unverzichtbaren Bestandteil des UX-Designs dar. Die dafür nötigen neuen Lösungen sind in traditionellen Architekturen oft schwer zu implementieren. Darüber hinaus erwarten Nutzer heute Echtzeitkommunikation in Anwendungen. SignalR ist nur ein Beispiel für moderne Technologien, die in MVC-Anwendungen zusätzlichen Implementierungsaufwand bedeuten.
Deshalb braucht es eine moderne Antwort auf MVC, die nicht nur den neuen Standards im UX-Design gerecht wird und ohne Aufwand barrierefrei aufgesetzt werden kann, sondern auch keine strukturellen Probleme im Backend ausweist und sich deswegen bei fortgesetzter Nutzung nicht aufbläht. Für viele Unternehmen heißt genau diese moderne Antwort Blazor.
Modern mit Blazor
Microsofts Blazor bietet eine innovative Herangehensweise für die Erstellung interaktiver Webanwendungen und adressiert dabei viele der Herausforderungen, mit denen Unternehmen bei herkömmlichen Entwicklungsansätzen konfrontiert sind.
C# durchgehend: Backend und Frontend vereint
Einer der größten Vorteile von Blazor liegt in der Möglichkeit, sowohl im Backend als auch im Frontend C# zu verwenden. Die Zeiten, in denen man C# und Java auf eine Stufe stellen konnte, sind längst vorbei. Mit C# 9 hat sich die Sprache mittlerweile so weit entwickelt, dass sie gegenüber anderen Programmiersprachen unzählige Vorteile bietet.
Darüber hinaus genießen Entwickler alle Vorteile der .NET-Plattform, zum Beispiel die hohen Sicherheitsstandards und die nahtlose Integration mit Microsoft-Entwicklungstools wie Azure für Cloud-Services und SQL Server für Datenbanken.
Tatsächlich können C#-Entwickler bestehenden Quellcode sogar unter Umständen ins Web mitnehmen, wodurch frühere Investitionen in eine Codebasis erhalten bleiben. Das funktioniert allerdings nur, wenn die verwendeten Funktionen und Schnittstellen im Webbrowser zur Verfügung stehen.
Komponentenbasierte Entwicklung mit Wiederverwendbarkeit
Blazor basiert auf einem komponentenorientierten Ansatz, bei dem Webanwendungen aus wiederverwendbaren und unabhängigen Komponenten erstellt werden. Eine Komponente in Blazor ist ein Element der Benutzeroberfläche, beispielsweise eine Seite, ein Dialogfeld oder ein Formular, und besteht aus HTML, CSS und C#-Code, der für das Rendering und die Interaktion mit der Benutzeroberfläche verantwortlich ist.
Einmal entwickelte Komponenten können in verschiedenen Teilen einer Anwendung oder in unterschiedlichen Projekten eingesetzt werden. Entwickler können so konsistente Benutzeroberflächen erstellen und damit Arbeit sparen.
Überdies steigert die Verwendung von Razor, einer Syntax zur Kombination von HTML-Markup mit C#-Code, deutlich die Produktivität. Mit IntelliSense-Programmierunterstützung in Visual Studio können Entwickler in ein und derselben Datei zwischen HTML-Markup und C# wechseln.
Blazor WebAssembly für clientbasierte Entwicklung
Blazor WebAssembly (WASM) ist ein fortschrittliches Framework für clientseitige Webentwicklung. Diese Variante von Blazor kompiliert .NET-Code direkt in WebAssembly, wodurch Anwendungen direkt im Browser ausgeführt werden können.
Obwohl die Downloadgröße im Vergleich zu Blazor Server größer ist, bietet Blazor WebAssembly entscheidende Performancevorteile. Besonders bemerkenswert ist die Leistungsverbesserung über verschiedene ASP.NET Core-Versionen hinweg. Tests zeigen signifikante Leistungssprünge bei der Serialisierung und Deserialisierung von JSON-Daten. Darüber hinaus verbessert die Ahead-of-Time (AOT) Kompilierung insbesondere bei rechenintensiven Operationen die Laufzeitperformance erheblich.
BlazorWebAssembly kann außerdem sogenannte PWAs (Progressive Web Applications) erstellen. Diese Anwendungen können über den Startbildschirm, den Desktop oder den Dock eines Betriebssystems gestartet werden und funktionieren auch offline, vergleichbar mit einer herkömmlichen Applikation.
Weitere Vorteile von Blazor
Neben C#, komponentenbasierter Entwicklung und WASM bietet Blazor noch eine Reihe weiterer kleiner Vorteile. Da Blazor open-source ist, müssen Sie nicht mit Anschaffungs- und Lizenzkosten oder Abhängigkeiten von größeren, profitorientierten Unternehmen rechnen.
Für Unternehmen, die bereits auf .NET-Technologien setzen, bietet Blazor nahtlose Integrationsmöglichkeiten. Entwickler können auf das gesamte .NET-Ökosystem zugreifen und bestehende Bibliotheken, Tools und Dienste problemlos einbinden. Dadurch werden Migrationen vereinfacht und vorhandene Investitionen geschützt.
Mit Microsoft als Herausgeber kann man davon ausgehen, dass Blazor kontinuierlich weiterentwickelt wird und über viele Jahre hinweg Unterstützung erhält. Im Gegensatz zu anderen Frameworks, die von kleineren Communities oder Unternehmen gepflegt werden, genießt Blazor die Unterstützung eines der größten Technologieunternehmen der Welt.
MVC erstellt gerne viele Ordner. (Bild: Burkhard Mücke | CC BY-SA 4.0)
Wann MVC weiterhin eine Option bleibt
Trotz der zahlreichen Vorteile von Blazor gibt es Szenarien, in denen ASP.NET MVC nach wie vor die bessere Wahl darstellt. Vor der Entscheidung sollten Sie deswegen immer Ihre individuellen Projektanforderungen checken. Wir haben einige Usecases für MVC für Sie zusammengestellt.
SEO und serverseitiges Rendering
Obwohl Blazor Prerendering unterstützt, bietet ASP.NET MVC durch sein ursprüngliches serverseitiges Rendering Vorteile für Suchmaschinenoptimierung.
Bei MVC wird der HTML-Inhalt direkt auf dem Server generiert und an den Browser gesendet, wodurch Suchmaschinen den vollständigen Inhalt sofort indexieren können, während Blazor WebAssembly durch seine clientseitige Ausführung zusätzliche Herausforderungen für SEO mit sich bringen kann.
Für Websites, bei denen die Sichtbarkeit in Suchmaschinen höchste Priorität hat, kann deshalb MVC mit seinem nativen serverseitigen Rendering die passendere Wahl sein. Dennoch ist zu beachten, dass Blazor durch spezielle Rendering-Modi wie StaticServer ebenfalls serverseitiges Rendering unterstützt, allerdings einen anderen technischen Ansatz als MVC verfolgt.
Bestehende Investitionen in MVC-Projekte
Unternehmen mit erheblichen Investitionen in bestehende MVC-Anwendungen sollten sich vor dem Umzug zu Blazor die Frage stellen, ob sich die Migration in ihrem Fall lohnt.
Die Migration von ASP.NET MVC zu ASP.NET Core MVC ist ein mehrstufiger Prozess, der zwar durch Tools wie den .NET-Upgrade-Assistenten unterstützt wird, allerdings dennoch Zeit und Ressourcen erfordert.
In vielen Fällen ist eine vollständige Neuentwicklung wirtschaftlich nicht sinnvoll. Das inkrementelle Update einer funktionierenden MVC-Anwendung kann allerdings eine pragmatischere Alternative sein. Das gilt besonders dann, wenn die Anwendung bereits stabil läuft und nur begrenzte neue Funktionen benötigt werden.
Einfache Webportale
Für einfache Webportale mit überschaubarer Komplexität und minimalen Anforderungen an Interaktivität kann MVC durchaus ausreichend sein.
Die zusätzlichen Funktionen von Blazor sind in vielen kleineren Szenarien schlicht überflüssig, wenn zum Beispiel keine komplexen Webanwendungen gebaut werden oder kein ausführlicher Techstack verwaltet werden muss.
Darüber hinaus verfügen viele Entwicklungsteams bereits über fundiertes Know-how im Umgang mit MVC. Bei unkomplizierten Projekten mit kurzer Laufzeit übersteigen die Einarbeitungskosten in Blazor also schnell das Budget einer MVC-Anwendung.
Fazit
Abgesehen von wenigen Szenarien ist Blazor eine moderne Alternative zu MVC, die zurecht von Unternehmen immer häufiger eingesetzt wird. Dank eines durchdachten Codes können sich Entwickler schnell in das Framework einarbeiten und häufig bestehende Technologien und Code mitnehmen. Die Quelloffenheit hält die Kosten niedrig.
Eine offenere Struktur sorgt außerdem dafür, dass man mit Blazor schneller und effektiver entwickeln kann. Das spart Zeit und Ressourcen. Auch die responsivere und schlicht modernere Benutzerberfläche sollte nicht unerwähnt bleiben. Diese kommt insbesondere dann zum Tragen, wenn ein Anwendung performant laufen muss.
Klar, für eine kleinere Anwendung ist es nicht unbedingt nötig, ein ganzes Entwicklungsteam vom MVC auf Blazor umzuschulen. Wenn Sie allerdings ein größeres Projekt planen, dann lohnt es sich auf jeden Fall, einen Blick in Richtung Microsoft zu riskieren.