ASP.NET Core Blazor
Anteckning
Det här är inte den senaste versionen av den här artikeln. För den aktuella utgåvan, se den .NET 9-versionen av den här artikeln.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i .NET och .NET Core Support Policy. Den aktuella versionen finns i .NET 9-versionen av denna artikel.
Viktig
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den aktuella utgåvan, se .NET 9-versionen av den här artikeln.
Välkommen till Blazor!
Blazor är ett .NET klientdelswebbramverk som stöder både återgivning på serversidan och klientinteraktivitet i en enda programmeringsmodell:
Blazor är ett ramverk för att skapa interaktivt webbgränssnitt på klientsidan med .NET:
- Skapa omfattande interaktiva UIs med hjälp av C#.
- Dela applogik på serversidan och på klientsidan som skrivits i .NET.
- Rendera användargränssnittet som HTML och CSS för bred webbläsarsupport, inklusive mobila webbläsare.
- Skapa hybridappar för skrivbord och mobil med .NET och Blazor.
- Skapa omfattande interaktiva UIs med hjälp av C#.
- Dela applogik på serversidan och på klientsidan som skrivits i .NET.
- Rendera användargränssnittet som HTML och CSS för bred webbläsarsupport, inklusive mobila webbläsare.
Användning av .NET för webbutveckling på klientsidan ger följande fördelar:
- Skriv kod i C#, vilket kan förbättra produktiviteten i apputveckling och underhåll.
- Utnyttja det befintliga .NET-ekosystemet för .NET-bibliotek.
- Dra nytta av . NET:s prestanda, tillförlitlighet och säkerhet.
- Håll dig produktiv i Windows, Linux eller macOS med en utvecklingsmiljö, till exempel Visual Studio eller Visual Studio Code. Integrera med moderna värdplattformar, till exempel Docker.
- Skapa en gemensam uppsättning språk, ramverk och verktyg som är stabila, funktionsrika och enkla att använda.
Not
En Blazor snabbstartsguide finns i Skapa din första Blazor app.
Komponenter
Blazor appar baseras på komponenter. En komponent i Blazor är ett element i användargränssnittet, till exempel en sida, dialogruta eller ett datainmatningsformulär.
Komponenter är .NET C#-klasser inbyggda i .NET-assembly som:
- Definiera flexibel UI-renderingslogik.
- Hantera användarhändelser.
- Kan kapslas och återanvändas.
- Kan delas och distribueras som Razor klassbibliotek eller NuGet-paket.
Komponentklassen skrivs vanligtvis i form av en Razor markeringssida med ett .razor
filnamnstillägg. Komponenter i Blazor kallas formellt Razor komponenter, informellt som Blazor komponenter.
Razor är en syntax för att kombinera HTML-kod med C#-kod som är utformad för utvecklares produktivitet.
Razor kan du växla mellan HTML-kod och C# i samma fil med IntelliSense programmeringsstöd i Visual Studio.
Blazor använder naturliga HTML-taggar för användargränssnittssammansättning. Följande Razor-markering visar en komponent som ökar en räknare när användaren väljer en knapp.
<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++;
}
}
Komponenter återges i en minnesintern representation av webbläsarens Document Object Model (DOM) som kallas ett renderingsträd, vilket används för att uppdatera användargränssnittet flexibelt och effektivt.
Skapa en fullstackswebbapp med Blazor
Blazor Web Appger en komponentbaserad arkitektur med återgivning på serversidan och fullständig interaktivitet på klientsidan i en enda lösning, där du kan växla mellan återgivningslägen på serversidan och klientsidan och till och med blanda dem på samma sida.
Blazor Web Apps kan snabbt leverera användargränssnittet till webbläsaren genom att statiskt återge HTML-innehåll från servern som svar på begäranden. Sidan läses in snabbt eftersom UI-rendering utförs snabbt på servern utan att du behöver ladda ned ett stort JavaScript-paket. Blazor kan också ytterligare förbättra användarupplevelsen med olika progressiva förbättringar av serverrendering, till exempel förbättrad navigering med formulärposter och strömmande återgivning av asynkront genererat innehåll.
Blazor stöder interaktiv återgivning på serversidan (interaktiv SSR), där gränssnittsinteraktioner hanteras från servern via en realtidsanslutning till webbläsaren. Interaktiv SSR möjliggör en omfattande användarupplevelse som man kan förvänta sig av en klientapp, men utan att behöva skapa API-slutpunkter för att få åtkomst till serverresurser. Sidinnehållet för interaktiva sidor är fördefinierat, där innehåll på servern skapas och skickas till klienten utan att händelsehanterare aktiveras för renderade kontroller. Servern matar ut HTML-användargränssnittet på sidan så snart som möjligt som svar på den första begäran, vilket gör att appen känns mer dynamisk för användarna.
Blazor Web Apphar stöd för interaktivitet med återgivning på klientsidan (CSR) som förlitar sig på en .NET-körtidsmiljö byggd med WebAssembly som du kan ladda ned med din app. När du kör Blazor på WebAssembly kan din .NET-kod komma åt alla funktioner i webbläsaren och interop med JavaScript. .NET-koden körs i webbläsarens säkerhetssandlåda med det skydd som sandbox-miljön ger mot skadliga åtgärder på klientdatorn.
Blazor appar kan helt rikta in sig på att köras på WebAssembly i webbläsaren utan inblandning av en server. För en fristående Blazor WebAssembly appdistribueras tillgångar som statiska filer till en webbserver eller tjänst som kan hantera statiskt innehåll till klienter. När de har laddats ned kan fristående Blazor WebAssembly appar cachelagras och köras offline som en progressiv webbapp (PWA).
Skapa en intern klientapp med Blazor Hybrid
Blazor Hybrid möjliggör användning av Razor komponenter i en intern klientapp med en blandning av interna tekniker och webbtekniker för webb-, mobil- och skrivbordsplattformar. Koden körs internt i .NET-processen och renderar webbgränssnittet till en inbäddad Web View kontroll med hjälp av en lokal interop-kanal. WebAssembly används inte i Hybrid-appar. Hybridappar skapas med .NET Multi-platform App UI (.NET MAUI), som är ett plattformsoberoende ramverk för att skapa interna mobil- och skrivbordsappar med C# och XAML.
Blazor Hybrid stöder Windows Presentation Foundation (WPF) och Windows Forms för att överföra appar från tidigare teknik till .NET MAUI.
Blazor Server
Blazor Server ger stöd för att hantera Razor komponenter på servern i en ASP.NET Core-app. Användargränssnittsuppdateringar hanteras via en SignalR anslutning.
Körningstiden finns kvar på servern och hanterar:
- Kör appens C#-kod.
- Skicka användargränssnittshändelser från webbläsaren till servern.
- Tillämpa uppdateringar av användargränssnittet på en renderad komponent som skickas tillbaka av servern.
Anslutningen som används av Blazor Server för att kommunicera med webbläsaren används också för att hantera JavaScript-interop-anrop.
Blazor Server appar renderar innehåll på ett annat sätt än traditionella modeller för återgivning av användargränssnittet i ASP.NET Core-appar med hjälp av Razor vyer eller Razor Pages. Båda modellerna använder Razor språk för att beskriva HTML-innehåll för rendering, men de skiljer sig avsevärt i hur markering återges.
När en Razor sida eller vy återges genererar varje rad med Razor kod HTML i textformat. Efter renderingen gör servern sig av med sidan eller visningsinstansen, inklusive alla tillstånd som har skapats. När en annan begäran för sidan inträffar omdirigeras hela sidan till HTML igen och skickas till klienten.
Blazor Server skapar ett diagram med komponenter som liknar en HTML- eller XML-DOM. Komponentdiagrammet innehåller tillstånd som finns i egenskaper och fält. Blazor utvärderar komponentdiagrammet för att skapa en binär representation av markering, som skickas till klienten för återgivning. När anslutningen har upprättats mellan klienten och servern ersätts komponentens statiska förrenderade element med interaktiva element. Förinläsning av innehåll på servern för att kunna läsa in HTML-innehåll på klienten gör att appen snabbt känns mer dynamisk för klienten.
När komponenterna är interaktiva på klienten utlöses användargränssnittsuppdateringar av användarinteraktion och apphändelser. När en uppdatering sker återskapas komponentdiagrammet och ett användargränssnitt diff (skillnad) beräknas. Det här diffet är den minsta uppsättningen DOM-redigeringar som krävs för att uppdatera användargränssnittet på klienten. Diffet skickas till klienten i binärt format och tillämpas av webbläsaren.
En komponent tas bort när användaren har navigerat bort från komponenten.
Blazor WebAssembly
Blazor WebAssembly är ett ramverk för enkelsideappar (SPA) för att bygga interaktiva webbappar på klientsidan med .NET.
Att köra .NET-kod inuti webbläsare möjliggörs av WebAssembly (förkortad wasm
). WebAssembly är ett kompakt bytecode-format som är optimerat för snabb nedladdning och maximal körningshastighet. WebAssembly är en öppen webbstandard som stöds i webbläsare utan plugin-program. WebAssembly fungerar i alla moderna webbläsare, inklusive mobila webbläsare.
WebAssembly-kod kan komma åt alla funktioner i webbläsaren via JavaScript, som kallas JavaScript-samverkan, ofta förkortad till JavaScript-interop eller JS interop. .NET-kod som körs via WebAssembly i webbläsaren körs i webbläsarens JavaScript-sandbox-miljö med det skydd som sandbox-miljön ger mot skadliga åtgärder på klientdatorn.
När en Blazor WebAssembly app skapas och körs:
- C#-kodfiler och Razor filer kompileras till .NET-sammansättningar.
- Assembly-filerna och .NET-körningsmiljön laddas ned till webbläsaren.
- Blazor WebAssembly bootstraps .NET WebAssembly-körmiljön och konfigurerar körmiljön för att ladda samlingarna för appen. Körningen använder JavaScript-interop för att hantera DOM-manipulations- och webbläsar-API-anrop.
Storleken på den publicerade appen, dess nyttolaststorlek, är en viktig prestandafaktor för en apps användbarhet. En stor app tar relativt lång tid att ladda ned till en webbläsare, vilket minskar användarupplevelsen. Blazor WebAssembly optimerar nyttolaststorleken för att minska nedladdningstiderna:
- Oanvänd kod tas bort från appen när den publiceras av mellanliggande språk (IL) trimmern.
- HTTP-svar komprimeras.
- Körmiljön för .NET och assemblies cachelagras i webbläsaren.
Blazor Hybrid
Hybridappar använder en blandning av inbyggda tekniker och webbtekniker. En Blazor Hybrid app använder Blazor i en intern klientapp. Razor komponenter körs internt i .NET-processen och återger webbgränssnittet till en inbäddad Web View kontroll med hjälp av en lokal interop-kanal. WebAssembly används inte i Hybrid-appar. Hybridappar omfattar följande tekniker:
- .NET Multi-platform App UI (.NET MAUI): Ett plattformsoberoende ramverk för att skapa interna mobil- och skrivbordsappar med C# och XAML.
- Windows Presentation Foundation (WPF): Ett gränssnittsramverk som är lösningsoberoende och använder en vektorbaserad renderingsmotor som skapats för att dra nytta av modern grafikmaskinvara.
- Windows Forms: Ett gränssnittsramverk som skapar omfattande skrivbordsklientappar för Windows. Utvecklingsplattformen för Windows Forms stöder en bred uppsättning apputvecklingsfunktioner, inklusive kontroller, grafik, databindning och användarindata.
JavaScript-interoperabilitet
För appar som kräver JavaScript-bibliotek från tredje part och åtkomst till webbläsar-API:er samverkar komponenter med JavaScript. Komponenter kan använda alla bibliotek eller API:er som JavaScript kan använda. C#-kod kan anropa JavaScript-kod, och JavaScript-kod kan anropa C#-kod.
Koddelning och .NET Standard
Blazor implementerar .NET Standard, som gör det möjligt för Blazor projekt att referera till bibliotek som överensstämmer med .NET Standard-specifikationer. .NET Standard är en formell specifikation av .NET-API:er som är vanliga i .NET-implementeringar. Klassbibliotek för .NET Standard kan delas mellan olika .NET-plattformar, till exempel Blazor, .NET Framework, .NET Core, .NET Multi-platform App UI (.NET MAUI), Mono och Unity.
API:er som inte är tillämpliga i en webbläsare (till exempel åtkomst till filsystemet, öppning av en socket och trådning) genererar en PlatformNotSupportedException.
Nästa steg
ASP.NET Core