BlazorASP.NET Core modely hostování

Blazorje webová rozhraní určená ke spouštění na straně serveru v ASP.NET Core ( ) nebo na straně klienta v prohlížeči v modulu runtime .NET založeném Blazor Server na WebAssembly( Blazor WebAssembly ). Bez ohledu na model hostování jsou modely aplikací a komponent stejné.

Blazor Server

S modelem hostování se aplikace spustí na serveru z ASP.NET Core Blazor Server aplikace. Aktualizace uživatelského rozhraní, zpracování událostí a volání JavaScriptu se zpracovávají přes SignalR připojení.

Prohlížeč komunikuje s aplikací (hostovanou v aplikaci ASP.NET Core) na serveru přes připojení SignalR .

Aplikace ASP.NET Core odkazuje na třídu aplikace, do které Startup se má přidat:

  • Služby na straně serveru.
  • Aplikace do kanálu zpracování požadavků.

V klientovi blazor.server.js skript navádí SignalR připojení k serveru. Skript se do aplikace na straně klienta předá z vloženého prostředku ve sdílené ASP.NET Core architektury. Aplikace na straně klienta zodpovídá za zachování a obnovení stavu aplikace podle potřeby.

Model Blazor Server hostování nabízí několik výhod:

  • Velikost stahování je výrazně menší než aplikace a Blazor WebAssembly 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 Core.
  • Ke spuštění aplikace se používá .NET Core na serveru, takže stávající nástroje .NET, jako je ladění, fungují podle očekávání.
  • Jsou podporováni tencí klienti. Aplikace například pracují s prohlížeči, které nepodporují WebAssembly a na zařízeních s Blazor Server omezenými prostředky.
  • Základ kódu .NET/C# aplikace, včetně kódu komponenty aplikace, se klientům neposloužil.

Důležité

Aplikace Blazor Server prerenders v reakci na první požadavek klienta, který vytvoří stav uživatelského rozhraní na serveru. Když se klient pokusí vytvořit připojení, musí se SignalR znovu připojit ke stejnému serveru. Blazor Server Aplikace, které používají více než jeden back-endový server, by měly implementovat přichycené relace pro SignalR připojení. Další informace najdete v části Připojení k serveru.

Model Blazor Server hostování má následující omezení:

  • Obvykle existuje vyšší latence. Každá interakce uživatele zahrnuje segment směrování sítě.
  • Není k dispozici žádná offline podpora. Pokud připojení klienta selže, aplikace přestane fungovat.
  • Škálovatelnost je náročná pro aplikace s mnoha uživateli. Server musí spravovat více připojení klientů a zpracovávat stav klienta.
  • K ASP.NET Core aplikace se vyžaduje server pro správu. Scénáře nasazení bez serveru nejsou možné, například obsluhu aplikace z Content Delivery Network (CDN).

Informace o vytvoření Blazor Server aplikace najdete v tématu Nástroje pro ASP.NET Core Blazor .

Model Blazor Server aplikace podporuje kontejnery Dockeru. V případě podpory Dockeru v Visual Studio klikněte pravým tlačítkem na projekt v Visual Studio vyberte Přidat > podporu Dockeru.

Porovnání s uživatelským rozhraním vykresleným serverem

Jedním ze způsob, jak porozumět aplikacím, je pochopit, jak se liší od tradičních modelů pro vykreslování uživatelského rozhraní Blazor Server v ASP.NET Core aplikacích pomocí Razor zobrazení nebo Razor stránek. Oba modely používají Razor jazyk k popisu obsahu HTML pro vykreslení, ale výrazně se liší v tom, jak se vykreslují značky.

Při Razor vykreslení stránky nebo zobrazení vysílá každý řádek kódu Razor kód HTML v textové podobě. Po vykreslení server vyhodí stránku nebo instanci zobrazení, včetně stavu, který byl vytvořen. Pokud dojde k dalšímu požadavku na stránku, například když se ověření serveru nezdaří a zobrazí se souhrn ověření:

  • Celá stránka se znovu vykresluje na text HTML.
  • Stránka se odesílá klientovi.

Aplikace Blazor se skládá z znovu použitelných prvků uživatelského rozhraní, které se nazývají komponenty. Komponenta obsahuje kód jazyka C#, značky a další komponenty. Při vykreslení komponenty vytvoří graf zahrnutých komponent podobný kódu Blazor HTML nebo XML model DOM (Document Object Model) (DOM). Tento graf obsahuje stav komponenty ve vlastnostech a polích. Blazor vyhodnotí graf komponent a vytvoří binární reprezentaci kódu. Binární formát může být:

  • Přehodí se na text HTML (během prerenderingu). †
  • Slouží k efektivní aktualizaci kódu během běžného vykreslování.

Předběžné vykreslení: Požadovaná komponenta se zkompiluje na serveru do statického KÓDU HTML a odesílá se klientovi, kde se Razor vykreslí uživateli. Po nahrazování připojení mezi klientem a serverem se statické prvky předkreslované komponentou nahradí interaktivními prvky. Díky předběžnému vykreslení bude aplikace pro uživatele responzivní.

Aktualizaci uživatelského rozhraní Blazor v aplikaci aktivuje:

  • Interakce uživatele, například výběr tlačítka
  • Triggery aplikace, například časovač.

Graf komponent se překresluje a vypočítá se rozdíl (rozdíl) uživatelského rozhraní. Tento rozdíl je nejmenší sada úprav modelu DOM vyžadované k aktualizaci uživatelského rozhraní na klientovi. Rozdíl se klientovi odesílá v binárním formátu a použije se prohlížečem.

Komponenta je odstraněna poté, co uživatel přejde od ní na klientovi. Zatímco uživatel pracuje s komponentou, stav komponenty (služby, prostředky) musí být v paměti serveru. Vzhledem k tomu, že server může současně udržovat stav mnoha komponent, je nutné vyřešit vyčerpání paměti. Pokyny k vytvoření aplikace pro zajištění co nejlepšího Blazor Server využití paměti serveru najdete v tématu Pokyny pro zmírnění hrozeb pro ASP.NET Core Blazor Server .

Obvody

Aplikace Blazor Server je postavená na ASP.NET Core SignalR . Každý klient komunikuje se serverem prostřednictvím jednoho nebo více SignalR připojení nazývaných okruh. Okruh je Blazor abstrakcí připojení, SignalR která dokáže tolerovat dočasná přerušení sítě. Když klient Blazor uvidí, že je připojení odpojené, pokusí se znovu připojit k SignalR serveru pomocí nového SignalR připojení.

Každá obrazovka prohlížeče (karta prohlížeče nebo prvek IFrame), která je připojená Blazor Server k aplikaci, používá SignalR připojení. Toto je ještě další důležitý rozdíl v porovnání s typickými aplikacemi vykreslených na serveru. V aplikaci vykreslené serverem se otevření stejné aplikace na několika obrazovkách prohlížeče obvykle nevykládá na další požadavky na prostředky na serveru. Každá obrazovka prohlížeče v aplikaci vyžaduje samostatný okruh a samostatné instance stavu komponenty, které má Blazor Server server spravovat.

Blazor považuje zavření karty prohlížeče nebo přechod na externí adresu URL za předčasné ukončení. V případě bezvýkonného ukončení se okruh a přidružené prostředky okamžitě uvolní. Klient se také může odpojit bez výpadku, například kvůli přerušení sítě. Blazor Server ukládá odpojené okruhy po konfigurovatelný interval, aby se klient znovu připojoval.

Blazor Server umožňuje kódu definovat obslužnou rutinu okruhu, která umožňuje spuštění kódu při změnách stavu okruhu uživatele. Další informace naleznete v tématu ASP.NET Core Blazor SignalRdoprovodné materiály.

Latence uživatelského rozhraní

Latence uživatelského rozhraní je doba od iniciované akce do doby, kdy se uživatelské rozhraní aktualizuje. Menší hodnoty latence uživatelského rozhraní jsou nezbytné, aby aplikace reagovala na uživatele. V aplikaci se každá akce odesílá na server, zpracovává se a zpět se Blazor Server odesílá rozdíl uživatelského rozhraní. V důsledku toho je latence uživatelského rozhraní součtem latence sítě a latence serveru při zpracování akce.

U podnikových aplikací omezených na privátní podnikovou síť je vliv na vnímání latence uživateli kvůli latenci sítě obvykle nepochybný. U aplikace nasazené přes internet může být latence pro uživatele patrná, zejména pokud jsou uživatelé geograficky široce distribuovaná.

Využití paměti může také přispět k latenci aplikace. Vyšší využití paměti vede k častému uvolňování paměti nebo stránkování paměti na disk, což snižuje výkon aplikace a následně zvyšuje latenci uživatelského rozhraní.

Blazor Server Aplikace by měly být optimalizované tak, aby minimalizovaly latenci uživatelského rozhraní snížením latence sítě a využití paměti. Přístup k měření latence sítě najdete v tématu Hostování a nasazení ASP.NET Core Blazor Server . Další informace o a SignalR Blazor najdete v těchto tématu:

Připojení k serveru

Blazor Server aplikace vyžadují aktivní SignalR připojení k serveru. Pokud dojde ke ztrátě připojení, aplikace se pokusí znovu připojit k serveru. Dokud stav klienta zůstane v paměti serveru, obnoví se relace klienta bez ztráty stavu.

Aplikace Blazor Server prerenders v reakci na první požadavek klienta, který vytvoří stav uživatelského rozhraní na serveru. Když se klient pokusí vytvořit SignalR připojení, musí se znovu připojit ke stejnému serveru. Blazor Server Aplikace, které používají více než jeden back-endový server, by měly implementovat přichycené relace pro SignalR připojení.

Pro aplikace doporučujeme používat SignalR službu Azure Blazor Server . Služba umožňuje horizontální navýšení kapacity Blazor Server aplikace na velký počet souběžných SignalR připojení. Relace Sticky je pro službu Azure povolené nastavením SignalR ServerStickyMode Možnosti služby nebo hodnoty konfigurace na Required . Další informace naleznete v tématu Hostování a nasazení ASP.NET Core Blazor Server.

Při použití služby IIS jsou v rámci Směrování žádostí na aplikace povoleny rychlé relace. Další informace najdete v tématu Vyrovnávání zatížení HTTP pomocí směrování žádostí na aplikace.

Blazor WebAssembly

Blazor WebAssembly aplikace spouští na straně klienta v prohlížeči prostředí .NET runtime založené na WebAssembly. BlazorAplikace, její závislosti a modul runtime .NET se stáhnou do prohlížeče. Aplikace se spustí přímo ve vlákně uživatelského rozhraní prohlížeče. Aktualizace uživatelského rozhraní a zpracování událostí se vyskytují v rámci stejného procesu. Prostředky aplikace se nasazují jako statické soubory na webový server nebo službu, která je schopná obsluhovat statický obsah klientům.

::: No-Loc (Blazor WebAssembly):::: The::: No-Loc (Blazor)::: aplikace běží ve vlákně uživatelského rozhraní v prohlížeči.

když se Blazor WebAssembly aplikace vytvoří pro nasazení bez back-endu ASP.NET Core aplikace, aby sloužila svým souborům, aplikace se nazývá samostatná Blazor WebAssembly aplikace. Když se aplikace vytvoří pro nasazení s back-end aplikací pro poskytování svých souborů, označuje se aplikace jako hostovaná Blazor WebAssembly aplikace. Hostovaná Blazor WebAssembly Client aplikace obvykle komunikuje s back-end Server aplikací přes síť pomocí volání webového rozhraní API nebo SignalR ( použít ASP.NET Core SignalR sBlazor ).

blazor.webassembly.jsSkript je poskytován architekturou a popisovači:

  • Stažení modulu runtime .NET, aplikace a závislostí aplikace.
  • Inicializace modulu runtime pro spuštění aplikace.

Blazor WebAssemblyModel hostování nabízí několik výhod:

  • Neexistuje žádná závislost na straně serveru .NET. Aplikace po stažení do klienta plně funguje.
  • Prostředky a možnosti klienta jsou plně využité.
  • Práce je ze serveru převedena na klienta.
  • pro hostování aplikace není vyžadován ASP.NET Core webový server. jsou možné scénáře nasazení bez serveru, jako je například obsluha aplikace z Content Delivery Network (CDN).

Blazor WebAssemblyModel hostování má následující omezení:

  • Aplikace je omezená na možnosti prohlížeče.
  • Je vyžadován klientský hardware a software (například podpora WebAssembly).
  • Velikost ke stažení je větší a aplikace trvá déle, než se načtou.

Chcete-li vytvořit Blazor WebAssembly aplikaci, přečtěte si téma Nástroje pro ASP.NET Core Blazor .

Hostovaný Blazor aplikační model podporuje kontejnery Docker. pro podporu docker v Visual Studio klikněte pravým tlačítkem na Server projekt hostovaného Blazor WebAssembly řešení a vyberte přidat > podporu docker.

Blazor WebAssembly zahrnuje podporu pro oříznutí nepoužitého kódu z knihoven rozhraní .NET Core Framework a Blazor modulu runtime. Další informace naleznete v tématech ASP.NET Core Blazor globalizace a lokalizace a Hostování a nasazení ASP.NET Core Blazor WebAssembly.

Blazor WebAssembly podporuje kompilaci v předstihu (AOT), kde můžete kód .NET zkompilovat přímo do rozhraní WebAssembly. Výsledkem kompilace AOT je vylepšení výkonu za běhu na úkor větší velikosti aplikace. Další informace naleznete v tématu Hostování a nasazení ASP.NET Core Blazor WebAssembly.

Blazor WebAssembly zahrnuje podporu pro oříznutí nepoužitého kódu z knihoven .NET Core Framework. Další informace naleznete v tématu ASP.NET Core Blazor globalizace a lokalizace.

Další materiály