Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Návod
Tento obsah je výňatek z eBooku, architekt moderní webové aplikace s ASP.NET Core a Azure, který je k dispozici na .NET Docs nebo jako bezplatný soubor PDF ke stažení, který si můžete přečíst offline.
"… Díky správnému návrhu jsou funkce 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á.
Obrázek 2–1 eShopOnWeb
Referenční aplikace
- eShopOnWeb
https://github.com/dotnet/eShopOnWeb
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.
Křížová platforma
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 pouze na funkcích, které skutečně vyžadují, což snižuje jejich rozměr a povrchovou plochu bezpečnostních zranitelností.
ASP.NET Core také plně podporuje injektáž závislostí, a to 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ě vázat tato rozhraní spíše než ke konkrétním implementacím, což usnadňuje jejich rozšíření, údržbu a testování.
Snadné testování pomocí automatizovaných testů
ASP.NET Core aplikace podporují jednotkové testování a jejich volná vazba a podpora injektáže závislostí usnadňuje výměnu infrastrukturních prvků za pomoci falešných implementací 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 mohou zasílat požadavky tomuto serveru v paměti, čímž se používá celý aplikační stack (včetně middlewaru, směrování, vazby modelu, filtrů atd.) a obdrží odpověď, to vše za zlomek času, který by bylo potřeba k hostování aplikace na skutečném serveru a zpracová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í a SPA chování
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 modelu –View-Controller (MVC) 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.
Single page aplikace (SPA) naproti tomu zahrnují velmi málo dynamicky generovaných načítání stránek na straně serveru (pokud vůbec jaké). Mnoho SPA se inicializuje v rámci statického souboru HTML, který načte potřebné JavaScriptové knihovny pro spuštění a běh 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í. Blazor WebAssembly 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 procesu 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ě klienta Blazor, vydané v roce 2020, eliminuje nutnost vykreslování změn 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
- Úvod do ASP.NET Core
https://learn.microsoft.com/aspnet/core/- Testování v ASP.NET Core
https://learn.microsoft.com/aspnet/core/testing/- Blazor - Začít
https://blazor.net/docs/get-started.html