Základy architektury ASP.NET Core Blazor
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální vydání najdete v článku verze .NET 9.
Varování
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální vydání najdete v verzi .NET 9 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Pro aktuální vydání si přečtěte článek o verzi .NET 9.
Články Základy poskytují vedení k základním konceptům. Blazor Některé koncepty jsou spojené se základním porozuměním komponent Razor, kterým se blíže věnuje další část tohoto článku a podrobně se jim věnují články týkající se komponent.
Koncepty statického a interaktivního vykreslování
Razor komponenty jsou buď staticky vykreslené, nebo interaktivně vykreslené.
Statické nebo statické vykreslování je scénář na straně serveru, který znamená, že se komponenta vykresluje bez kapacity pro interplay mezi uživatelem a kódem .NET/C#. Události JavaScriptu a HTML DOM zůstávají nedotčeny, ale žádné uživatelské události na klientovi nelze zpracovat, pokud je .NET spuštěn na serveru.
Interaktivní/interaktivita nebo interaktivní vykreslování znamená, že komponenta má kapacitu pro zpracování událostí a vazeb rozhraní .NET pomocí kódu jazyka C#. Události a vazby rozhraní .NET se zpracovávají na serveru modulem runtime ASP.NET Core nebo v prohlížeči v klientovi pomocí modulu runtime Blazor založeného na WebAssembly.
Důležité
Při použití Blazor Web App, většina ukázkových Blazor komponent dokumentace vyžaduje interaktivitu k fungování a předvedení konceptů popsaných v článcích. Při testování ukázkové komponenty poskytované článkem v Blazor Web Appse ujistěte, že aplikace přijímá globální interaktivitu nebo komponenta přijímá interaktivní režim vykreslování. Další informace o tomto tématu poskytují režimy vykreslování ASP.NET Core Blazor v části Součásti, které se zobrazí dále v sadě dokumentace Blazor.
Další informace o těchto konceptech a o tom, jak řídit statické a interaktivní vykreslování, najdete v článku o vykreslovacích režimech ASP.NET Core Blazor dále v Blazor dokumentaci.
Koncepty vykreslování klientů a serverů
V rámci Blazor dokumentace se říká, že aktivita, která probíhá v systému uživatele, probíhá na straně klienta nebo klienta. Aktivita, která probíhá na serveru, se říká, že na serveru nebo na straně serveru.
Termín vykreslování znamená vytvořit HTML kód, který prohlížeče zobrazují.
Vykreslování na straně klienta (CSR) znamená, že poslední kód HTML je generován modulem runtime .NET WebAssembly v klientovi. Pro tento typ vykreslování se z serveru do klienta neposílají žádné kódy HTML pro uživatelské rozhraní vygenerované klientem aplikace. Předpokládá se interaktivita uživatele se stránkou. Neexistuje žádný koncept pro statické vykreslování na straně klienta. CSR se považuje za interaktivní, takže "interaktivní vykreslování na straně klienta" a "interaktivní CSR" nejsou používány v odvětví ani v Blazor dokumentaci.
Vykreslování na straně serveru (SSR) znamená, že poslední kód HTML je generován modulem runtime ASP.NET Core na serveru. Kód HTML se odešle klientovi přes síť pro zobrazení prohlížečem klienta. Klient pro tento typ vykreslování nevytvořil žádný kód HTML pro uživatelské rozhraní vygenerované serverem aplikace. SSR může mít dvě varianty:
- Statická služba SSR: Server vytváří statický kód HTML, který neposkytuje interaktivitu uživatelů ani udržování Razor stavu součástí.
- Interaktivní SSR: Blazor události umožňují interaktivitu uživatele a Razor stav Blazor komponent je spravován frameworkem.
Předběžné vykreslování je proces počátečního vykreslování obsahu stránky na serveru bez povolení obslužných rutin událostí pro vykreslované ovládací prvky. Server vypíše uživatelské rozhraní HTML stránky co nejdříve v reakci na počáteční požadavek, což aplikaci umožní reagovat na uživatele. Prerendering může také zlepšit optimalizaci vyhledávače (SEO) vykreslením obsahu pro počáteční odpověď HTTP, kterou vyhledávací weby používají k výpočtu pořadí stránek. Po předběžném vykreslování vždy následuje konečné vykreslování, a to buď na serveru, nebo na klientovi.
Komponenty Razor
Aplikace Blazor jsou založené na komponentách Razor, které se často označují pouze jako komponenty. Komponenta je prvek uživatelského rozhraní, například stránka, dialogové okno nebo formulář pro zadávání dat. Komponenty jsou třídy .NET C# integrované do sestavení .NET.
Razor označuje způsob, jakým se komponenty obvykle píší – ve formě stránky kódu Razor v případě logiky a kompozice uživatelského rozhraní na straně klienta.
Razor je syntaxe pro kombinování jazyka značek HTML s kódem jazyka C#, která zvyšuje produktivitu vývojářů. Soubory Razor mají příponu .razor
.
Přestože někteří vývojáři a některé online zdroje informací o architektuře Blazor používají termín „komponenty Blazor“, v dokumentaci se tento termín nepoužívá, a místo toho se univerzálně používá termín „komponenty Razor“ nebo „komponenty“.
Dokumentace k architektuře Blazor se v ukázkách a popisu komponent řídí několika konvencemi:
- Obecně platí, že se v příkladech dodržují konvence psaní kódu ASP.NET Core nebo jazyka C# a související technické pokyny. Další informace najdete v následujících zdrojích informací:
- Kód projektů, cesty k souborům, názvy souborů, názvy šablon projektů a další odborné termíny jsou v americké angličtině a obvykle ohraničené značkou code.
- Komponenty se obvykle označují slovem „komponenta“ a názvem třídy jazyka C# (v notaci PascalCase). Například typická komponenta pro nahrávání souborů se označuje jako „komponenta
FileUpload
“. - Název třídy jazyka C# komponenty je obvykle stejný jako název souboru komponenty.
- Směrovatelné komponenty mají obvykle relativní adresu URL podle názvu třídy komponenty v notaci kebab-case. Například komponenta
FileUpload
obsahuje konfiguraci směrování zpřístupňující vykreslenou komponentu na relativní adrese URL/file-upload
. Směrování a navigaci se věnuje téma Směrování a navigace v architektuře ASP.NET Core Blazor. - Pokud se používá několik verzí komponenty, jsou tyto verze číslované. Například na komponentu
FileUpload3
je dosaženo/file-upload-3
. -
Razor direktivy v horní části definice komponenty (
.razor file
) jsou umístěny v následujícím pořadí:@page
,@rendermode
(.NET 8 nebo novější),@using
příkazy, další direktivy v abecedním pořadí. - I když nejsou pro
private
členy povinné, modifikátory přístupu se používají v příkladech článku a ukázkových aplikacích. Například se používáprivate
pro deklaraci pole s názvemmaxAllowedFiles
jakoprivate int maxAllowedFiles = 3;
. - Hodnoty parametrů komponenty začínají vyhrazeným symbolem, ale není to povinné. Literály (například logické hodnoty), klíčová slova (například
this
) anull
jako hodnoty parametrů komponent nejsou předponou@
, ale jde o pouze konvenci dokumentace. Pokud chcete, váš kód může před literály přidat předponu@
. - Třídy jazyka
this
C# používají klíčové slovo a vyhněte se polím s předponami s podtržítkem (_
) přiřazeným v konstruktorech, které se liší od pokynů pro architekturu ASP.NET Core Framework. - V příkladech, které používají primární konstruktory (C# 12 nebo novější) jsou parametry primárního konstruktoru obvykle používány přímo členy třídy. V příkladech článku jsou řádky kódu rozdělené tak, aby se omezilo vodorovné posouvání. Tyto chyby nemají vliv na provádění, ale při vkládání do projektu je možné je odebrat.
Další informace o Razor syntaxi komponent najdete vRazorčásti syntaxe ASP.NET základních Razor komponent.
Následuje příklad komponenty čítače, která je součástí aplikace vytvořené z šablony projektu Blazor. Podrobný popis komponent najdete v článcích věnovaných komponentám v dalších částech dokumentace. Následující příklad ukazuje koncepty komponent uvedené v článcích věnovaných základům, než se dostanete k článkům věnovaným komponentám v dalších částech dokumentace.
Counter.razor
:
Komponenta předpokládá, že interaktivní režim vykreslování je zděděný z nadřazené komponenty nebo globálně použit v aplikaci.
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount() => currentCount++;
}
Komponenta předpokládá, že interaktivní režim vykreslování je zděděný z nadřazené komponenty nebo globálně použit v aplikaci.
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount() => currentCount++;
}
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Výše uvedená komponenta Counter
:
- Na prvním řádku nastaví svou trasu pomocí direktivy
@page
. - Nastaví svůj název stránky a nadpis.
- Vykreslí aktuální počet pomocí direktivy
@currentCount
.currentCount
je celočíselná proměnná definovaná v kódu jazyka C# bloku@code
. - Zobrazí tlačítko pro aktivaci metody
IncrementCount
, která se také nachází v bloku@code
a zvýší hodnotu proměnnécurrentCount
.
Režimy vykreslování
Články v uzlu Základy odkazují na koncept režimů vykreslování. Toto se téma podrobně popisuje v článku o režimech vykreslování ASP.NET Core v Komponenty, který se zobrazí za uzlem Základy.
Pro počáteční odkazy v tomto uzlu článků týkajících se konceptů režimu vykreslování si v tuto chvíli pouze zaznamenejte následující:
Každá komponenta v Blazor Web App používá režim vykreslování k určení modelu hostování, který používá, kde je vykreslena, a zda je vykreslena staticky na serveru, pro interaktivitu uživatele na serveru nebo pro interaktivitu uživatele na straně klienta (obvykle s předběžným vykreslováním na serveru).
Blazor Server a Blazor WebAssembly aplikace pro verze ASP.NET Core starší než .NET 8 zůstávají zaměřené na modelem hostování, ne režimy vykreslování. Režimy vykreslování jsou koncepčně používány na Blazor Web App v .NET 8 nebo pozdějším.
Následující tabulka uvádí dostupné režimy vykreslování pro komponenty Razor v rámci Blazor Web App. Režimy vykreslování se použijí na komponenty s direktivou @rendermode
na instanci komponenty nebo na definici komponenty. Pro celou aplikaci je také možné nastavit režim vykreslování.
Název | Popis | Umístění vykreslení | Interaktivní |
---|---|---|---|
Statický server | Statické vykreslování na straně serveru (statické SSR) | počítačový server | Ne |
Interaktivní server | Interaktivní vykreslování na straně serveru (interaktivní SSR) pomocí Blazor Server | Server | Ano |
Interactive WebAssembly | Vykreslování na straně klienta (CSR) pomocí Blazor WebAssembly† | Klient | Ano |
Interaktivní systém | Interaktivní SSR s využitím Blazor Server zpočátku, a poté CSR při následných návštěvách po stažení balíčku Blazor | Server, pak klient | Ano |
† Vykreslování na straně klienta (CSR) se předpokládá jako interaktivní. "Interaktivní vykreslování na straně klienta" a "interaktivní CSR" se nepoužívají v oboru ani v Blazor dokumentaci.
Předchozí informace o režimech vykreslování jsou vše, co potřebujete vědět, abyste porozuměli článkům o uzlech Základy. Pokud jste noví v Blazor a čtete Blazor články postupně podle pořadí v obsahu, můžete odložit čtení podrobných informací o režimech vykreslování, dokud nedosáhnete článku ASP.NET Core Blazor render modes v uzlu Komponenty.
Model objektu dokumentu (DOM)
Odkazy na model objektu dokumentu používají zkratku DOM.
Další informace naleznete v následujících zdrojích:
Podmnožina rozhraní .NET API pro Blazor WebAssembly aplikace
Seznam vybraných rozhraní API .NET, která jsou podporována v prohlížeči Blazor WebAssembly, není k dispozici. Můžete ale ručně vyhledat seznam rozhraní .NET API s poznámkami s [UnsupportedOSPlatform("browser")]
a zjistit rozhraní .NET API, která nejsou ve službě WebAssembly podporovaná.
Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Další informace naleznete v následujících zdrojích:
- Knihovny tříd: Analyzátor kompatibility prohlížeče na straně klienta
-
Přidávání poznámek k rozhraním API jako nepodporovaných na konkrétních platformách (
dotnet/designs
úložiště GitHub
Ukázkové aplikace
Ukázkové aplikace v dokumentaci si můžete prohlédnout a stáhnout:
Blazor Ukázky úložiště GitHub (dotnet/blazor-samples
)
Vyhledejte ukázkovou aplikaci tak, že nejprve vyberete složku verze, která odpovídá verzi .NET, se kterou pracujete.
Ukázkové aplikace v úložišti:
- Blazor Web App
- Blazor WebAssembly
- ukázka kurzu Blazor Web App Filmy (Vytvoření aplikace Blazor filmové databáze (přehled))
- Blazor Web App s SignalR (Použijte ASP.NET Core SignalR s Blazor)
- Dvě Blazor Web App a Blazor WebAssembly aplikace pro volání webových rozhraní API ze serverů (Volání webového API z aplikace ASP.NET Core Blazor)
- Blazor Web App s využitím vzorů OIDC (BFF a jiných než BFF) (zabezpečení ASP.NET Core Blazor Web App s openID Connect (OIDC))
- Blazor Web App s Entra (Zabezpečení Blazor Web App ASP.NET Core s Microsoft Entra ID)
Protokolování s povolenou oblastí ( protokolování v ASP.NET Core ) - Blazor WebAssembly s ASP.NET Core Identity (Zabezpečení ASP.NET Core Blazor WebAssembly s ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid aplikace s Blazor Web App sdíleným uživatelským rozhraním poskytovaným knihovnou Razor tříd (RCL) (Sestavte .NET MAUIBlazor Hybrid aplikaci pomocí Blazor Web App)
- Další ukázky (viz Blazor ukázky souboru README úložiště GitHub)
Ukázkové aplikace v úložišti:
- Blazor Web App
- Blazor WebAssembly
- Blazor Web App Ukázkový příklad tutoriálu pro filmy (Vytvoření aplikace filmové databáze Blazor (Přehled))
- Blazor Web App with SignalR (Použijte ASP.NET Core SignalR s Blazor)
- Dvě Blazor Web App aplikace a Blazor WebAssembly aplikace pro volání webových rozhraní API (volání webového rozhraní API z aplikace ASP.NET CoreBlazor)
- Blazor Web App s využitím vzorů OIDC (BFF a jiných než BFF) (zabezpečení ASP.NET Core Blazor Web App s openID Connect (OIDC))
- Blazor WebAssemblyProtokolování s povolenými obory (ASP.NET Core Blazor protokolování)
- Blazor WebAssembly s ASP.NET Core Identity (Zabezpečení ASP.NET Core Blazor WebAssembly s ASP.NET Core Identity)
- .NET MAUI Blazor Hybridaplikace s Blazor Web App a sdíleným uživatelským rozhraním poskytovaným knihovnou tříd Razor (RCL) (Sestavení .NET MAUIBlazor Hybrid aplikace s Blazor Web App)
- Další ukázky (viz Blazor ukázky souboru README úložiště GitHub)
Ukázkové úložiště obsahuje dva typy ukázek:
- Aplikace s ukázkovými fragmenty kódu poskytují příklady, které se zobrazují v článcích. Tyto aplikace se kompilují, ale nemusí být nutně spustitelné aplikace. Tyto aplikace jsou užitečné jenom pro získání ukázkového kódu, který se zobrazuje v článcích.
- Ukázkové aplikace k Blazor článkům zkompilovat a spustit pro následující scénáře:
- Blazor Server a Blazor WebAssembly se SignalR
- Protokolování s podporou oborů Blazor WebAssembly
Další informace najdete v seznamu ukázek v úložišti a pokyny ke stažení, viz Blazor ukázky souboru README úložiště GitHub.
Základní testovací aplikace úložiště ASP.NET Core je také užitečná sada ukázek pro různé Blazor scénáře:
BasicTestApp
v referenčním zdroji ASP.NET Core (dotnet/aspnetcore
)
Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Bajtové násobky
Velikosti bajtů .NET používají předpony metrik pro ne desetinné násobky bajtů na základě mocnin 1024.
Název (zkratka) | Velikost | Příklad |
---|---|---|
Kilobajt (KB) | 1 024 bajtů | 1 kB = 1 024 bajtů |
Megabajt (MB) | 1 0242 bajtů | 1 MB = 1 048 576 bajtů |
Gigabajt (GB) | 1 0243 bajtů | 1 GB = 1 073 741 824 bajtů |
Žádosti o podporu
Pro úložiště dotnet/AspNetCore.Docs
jsou vhodné pouze problémy týkající se dokumentace.
V případě žádostí o podporu k produktu neotevírejte problém s dokumentací. Vyhledejte pomoc prostřednictvím některého z následujících kanálů podpory:
V případě potenciální chyby ve frameworku nebo chyby v produktu otevřete issue pro produktovou jednotku ASP.NET Core na dotnet/aspnetcore
issues. Hlášené chyby obvykle musí obsahovat následující:
- Jasné vysvětlení problému: Při otevírání problému postupujte podle pokynů v šabloně problému na GitHubu od produktové jednotky.
- Minimální projekt pro reprodukci: Umístěte na GitHub projekt, který si budou moct technici produktové jednotky stáhnout a spustit. Uveďte odkaz na projekt v úvodním komentáři k problému.
V případě možného problému s článkem Blazor otevřete hlášení o dokumentaci. Pokud chcete otevřít problém s dokumentací, použijte odkaz Otevřít problém s dokumentací v dolní části článku. Metadata přidaná k vašemu problému poskytují sledovací data a automaticky upozorní autora článku. Pokud se téma probíralo s produktovou jednotkou před otevřením problému s dokumentací, umístěte křížový odkaz na technický problém v úvodním komentáři k problému s dokumentací.
V případě problémů nebo zpětné vazby k sadě Visual Studio použijte příkaz Nahlásit problém nebo funkce Navrhnout funkci v sadě Visual Studio, které otevřou interní hlášení pro Visual Studio. Další informace najdete v tématu Zpětná vazba k sadě Visual Studio.
V případě problémů s Visual Studio Code požádejte o podporu na komunitních fórech podpory. V případě hlášení chyb a zpětné vazby k produktu otevřete problém v úložišti microsoft/vscode
na GitHubu.
Problémy s dokumentací pro Blazor na GitHubu se automaticky označí k vyřízení v rámci projektu Blazor.Docs
(dotnet/AspNetCore.Docs
úložiště na GitHubu). Na odpověď chvíli počkejte, zejména o víkendech a svátcích. Ve všední dny autoři dokumentace obvykle odpovídají do 24 hodin.
Odkazy na komunitní zdroje Blazor
Sbírku odkazů na Blazor zdroje spravované komunitou najdete na Awesome Blazor.
Poznámka:
Microsoft nevlastní, neudržuje ani nepodporuje úložiště Awesome Blazor ani většinu komunitních produktů a služeb, které jsou v tomto úložišti popsané a na které toto úložiště odkazuje.