Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tips/Råd
Det här innehållet är ett utdrag ur e-boken, Blazor för ASP NET Web Forms Developers for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.
Även om ASP.NET webbformulär och Blazor har många liknande begrepp finns det skillnader i hur de fungerar. I det här kapitlet beskrivs de inre funktionerna och arkitekturerna i ASP.NET Webbformulär och Blazor.
ASP.NET webbformulär
Ramverket ASP.NET Web Forms baseras på en sidcentrerad arkitektur. Varje HTTP-begäran om en plats i appen är en separat sida som ASP.NET svarar på. När sidor begärs ersätts innehållet i webbläsaren med resultatet av den begärda sidan.
Sidorna består av följande komponenter:
- HTML-kod
- C# eller Visual Basic-kod
- En kodbakgrundsklass som innehåller logik- och händelsehanterings-funktioner
- Kontroller
Kontroller är återanvändbara enheter i webbgränssnittet som kan placeras programmatiskt och interageras med på en sida. Sidorna består av filer som slutar med .aspx som innehåller markering, kontroller och viss kod. Kod bakom klasserna finns i filer med samma basnamn och ett .aspx.cs - eller .aspx.vb-tillägg , beroende på vilket programmeringsspråk som används. Intressant nog tolkar webbservern innehållet i .aspx filer och kompilerar dem när de ändras. Den här omkompileringen sker även om webbservern redan körs.
Kontroller kan skapas med markering och levereras som användarkontroller. En användarkontroll härleds från UserControl
klassen och har en liknande struktur som sidan. Markering för användarkontroller lagras i en .ascx-fil . En tillhörande kodbakomklass finns i en .ascx.cs- eller .ascx.vb-fil. Kontroller kan också skapas helt med kod genom att ärva från antingen basklassen WebControl
eller CompositeControl
.
Sidor har också en omfattande händelselivscykel. Varje sida genererar händelser för initiering, inläsning, prerendering och avlastning som inträffar när ASP.NET-körningen exekverar sidans kod för varje begäran.
Kontroller på en sida skickas vanligtvis tillbaka till samma sida som visade kontrollen och bär med sig en nyttolast från ett dolt formulärfält med namnet ViewState
. Fältet ViewState
innehåller information om tillståndet för kontrollerna när de återges och visas på sidan, vilket gör att ASP.NET-körningen kan jämföra och identifiera ändringar i innehållet som skickas till servern.
Blazor
Blazor är ett webbgränssnittsramverk på klientsidan som liknar JavaScript-ramverk på klientsidan som Angular eller React. Blazor hanterar användarinteraktioner och återger nödvändiga uppdateringar av användargränssnittet. Blazor baseras inte på en modell för begärandesvar. Användarinteraktioner hanteras som händelser som inte finns i kontexten för en viss HTTP-begäran.
Blazor appar består av en eller flera rotkomponenter som återges på en HTML-sida.
Hur användaren specificerar var komponenter ska återges och hur de sedan kopplas för interaktion med användaren beror på värdmodellen.
Blazor komponenter är .NET-klasser som representerar en återanvändbar del av användargränssnittet. Varje komponent upprätthåller sitt eget tillstånd och anger sin egen återgivningslogik, som kan omfatta återgivning av andra komponenter. Komponenter anger händelsehanterare för specifika användarinteraktioner för att uppdatera komponentens tillstånd.
När en komponent har hanterat en händelse Blazor renderar komponenten och håller reda på vad som har ändrats i de renderade utdata. Komponenter återges inte direkt till dokumentobjektmodellen (DOM). De renderas i stället till en minnesintern representation av DOM som kallas RenderTree
så att Blazor kan spåra ändringarna.
Blazor jämför de nyligen renderade utdata med föregående utdata för att beräkna ett gränssnitts-diff som sedan tillämpas effektivt på DOM.
Komponenter kan också manuellt ange att de ska återges om deras tillstånd ändras utanför en normal användargränssnittshändelse.
Blazor använder en SynchronizationContext
för att säkerställa en enda logisk exekveringstråd. En komponents livscykelmetoder och eventuella händelseåteranrop som genereras av Blazor körs på den här SynchronizationContext
.