Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Dieser Inhalt ist ein Auszug aus dem eBook, Architect Modern Web Applications mit ASP.NET Core und Azure, verfügbar auf .NET Docs oder als kostenloses herunterladbares PDF, das offline gelesen werden kann.
"… mit dem richtigen Design sind die Features leicht zu handhaben. Dieser Ansatz ist beschwerlich, ist aber weiterhin erfolgreich."
- Dennis Ritchie
Moderne Webanwendungen haben höhere Benutzererwartungen und höhere Anforderungen als je zuvor. Die heutigen Web-Apps werden voraussichtlich 24/7 von überall auf der Welt verfügbar sein und von praktisch jedem Gerät oder bildschirmgröße verwendet werden können. Webanwendungen müssen sicher, flexibel und skalierbar sein, um den Anforderungen zu entsprechen. Komplexere Szenarien sollten zunehmend von umfassenden Benutzeroberflächen verarbeitet werden, die auf dem Client mit JavaScript basieren und effizient über Web-APIs kommunizieren.
ASP.NET Core ist für moderne Webanwendungen und cloudbasierte Hostingszenarien optimiert. Das modulare Design ermöglicht Es Anwendungen, nur von diesen Features abhängig zu sein, die sie tatsächlich verwenden, die Anwendungssicherheit und -leistung zu verbessern und gleichzeitig die Hostingressourcenanforderungen zu reduzieren.
Referenzanwendung: eShopOnWeb
Dieser Leitfaden enthält eine Referenzanwendung, eShopOnWeb, die einige der Prinzipien und Empfehlungen veranschaulicht. Die Anwendung ist ein einfacher Online-Shop, der das Durchsuchen eines Katalogs von Hemden, Kaffeebechern und anderen Marketingartikeln unterstützt. Die Referenzanwendung ist bewusst einfach, um das Verständnis zu erleichtern.
Abbildung 2-1. eShopOnWeb
Referenzanwendung
- eShopOnWeb
https://github.com/dotnet/eShopOnWeb
In der Cloud gehostet und skalierbar
ASP.NET Core ist für die Cloud (öffentliche Cloud, private Cloud, jede Cloud) optimiert, da sie wenig Arbeitsspeicher und hohen Durchsatz aufweist. Der kleinere Speicherbedarf von ASP.NET Core-Anwendungen bedeutet, dass Sie mehr von ihnen auf derselben Hardware hosten können, und Sie zahlen für weniger Ressourcen, wenn Sie Cloudhostingdienste verwenden. Der höhere Durchsatz bedeutet, dass Sie mehr Kunden aus einer Anwendung mit derselben Hardware bedienen können, wodurch die Notwendigkeit, in Server und Hostinginfrastruktur zu investieren, weiter reduziert wird.
Plattformübergreifend
ASP.NET Core ist plattformübergreifend und kann unter Linux, macOS und Windows ausgeführt werden. Diese Funktion eröffnet viele neue Optionen für die Entwicklung und Bereitstellung von Apps, die mit ASP.NET Core erstellt wurden. Docker-Container – sowohl Linux als auch Windows – können ASP.NET Core-Anwendungen hosten, sodass sie die Vorteile von Containern und Microservices nutzen können.
Modular und lose gekoppelt
NuGet-Pakete sind wesentliche Bestandteile in .Net Core, und ASP.NET Core-Anwendungen werden aus vielen Bibliotheken über NuGet zusammengesetzt. Diese Granularität der Funktionalität trägt dazu bei, sicherzustellen, dass Apps nur von den tatsächlich benötigten Funktionen abhängen und bereitstellen, wodurch der Speicherbedarf und die Sicherheitslückenfläche reduziert werden.
ASP.NET Core unterstützt auch die Abhängigkeitsinjektion sowohl intern als auch auf Anwendungsebene vollständig. Schnittstellen können mehrere Implementierungen aufweisen, die bei Bedarf ausgetauscht werden können. Die Abhängigkeitsinjektion ermöglicht es Apps, lose von diesen Schnittstellen entkoppelt zu bleiben, anstatt sich an spezifische Implementierungen zu binden, was ihre Erweiterbarkeit, Wartbarkeit und Testbarkeit erleichtert.
Einfaches Testen mit automatisierten Tests
ASP.NET Core-Anwendungen unterstützen Komponententests, und ihre lose Kopplung und Unterstützung für abhängigkeitsinjektion erleichtert das Austauschen von Infrastrukturbedenken mit gefälschten Implementierungen für Testzwecke. ASP.NET Core wird auch mit einem TestServer ausgeliefert, der zum Hosten von Apps im Arbeitsspeicher verwendet werden kann. Funktionstests können dann Anforderungen an diesen In-Memory-Server stellen, den vollständigen Anwendungsstapel (einschließlich Middleware, Routing, Modellbindung, Filter usw.) ausführen und eine Antwort empfangen, und zwar in einem Bruchteil der Zeit, bis die App auf einem echten Server gehostet und Anforderungen über die Netzwerkebene ausgeführt wird. Diese Tests sind besonders einfach zu schreiben und wertvoll für APIs, die in modernen Webanwendungen immer wichtiger werden.
Herkömmliches Verhalten und SPA-Verhalten unterstützt
Herkömmliche Webanwendungen bringen wenig clientseitiges Verhalten mit sich, sondern verlassen sich stattdessen auf den Server für alle Navigationsvorgänge, Abfragen und Aktualisierungen, die die App möglicherweise vornehmen muss. Jeder neue Vorgang, der vom Benutzer vorgenommen wird, wird in eine neue Webanforderung übersetzt, wobei dadurch eine vollständige Seite im Browser des Endbenutzers neu geladen wird. Klassische Model-View-Controller(MVC)-Frameworks folgen in der Regel diesem Ansatz, wobei jede neue Anforderung einer anderen Controlleraktion entspricht, die wiederum mit einem Modell funktioniert und eine Ansicht zurückgibt. Einige einzelne Vorgänge auf einer bestimmten Seite können mit AJAX-Funktionen (asynchrones JavaScript und XML) erweitert werden, aber die Gesamtarchitektur der App verwendet viele verschiedene MVC-Ansichten und URL-Endpunkte. Darüber hinaus unterstützt ASP.NET Core MVC auch Razor Pages, eine einfachere Möglichkeit zum Organisieren von MVC-Formatseiten.
Einzelseitenanwendungen (Single Page Applications, SPAs) erfordern dagegen nur sehr wenige dynamisch generierte serverseitige Seitenlasten (falls vorhanden). Viele SPAs werden in einer statischen HTML-Datei initialisiert, die die erforderlichen JavaScript-Bibliotheken lädt, um die App zu starten und auszuführen. Diese Apps nutzen web-APIs für ihre Datenanforderungen stark und können viel umfangreichere Benutzeroberflächen bieten. Blazor WebAssembly stellt eine Möglichkeit zum Erstellen von SPAs mithilfe von .NET-Code bereit, die dann im Browser des Clients ausgeführt wird.
Viele Webanwendungen umfassen eine Kombination aus herkömmlichem Webanwendungsverhalten (in der Regel für Inhalte) und SPAs (für Interaktivität). ASP.NET Core unterstützt sowohl MVC (Ansichten oder Seitenbasierte) als auch Web-APIs in derselben Anwendung, wobei die gleichen Tools und zugrunde liegenden Frameworkbibliotheken verwendet werden.
Einfache Entwicklung und Bereitstellung
ASP.NET Core-Anwendungen können mit einfachen Text-Editoren und Befehlszeilenschnittstellen oder vollständigen Entwicklungsumgebungen wie Visual Studio geschrieben werden. Monolithische Anwendungen werden in der Regel auf einem einzelnen Endpunkt bereitgestellt. Bereitstellungen können einfach automatisiert werden, damit sie im Rahmen einer kontinuierlichen Integrationspipeline (Continuous Integration, CI) und einer kontinuierlichen Lieferpipeline (Continuous Delivery, CD) erfolgen. Zusätzlich zu herkömmlichen CI/CD-Tools bietet Microsoft Azure integrierte Unterstützung für Git-Repositorys und kann updates automatisch bereitstellen, sobald sie an einer angegebenen Git-Verzweigung oder einem angegebenen Tag vorgenommen werden. Azure DevOps bietet eine voll funktionsfähige CI/CD-Build- und Bereitstellungspipeline, und GitHub-Aktionen bieten eine weitere Option für projekte, die dort gehostet werden.
Herkömmliche ASP.NET und Webformulare
Neben ASP.NET Core ist traditionelle ASP.NET 4.x weiterhin eine robuste und zuverlässige Plattform zum Erstellen von Webanwendungen. ASP.NET unterstützt MVC- und Web-API-Entwicklungsmodelle sowie WebFormulare, die gut für die entwicklung von seitenbasierten Anwendungen geeignet sind, und bietet ein umfangreiches Drittanbieter-Komponentenökosystem. Microsoft Azure verfügt über eine große unterstützung für ASP.NET 4.x-Anwendungen, und viele Entwickler sind mit dieser Plattform vertraut.
Blazor
Blazor ist in ASP.NET Core 3.0 und höher enthalten. Es bietet einen neuen Mechanismus zum Erstellen von funktionsreichen, interaktiven Web-Client-Anwendungen mit Razor, C# und ASP.NET Core. Es bietet eine weitere Lösung, die Sie beim Entwickeln moderner Webanwendungen berücksichtigen sollten. Es gibt zwei Versionen von Blazor zu berücksichtigen: serverseitig und clientseitig.
Serverseitiges Blazor wurde 2019 mit ASP.NET Core 3.0 veröffentlicht. Wie der Name schon sagt, wird er auf dem Server ausgeführt und rendert Änderungen am Client-Dokument zurück im Browser über das Netzwerk. Serverseitiges Blazor bietet eine komplexe Clienterfahrung, ohne dass clientseitiges JavaScript erforderlich ist und ohne dass für jede Clientseiteninteraktion separate Seitenladevorgänge erforderlich sind. Änderungen auf der geladenen Seite werden vom Server angefordert und verarbeitet und dann mithilfe von SignalR an den Client zurückgesendet.
Clientseitiges Blazor wurde im Jahr 2020 eingeführt und macht das Rendern von Änderungen auf dem Server überflüssig. Stattdessen nutzt es WebAssembly, um .NET-Code innerhalb des Clients auszuführen. Der Client kann weiterhin API-Aufrufe an den Server tätigen, wenn dies erforderlich ist, um Daten anzufordern, aber das gesamte clientseitige Verhalten wird im Client über WebAssemblyausgeführt, das bereits von allen wichtigen Browsern unterstützt wird und nur eine JavaScript-Bibliothek ist.
Referenzen – Moderne Webanwendungen
- Einführung in ASP.NET Core
https://learn.microsoft.com/aspnet/core/- Testen in ASP.NET Core
https://learn.microsoft.com/aspnet/core/testing/- Blazor -Loslegen
https://blazor.net/docs/get-started.html