Charakteristiky moderních webových aplikací

Tip

Tento obsah je výňatek z eBooku, architekta moderních webových aplikací s ASP.NET Core a Azure, který je k dispozici na webu .NET Docs nebo jako bezplatný soubor PDF ke stažení, který si můžete přečíst offline.

Architect Modern Web Applications with ASP.NET Core and Azure eBook cover thumbnail.

"... se správným designem, funkce jsou levné. Tento přístup je arduousný, ale bude i nadále úspěšný."
- Dennis Ritchie

Moderní webové aplikace mají vyšší očekávání uživatelů a vyšší požadavky než kdy dřív. U dnešních webových aplikací se očekává, že budou dostupné 24/7 odkudkoli na světě a budou použitelné prakticky z libovolného zařízení nebo velikosti obrazovky. Webové aplikace musí být zabezpečené, flexibilní a škálovatelné, aby splňovaly špičky v poptávce. Složitější scénáře by měly být zpracovávány bohatými uživatelskými prostředími založenými na klientovi pomocí JavaScriptu a efektivně komunikovat prostřednictvím webových rozhraní API.

ASP.NET Core je optimalizovaná pro moderní webové aplikace a scénáře hostování založené na cloudu. Jeho modulární návrh umožňuje aplikacím záviset pouze na těch funkcích, které skutečně používají, zlepšení zabezpečení a výkonu aplikací a zároveň snižuje požadavky na prostředky hostování.

Referenční aplikace: eShopOnWeb

Tyto pokyny zahrnují referenční aplikaci eShopOnWeb, která ukazuje některé principy a doporučení. Aplikace je jednoduchý online obchod, který podporuje procházení katalogu košil, kávových hrnek a dalších marketingových položek. Referenční aplikace je záměrně jednoduchá, aby byla snadno pochopitelná.

eShopOnWeb

Obrázek 2–1 eShopOnWeb

Referenční aplikace

Hostované v cloudu a škálovatelné

ASP.NET Core je optimalizovaná pro cloud (veřejný cloud, privátní cloud, jakýkoli cloud), protože je málo paměti a vysoká propustnost. Menší nároky aplikací ASP.NET Core znamenají, že můžete hostovat více z nich na stejném hardwaru a platíte za méně prostředků při používání cloudových hostitelských služeb s průběžným platbou. Vyšší propustnost znamená, že můžete obsluhovat více zákazníků z aplikace se stejným hardwarem, což dále snižuje potřebu investovat do serverů a hostitelské infrastruktury.

Multiplatformní

ASP.NET Core je multiplatformní a může běžet v Systémech Linux, macOS a Windows. Tato funkce otevírá mnoho nových možností pro vývoj i nasazení aplikací vytvořených pomocí ASP.NET Core. Kontejnery Dockeru – Linux i Windows – můžou hostovat aplikace ASP.NET Core, což jim umožňuje využívat výhody kontejnerů a mikroslužeb.

Modulární a volně svázané

Balíčky NuGet jsou prvotřídními občany v .NET Core a aplikace ASP.NET Core se skládají z mnoha knihoven prostřednictvím NuGetu. Tato členitost funkcí pomáhá zajistit, aby aplikace závisely jenom na funkcích, které skutečně vyžadují, a snížily jejich nároky a ohrožení zabezpečení.

ASP.NET Core také plně podporuje injektáž závislostí– interně i na úrovni aplikace. Rozhraní můžou mít více implementací, které je možné podle potřeby prohodit. Injektáž závislostí umožňuje aplikacím volně párovat tato rozhraní, nikoli konkrétní implementace, což usnadňuje rozšíření, údržbu a testování.

Snadné testování pomocí automatizovaných testů

ASP.NET základní aplikace podporují testování jednotek a jejich volné párování a podporu injektáže závislostí usnadňuje prohození problémů infrastruktury s falešnými implementacemi pro účely testování. ASP.NET Core se dodává také s TestServerem, který lze použít k hostování aplikací v paměti. Funkční testy pak můžou tomuto serveru v paměti vyhovět, vykonávat kompletní sadu aplikací (včetně middlewaru, směrování, vazby modelu, filtrů atd.) a přijmout odpověď, a to za zlomek času, který by trvalo hostování aplikace na skutečném serveru a provádění požadavků přes síťovou vrstvu. Tyto testy jsou obzvláště snadné psát a cenné pro rozhraní API, která jsou stále důležitější v moderních webových aplikacích.

Podporováno tradiční chování a chování spa

Tradiční webové aplikace zahrnovaly malé chování na straně klienta, ale místo toho se spoléhaly na server pro všechny navigace, dotazy a aktualizace, které může aplikace potřebovat. Každá nová operace provedená uživatelem se přeloží do nového webového požadavku s výsledkem opětovného načtení celé stránky v prohlížeči koncového uživatele. Klasické architektury MVC (Model-View-Controller) se obvykle řídí tímto přístupem, přičemž každý nový požadavek odpovídá jiné akci kontroleru, která by zase fungovala s modelem a vrátila zobrazení. Některé jednotlivé operace na dané stránce můžou být vylepšené pomocí funkcí AJAX (Asynchronní JavaScript a XML), ale celková architektura aplikace používala mnoho různých zobrazení MVC a koncových bodů adresy URL. Kromě toho ASP.NET Core MVC také podporuje Razor Pages, jednodušší způsob, jak uspořádat stránky ve stylu MVC.

Jednostrákové aplikace (SPA) naproti tomu zahrnují velmi málo dynamicky generovaných serverových stránek (pokud existuje). Mnoho spA se inicializuje v rámci statického souboru HTML, který načte potřebné javascriptové knihovny pro spuštění a spuštění aplikace. Tyto aplikace výrazně využívají webová rozhraní API pro potřeby svých dat a můžou poskytovat mnohem bohatší uživatelské prostředí. BlazorWebAssembly poskytuje způsob vytváření spA pomocí kódu .NET, který se pak spustí v prohlížeči klienta.

Mnoho webových aplikací zahrnuje kombinaci tradičního chování webových aplikací (obvykle pro obsah) a spA (pro interaktivitu). ASP.NET Core podporuje MVC (zobrazení nebo stránky) i webová rozhraní API ve stejné aplikaci pomocí stejné sady nástrojů a základních knihoven architektury.

Jednoduchý vývoj a nasazení

ASP.NET aplikace Core je možné psát pomocí jednoduchých textových editorů a rozhraní příkazového řádku nebo plnohodnotných vývojových prostředí, jako je Visual Studio. Monolitické aplikace se obvykle nasazují do jednoho koncového bodu. Nasazení je možné snadno automatizovat jako součást kanálu kontinuální integrace (CI) a průběžného doručování (CD). Kromě tradičních nástrojů CI/CD má Microsoft Azure integrovanou podporu úložišť Git a může automaticky nasazovat aktualizace, které se provádějí na zadanou větev nebo značku Git. Azure DevOps poskytuje plnohodnotný kanál sestavení a nasazení CI/CD a GitHub Actions nabízí další možnost pro projekty hostované tam.

Tradiční ASP.NET a webové formuláře

Kromě ASP.NET Core jsou tradiční ASP.NET 4.x robustní a spolehlivou platformou pro vytváření webových aplikací. ASP.NET podporuje modely vývoje MVC a webového rozhraní API a webové formuláře, které jsou vhodné pro bohatý vývoj aplikací založených na stránkách a nabízí bohatý ekosystém komponent třetích stran. Microsoft Azure má velkou dlouhodobou podporu pro aplikace ASP.NET 4.x a mnoho vývojářů tuto platformu dobře zná.

Blazor

Blazor je součástí ASP.NET Core 3.0 a novější. Poskytuje nový mechanismus pro vytváření bohatých interaktivních webových klientských aplikací pomocí Razor, C# a ASP.NET Core. Nabízí další řešení, které je potřeba zvážit při vývoji moderních webových aplikací. Je třeba zvážit dvě verze Blazor : na straně serveru a na straně klienta.

Serverová strana Blazor byla vydána v roce 2019 s ASP.NET Core 3.0. Jak už název napovídá, běží na serveru a vykresluje změny v klientském dokumentu zpět do prohlížeče přes síť. Na straně Blazor serveru je k dispozici bohaté prostředí klienta bez nutnosti javascriptu na straně klienta a bez nutnosti samostatných načtení stránek pro každou interakci se stránkou klienta. Změny na načtené stránce jsou požadovány ze serveru a zpracovány a následně odeslány zpět klientovi pomocí signalR.

Na straně Blazorklienta , vydané v roce 2020, eliminuje nutnost vykreslovat změny na serveru. Místo toho využívá WebAssembly ke spuštění kódu .NET v rámci klienta. Klient může dál volat rozhraní API na server, pokud je to potřeba k vyžádání dat, ale veškeré chování na straně klienta běží v klientovi prostřednictvím WebAssembly, který je již podporován všemi hlavními prohlížeči a je pouze javascriptovou knihovnou.

Reference – moderní webové aplikace