Delen via


ASP.NET Core Blazor

Notitie

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Waarschuwing

Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Belangrijk

Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.

Zie de .NET 9-versie van dit artikelvoor de huidige release.

Welkom bij Blazor!

Blazor is een .NET- front-endwebframework dat ondersteuning biedt voor zowel rendering aan serverzijde als client-interactiviteit in één programmeermodel:

Blazor is een framework voor het bouwen van interactieve webgebruikersinterface aan de clientzijde met .NET-:

  • Maak uitgebreide interactieve gebruikersinterfaces met behulp van C#.
  • Server- en clientzijde applicatielogica in .NET delen.
  • Geef de gebruikersinterface weer als HTML en CSS voor brede browserondersteuning, inclusief mobiele browsers.
  • Hybride desktop- en mobiele apps bouwen met .NET en Blazor.
  • Maak uitgebreide interactieve gebruikersinterfaces met behulp van C#.
  • Deel logica voor de serverzijde en de clientzijde die zijn geschreven in .NET.
  • Geef de gebruikersinterface weer als HTML en CSS voor brede browserondersteuning, inclusief mobiele browsers.

Het gebruik van .NET voor webontwikkeling aan de clientzijde biedt de volgende voordelen:

  • Schrijf code in C#, waardoor de productiviteit in app-ontwikkeling en -onderhoud kan worden verbeterd.
  • Maak gebruik van het bestaande .NET-ecosysteem van .NET-bibliotheken.
  • Profiteer van de prestaties, betrouwbaarheid en beveiliging van .NET.
  • Blijf productief in Windows, Linux of macOS met een ontwikkelomgeving, zoals Visual Studio of Visual Studio Code. Integreer met moderne hostingplatforms, zoals Docker-.
  • Bouw voort op een algemene set talen, frameworks en hulpprogramma's die stabiel, uitgebreid en gebruiksvriendelijk zijn.

Notitie

Zie Bouw uw eerste Blazor-appvoor een snelstart zelfstudie Blazor.

Onderdelen

Blazor apps zijn gebaseerd op onderdelen. Een onderdeel in Blazor is een element van de gebruikersinterface, zoals een pagina, dialoogvenster of gegevensinvoerformulier.

Onderdelen zijn .NET C#-klassen die zijn ingebouwd in .NET-assembly's die:

De onderdeelklasse wordt meestal geschreven in de vorm van een Razor opmaakpagina met een .razor bestandsextensie. Onderdelen in Blazor worden formeel aangeduid als Razor onderdelen, informeel als Blazor onderdelen. Razor is een syntaxis voor het combineren van HTML-markeringen met C#-code die is ontworpen voor de productiviteit van ontwikkelaars. Razor kunt u schakelen tussen HTML-markup en C# in hetzelfde document met IntelliSense programmaondersteuning in Visual Studio.

Blazor maakt gebruik van natuurlijke HTML-tags voor de samenstelling van de gebruikersinterface. In de volgende Razor markering wordt een onderdeel gedemonstreert waarmee een teller wordt verhoogd wanneer de gebruiker een knop selecteert.

<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++;
    }
}

Onderdelen worden weergegeven in een in-memory weergave van de DOM (Document Object Model) van de browser een weergavestructuurgenoemd, die wordt gebruikt om de gebruikersinterface op een flexibele en efficiënte manier bij te werken.

Een volledige stack-web-app bouwen met Blazor

Blazor Web Appbieden een architectuur op basis van onderdelen met rendering aan serverzijde en volledige interactiviteit aan de clientzijde in één oplossing, waar u kunt schakelen tussen renderingmodi aan de serverzijde en clientzijde en zelfs op dezelfde pagina kunt combineren.

Blazor Web Apps kan de gebruikersinterface snel aan de browser leveren door html-inhoud van de server statisch weer te geven als reactie op aanvragen. De pagina wordt snel geladen omdat ui-rendering snel wordt uitgevoerd op de server zonder dat u een grote JavaScript-bundel hoeft te downloaden. Blazor kan ook de gebruikerservaring verder verbeteren met verschillende progressieve verbeteringen in serverweergave, zoals verbeterde navigatie met formulierberichten en streamingweergave van asynchroon gegenereerde inhoud.

Blazor ondersteunt interactieve server-side rendering (interactieve SSR), waarbij interacties van de gebruikersinterface worden verwerkt vanaf de server via een realtime verbinding met de browser. Interactieve SSR maakt een uitgebreide gebruikerservaring mogelijk, zoals u zou verwachten van een client-app, maar zonder dat u API-eindpunten hoeft te maken voor toegang tot serverresources. Pagina-inhoud voor interactieve pagina's wordt vooraf gegenereerd, waarbij inhoud op de server in eerste instantie wordt gegenereerd en naar de client wordt verzonden zonder gebeurtenis-handlers in te schakelen voor gerenderde besturingselementen. De server voert de HTML-gebruikersinterface van de pagina zo snel mogelijk uit als reactie op de eerste aanvraag, waardoor de app sneller reageert op gebruikers.

Blazor Web Appbiedt ondersteuning voor interactiviteit met CSR (Client Side Rendering) die afhankelijk is van een .NET-runtime die is gebouwd met WebAssembly- die u met uw app kunt downloaden. Wanneer u Blazor uitvoert op WebAssembly, heeft uw .NET-code toegang tot de volledige functionaliteit van de browser en interop met JavaScript. Uw .NET-code wordt uitgevoerd in de beveiligings sandbox van de browser met de beveiligingen die de sandbox biedt tegen schadelijke acties op de clientcomputer.

Blazor apps kunnen volledig gericht zijn op uitvoering op WebAssembly in de browser zonder de betrokkenheid van een server. Voor een zelfstandige Blazor WebAssembly-app-worden assets geïmplementeerd als statische bestanden op een webserver of service die statische inhoud aan clients kan leveren. Na het downloaden kunnen zelfstandige Blazor WebAssembly apps in de cache worden opgeslagen en offline worden uitgevoerd als een Progressive Web App (PWA).

Een systeemeigen client-app bouwen met Blazor Hybrid

Blazor Hybrid maakt het gebruik van Razor onderdelen in een systeemeigen client-app mogelijk met een combinatie van systeemeigen en webtechnologieën voor web-, mobiele en desktopplatforms. Code wordt native uitgevoerd in het .NET-proces en rendert web-UI op een ingesloten Web View-besturingselement met behulp van een lokaal interopkanaal. WebAssembly wordt niet gebruikt in hybride apps. Hybride apps zijn gebouwd met .NET Multi-platform App UI (.NET MAUI), een platformoverschrijdend framework voor het maken van systeemeigen mobiele apps en desktop-apps met C# en XAML.

De Blazor Hybrid ondersteunt WPF- (Windows Presentation Foundation) en Windows Forms om apps van eerdere technologie over te schakelen naar .NET MAUI.

Blazor Server

Blazor Server biedt ondersteuning voor het hosten van Razor onderdelen op de server in een ASP.NET Core-app. UI-updates worden verwerkt via een SignalR verbinding.

De runtime blijft op de server en verwerkt:

  • De C#-code van de app uitvoeren.
  • Ui-gebeurtenissen verzenden vanuit de browser naar de server.
  • Ui-updates toepassen op een gerenderd onderdeel dat door de server wordt teruggestuurd.

De verbinding die wordt gebruikt door Blazor Server om met de browser te communiceren, wordt ook gebruikt voor het afhandelen van JavaScript-interopaanroepen.

Blazor Server voert .NET-code uit op de server en communiceert met het documentobjectmodel op de client via een SignalR verbinding

Blazor Server-apps renderen inhoud anders dan traditionele modellen voor UI-weergave in ASP.NET Core apps, gebruikmakend van Razor-weergaven of Razor-pagina's. Beide modellen gebruiken de Razor taal om HTML-inhoud voor rendering te beschrijven, maar ze verschillen aanzienlijk in hoe opmaak wordt weergegeven.

Wanneer een Razor pagina of weergave wordt weergegeven, verzendt elke regel Razor code HTML in tekstvorm. Nadat de server de pagina of weergave heeft gerenderd, wordt de instantie verwijderd, inclusief alle toestanden die zijn geproduceerd. Wanneer er nog een aanvraag voor de pagina optreedt, wordt de hele pagina opnieuw naar HTML verzonden en naar de client verzonden.

Blazor Server produceert een grafiek met onderdelen die vergelijkbaar zijn met een HTML- of XML-DOM. De onderdeelgrafiek bevat de status die is opgeslagen in eigenschappen en velden. Blazor evalueert de onderdeelgrafiek om een binaire weergave van de markeringen te produceren, die naar de client wordt verzonden voor rendering. Nadat de verbinding tussen de client en de server is gemaakt, worden de statische voorgerendeerde elementen van het onderdeel vervangen door interactieve elementen. Het vooraf genereren van inhoud op de server om HTML-inhoud op de client te laden, zorgt ervoor dat de app sneller reageert op de client.

Nadat de onderdelen interactief zijn op de client, worden ui-updates geactiveerd door gebruikersinteractie en app-gebeurtenissen. Wanneer er een update plaatsvindt, wordt de onderdeelgrafiek aangepast en wordt een UI-diff (verschil) berekend. Deze diff is de kleinste set DOM-bewerkingen die nodig zijn om de gebruikersinterface op de client bij te werken. De diff wordt verzonden naar de client in een binaire indeling en toegepast door de browser.

Een onderdeel wordt verwijderd nadat de gebruiker het onderdeel verlaat.

Blazor WebAssembly

Blazor WebAssembly is een SPA-framework (Single Page App) voor het bouwen van interactieve webapps aan de client-kant met .NET.

Het uitvoeren van .NET-code in webbrowsers wordt mogelijk gemaakt door WebAssembly- (afgekort wasm). WebAssembly is een compacte bytecode-indeling die is geoptimaliseerd voor snelle download- en maximale uitvoeringssnelheid. WebAssembly is een open webstandaard en wordt ondersteund in webbrowsers zonder invoegtoepassingen. WebAssembly werkt in alle moderne webbrowsers, met inbegrip van mobiele browsers.

WebAssembly-code heeft toegang tot de volledige functionaliteit van de browser via JavaScript, JavaScript-interoperabiliteitgenoemd, vaak ingekort tot JavaScript-interop- of JS interop-. .NET-code uitgevoerd via WebAssembly in de browser wordt uitgevoerd in de JavaScript-sandbox van de browser met de beveiligingen die de sandbox biedt tegen schadelijke acties op de clientcomputer.

Blazor WebAssembly voert .NET-code uit in de browser met WebAssembly.

Wanneer een Blazor WebAssembly-app is gebouwd en uitgevoerd:

  • C#-codebestanden en Razor-bestanden worden gecompileerd in .NET-assembly's.
  • De assembly's en de .NET Runtime- worden gedownload naar de browser.
  • Blazor WebAssembly bootstrapt de .NET WebAssembly-runtime en configureert de runtime om de assembly's voor de app te laden. De runtime maakt gebruik van JavaScript-interop voor het verwerken van DOM-manipulatie en browser-API-aanroepen.

De grootte van de gepubliceerde app, de nettoladingsgrootte, is een kritieke prestatiefactor voor de bruikbaarheid van een app. Het downloaden van een grote app naar een browser duurt relatief lang, wat de gebruikerservaring vermindert. Blazor WebAssembly optimaliseert de nettoladinggrootte om de downloadtijden te verminderen:

  • Ongebruikte code wordt uit de app verwijderd wanneer deze wordt gepubliceerd door de Intermediate Language (IL) Trimmer.
  • HTTP-antwoorden worden gecomprimeerd.
  • De .NET-runtime en assembly's worden in de cache opgeslagen in de browser.

Blazor Hybrid

Hybride apps maken gebruik van een combinatie van systeemeigen technologieën en webtechnologieën. Een Blazor Hybrid-app maakt gebruik van Blazor in een systeemeigen client-app. Razor-onderdelen worden systeemeigen uitgevoerd in het .NET-proces en geven een webgebruikersinterface weer naar een ingesloten Web View-control via een lokaal interop-kanaal. WebAssembly wordt niet gebruikt in hybride apps. Hybride apps omvatten de volgende technologieën:

  • .NET Multi-platform App UI (.NET MAUI): een platformoverschrijdend framework voor het maken van systeemeigen mobiele en desktop-apps met C# en XAML.
  • WPF (Windows Presentation Foundation): een UI-framework dat oplossingsonafhankelijk is en gebruikmaakt van een vectorgebaseerde renderingengine die is gebouwd om te profiteren van moderne grafische hardware.
  • Windows Forms: een UI-framework waarmee uitgebreide bureaubladclient-apps voor Windows worden gemaakt. Het Ontwikkelplatform van Windows Forms biedt ondersteuning voor een breed scala aan functies voor app-ontwikkeling, waaronder besturingselementen, afbeeldingen, gegevensbinding en gebruikersinvoer.

JavaScript-interoperabiliteit

Voor apps waarvoor JavaScript-bibliotheken van derden en toegang tot browser-API's zijn vereist, werken onderdelen met JavaScript. Onderdelen kunnen elke bibliotheek of API gebruiken die JavaScript kan gebruiken. C#-code kan JavaScript-codeaanroepen en JavaScript-code kan C#-codeaanroepen.

Code delen en .NET Standard

Blazor implementeert de .NET Standard-, waarmee Blazor projecten kunnen verwijzen naar bibliotheken die voldoen aan de specificaties van .NET Standard. .NET Standard is een formele specificatie van .NET API's die gebruikelijk zijn voor .NET-implementaties. .NET Standard-klassebibliotheken kunnen worden gedeeld op verschillende .NET-platforms, zoals Blazor, .NET Framework, .NET Core, .NET Multi-platform App UI (.NET MAUI), Mono en Unity.

API's die niet van toepassing zijn in een webbrowser (bijvoorbeeld toegang tot het bestandssysteem, het openen van een socket en threading) genereren een PlatformNotSupportedException.

Volgende stappen