Blazor modely hostování aplikací
Tip
Tento obsah je výňatek z eBooku pro Blazor vývojáře webových formulářů ASP NET pro 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.
Blazor aplikace je možné hostovat jedním z následujících způsobů:
- Na straně klienta v prohlížeči na .WebAssembly
- Na straně serveru v aplikaci ASP.NET Core.
BlazorWebAssembly Apps
BlazorWebAssembly aplikace se spouštějí přímo v prohlížeči v WebAssemblymodulu runtime .NET. BlazorWebAssembly aplikace fungují podobným způsobem jako front-endové architektury JavaScriptu, jako je Angular nebo React. Místo psaní JavaScriptu ale píšete C#. Modul runtime .NET se stáhne s aplikací spolu se sestavením aplikace a všemi požadovanými závislostmi. Nejsou vyžadovány žádné moduly plug-in prohlížeče ani rozšíření.
Stažená sestavení jsou normální sestavení .NET, jako byste použili v jakékoli jiné aplikaci .NET. Vzhledem k tomu, že modul runtime podporuje .NET Standard, můžete ve své BlazorWebAssembly aplikaci použít existující knihovny .NET Standard. Tato sestavení se však budou i nadále spouštět v sandboxu zabezpečení prohlížeče. Některé funkce můžou vyvolat , PlatformNotSupportedExceptionnapříklad pokus o přístup k systému souborů nebo otevření libovolných síťových připojení.
Když se aplikace načte, spustí se modul runtime .NET a odkazuje na sestavení aplikace. Spustí se logika spuštění aplikace a vykreslí se kořenové komponenty. Blazor vypočítá aktualizace uživatelského rozhraní na základě vykresleného výstupu ze součástí. Aktualizace DOM se pak použijí.
BlazorWebAssembly aplikace běží čistě na straně klienta. Tyto aplikace je možné nasadit na řešení pro hostování statických webů, jako jsou GitHub Pages nebo Hostování statických webů Azure. .NET se vůbec nevyžaduje na serveru. Přímé propojení s částmi aplikace obvykle vyžaduje řešení směrování na serveru. Řešení směrování přesměruje požadavky do kořenového adresáře aplikace. Toto přesměrování lze například zpracovat pomocí pravidel přepsání adresy URL ve službě IIS.
Pokud chcete získat všechny výhody vývoje webu .NET s kompletním Blazor zásobníkem, hostujte aplikaci BlazorWebAssembly pomocí ASP.NET Core. Pomocí .NET na klientovi i na serveru můžete snadno sdílet kód a sestavit aplikaci pomocí jedné konzistentní sady jazyků, architektur a nástrojů. Blazor poskytuje pohodlné šablony pro nastavení řešení, které obsahuje BlazorWebAssembly jak aplikaci, tak hostitelský projekt ASP.NET Core. Po sestavení řešení jsou vytvořené statické soubory z Blazor aplikace hostované aplikací ASP.NET Core s již nastavenou záložním směrováním.
Blazor Serverové aplikace
Vzpomeňte si z diskuze o architektuřeBlazor, že Blazor komponenty vykreslují výstup do přechodné abstrakce označované jako .RenderTree
Architektura Blazor pak porovná vykreslení s tím, co bylo dříve vykresleno. Rozdíly se použijí na dom. Blazor komponenty jsou oddělené od způsobu použití vykresleného výstupu. Proto samotné komponenty nemusí běžet ve stejném procesu jako proces, který aktualizuje uživatelské rozhraní. Ve skutečnosti nemusí běžet ani na stejném počítači.
V Blazor serverových aplikacích se komponenty spouští na serveru místo na straně klienta v prohlížeči. Události uživatelského rozhraní, ke kterým dochází v prohlížeči, se posílají na server přes připojení v reálném čase. Události se odesílají do správných instancí komponent. Komponenty se vykreslují a počítané rozdíly uživatelského rozhraní se serializují a odesílají do prohlížeče, kde se použije na dom.
Blazor Model hostování serveru může znít dobře, pokud jste použili ASP.NET AJAX a UpdatePanel ovládací prvek. Ovládací UpdatePanel
prvek zpracovává použití částečných aktualizací stránky v reakci na aktivační události na stránce. Když se aktivuje, UpdatePanel
požadavky na částečnou aktualizaci a pak ji použije, aniž by bylo nutné aktualizovat stránku. Stav uživatelského rozhraní se spravuje pomocí ViewState
. Blazor Serverové aplikace se mírně liší v tom, že aplikace vyžaduje aktivní připojení k klientovi. Kromě toho se na serveru udržuje veškerý stav uživatelského rozhraní. Kromě těchto rozdílů jsou oba modely koncepčně podobné.
Výběr správného Blazor modelu hostování
Jak je popsáno v Blazor dokumentaci k modelu hostování, různé Blazor modely hostování mají různé kompromisy.
Model BlazorWebAssembly hostování má následující výhody:
- Neexistuje žádná závislost na straně serveru .NET. Aplikace po stažení do klienta plně funguje.
- Klientské prostředky a možnosti se plně využívají.
- Práce se přesměruje ze serveru na klienta.
- K hostování aplikace není nutný webový server ASP.NET Core. Scénáře nasazení bez serveru jsou možné (například obsluha aplikace z CDN).
Nevýhodou BlazorWebAssembly modelu hostování jsou:
- Možnosti prohlížeče omezují aplikaci.
- Vyžaduje se hardware a software podporující klienta (například WebAssembly podpora).
- Velikost stahování je větší a načítání aplikací trvá déle.
- Podpora modulu runtime a nástrojů .NET je méně vyspělá. Existují například omezení podpory a ladění .NET Standard .
Blazor Naopak model hostování serveru nabízí následující výhody:
- Velikost stahování je mnohem menší než aplikace na straně klienta a aplikace se načítá mnohem rychleji.
- Aplikace plně využívá možnosti serveru, včetně použití všech rozhraní API kompatibilních s .NET.
- .NET na serveru se používá ke spuštění aplikace, takže existující nástroje .NET, jako je ladění, funguje podle očekávání.
- Podporují se tenké klienty. Například aplikace na straně serveru pracují s prohlížeči, které nepodporují WebAssembly a na zařízeních s omezenými prostředky.
- Základ kódu .NET/C# aplikace, včetně kódu komponenty aplikace, se klientům obsluhuje.
Nevýhodami Blazor modelu hostování serveru jsou:
- Vyšší latence uživatelského rozhraní Každá interakce uživatele zahrnuje segment směrování sítě.
- Neexistuje žádná offline podpora. Pokud se připojení klienta nezdaří, aplikace přestane fungovat.
- Škálovatelnost je pro aplikace s mnoha uživateli náročná. Server musí spravovat více klientských připojení a zpracovávat stav klienta.
- Pro obsluhu aplikace se vyžaduje server ASP.NET Core. Scénáře bezserverového nasazení nejsou možné. Aplikaci například nemůžete obsluhovat z CDN.
Předchozí seznam kompromisů může být zastrašující, ale model hostování můžete později změnit. Blazor Bez ohledu na vybraný model hostování je model komponent stejný. V zásadě lze stejné komponenty použít s hostitelským modelem. Kód vaší aplikace se nemění; Je ale vhodné zavést abstrakce, aby vaše komponenty zůstaly hostitelem modelu, který není založený na modelu. Abstrakce umožňují aplikaci snadněji přijmout jiný model hostování.
Nasazení aplikace
ASP.NET aplikace Webových formulářů jsou obvykle hostované ve službě IIS na počítači nebo clusteru s Windows Serverem. Blazor aplikace můžou také:
- Hostovat ve službě IIS, buď jako statické soubory, nebo jako aplikaci ASP.NET Core.
- Využijte flexibilitu ASP.NET Core hostovat na různých platformách a serverových infrastrukturách. Aplikaci můžete například hostovat Blazor pomocí Nginx nebo Apache v Linuxu. Další informace o publikování a nasazení Blazor aplikací najdete v Blazordokumentaci k hostování a nasazení .
V další části se podíváme na to, jak jsou projekty pro BlazorWebAssembly a Blazor serverové aplikace nastavené.