Sdílet prostřednictvím


Blazor modely hostování aplikací

Návod

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-pro-ASP-NET-Web-Forms-Developers miniatura obálky eKnihy.

Blazor aplikace je možné hostovat jedním z následujících způsobů:

  • Na straně klienta v prohlížeči naWebAssembly.
  • Na straně serveru v aplikaci ASP.NET Core.

Blazor WebAssembly aplikace

Blazor WebAssembly aplikace se spouštějí přímo v prohlížeči na .NET runtime založeném na WebAssembly. Blazor WebAssembly 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 PlatformNotSupportedException, například při pokusu 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 je nasměrován 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í.

Blazor WebAssembly

Blazor WebAssembly 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 kompletního vývoje webu .NET s full-stack Blazor, hostujte svou 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 statické soubory vytvořené aplikací Blazor hostované aplikací ASP.NET Core, která již má nastavené alternativní směrování.

Blazor Serverové aplikace

Vzpomeňte si na diskuzi o architektuřeBlazor, kdy Blazor komponenty vykreslují svůj výstup do přechodné abstrakce nazývané jako RenderTree. Framework Blazor pak porovná vykreslení s tím, co bylo dříve vykresleno. Rozdíly jsou aplikovány 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 aplikují do DOMu.

Blazor Server

Blazor Model hostování serveru vám může znít povědomě, pokud jste použili ASP.NET AJAX a UpdatePanel ovládací prvek. Ovládací prvek UpdatePanel se stará o aplikaci částečných aktualizací stránky v reakci na spouštěcí události na stránce. Když se aktivuje, UpdatePanel požádá o částečnou aktualizaci a poté ji použije, aniž by bylo nutné stránku obnovovat. 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.
  • Je vyžadován hardware a software schopný podporovat 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 nezávislé na hostitelském 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 Blazor dokumentaci k hostování a nasazení.

V další části se podíváme na to, jak jsou projekty pro BlazorWebAssembly a Blazor serverové aplikace nastavené.