Delen via


Architectuurvergelijking van ASP.NET webformulieren en Blazor

Tip

Deze inhoud is een fragment uit het eBook, Blazor voor ASP NET-webformulierontwikkelaars voor Azure, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

Hoewel ASP.NET webformulieren en Blazor veel vergelijkbare concepten hebben, zijn er verschillen in hoe ze werken. In dit hoofdstuk worden de interne werkingen en architecturen van ASP.NET Web Forms en Blazor.

ASP.NET Web Forms

Het ASP.NET Web Forms-framework is gebaseerd op een paginagerichte architectuur. Elke HTTP-aanvraag voor een locatie in de app is een afzonderlijke pagina waarmee ASP.NET reageert. Wanneer pagina's worden aangevraagd, wordt de inhoud van de browser vervangen door de resultaten van de aangevraagde pagina.

Pagina's bestaan uit de volgende onderdelen:

  • HTML-opmaak
  • C# of Visual Basic-code
  • Een code-behind-klasse met logica- en gebeurtenisafhandelingsmogelijkheden
  • Besturingselementen

Besturingselementen zijn herbruikbare eenheden van de webgebruikersinterface die programmatisch kunnen worden geplaatst en ermee kunnen worden gecommuniceerd op een pagina. Pagina's bestaan uit bestanden die eindigen op .aspx met markeringen, besturingselementen en code. De code-behind-klassen bevinden zich in bestanden met dezelfde basisnaam en een .aspx.cs of .aspx.vb-extensie , afhankelijk van de gebruikte programmeertaal. Interessant is dat de webserver de inhoud van de .aspx bestanden interpreteert en compileert wanneer ze veranderen. Deze hercompilatie vindt plaats, zelfs als de webserver al wordt uitgevoerd.

Besturingselementen kunnen worden gebouwd met markeringen en worden geleverd als gebruikersbesturingselementen. Een gebruikersbeheer is afgeleid van de UserControl klasse en heeft een vergelijkbare structuur als de pagina. Markeringen voor gebruikersbesturingselementen worden opgeslagen in een ASCX-bestand . Een bijbehorende code-behind-klasse bevindt zich in een .ascx.cs- of .ascx.vb-bestand. Besturingselementen kunnen ook volledig worden gebouwd met code, door ze over te nemen van de WebControl of CompositeControl basisklasse.

Pagina's hebben ook een uitgebreide levenscyclus van gebeurtenissen. Elke pagina genereert gebeurtenissen voor de initialisatie, belasting, prerender en het verwijderen van gebeurtenissen die optreden wanneer de ASP.NET runtime de code van de pagina voor elke aanvraag uitvoert.

Besturingselementen op een pagina plaatsen meestal terug naar dezelfde pagina die het besturingselement heeft gepresenteerd, en dragen samen met hen een nettolading uit een verborgen formulierveld met de naam ViewState. Het ViewState veld bevat informatie over de status van de besturingselementen op het moment dat ze worden weergegeven en weergegeven op de pagina, zodat de ASP.NET runtime wijzigingen in de inhoud die naar de server is verzonden, kan vergelijken en identificeren.

Blazor

Blazor is een web-UI-framework aan de clientzijde dat vergelijkbaar is met JavaScript-front-endframeworks zoals Angular of React. Blazor verwerkt gebruikersinteracties en geeft de benodigde UI-updates weer. Blazoris niet gebaseerd op een aanvraag-antwoordmodel. Gebruikersinteracties worden verwerkt als gebeurtenissen die zich niet in de context van een bepaalde HTTP-aanvraag bevinden.

Blazor apps bestaan uit een of meer hoofdonderdelen die worden weergegeven op een HTML-pagina.

Blazor components in HTML

Hoe de gebruiker specificeert waar onderdelen moeten worden weergegeven en hoe de onderdelen vervolgens worden bekabeld voor gebruikersinteracties die specifiek zijn voor het hostmodel .

Blazoronderdelen zijn .NET-klassen die een herbruikbaar deel van de gebruikersinterface vertegenwoordigen. Elk onderdeel onderhoudt zijn eigen status en specificeert zijn eigen renderinglogica, die andere onderdelen kan bevatten. Onderdelen geven gebeurtenis-handlers op voor specifieke gebruikersinteracties om de status van het onderdeel bij te werken.

Nadat een onderdeel een gebeurtenis heeft verwerkt, Blazor wordt het onderdeel weergegeven en wordt bijgehouden wat er is gewijzigd in de gerenderde uitvoer. Onderdelen worden niet rechtstreeks weergegeven in het Document Object Model (DOM). Ze worden in plaats daarvan weergegeven in een in-memory weergave van de DOM, een RenderTree zogenaamde zodat Blazor de wijzigingen kunnen worden bijgehouden. Blazor vergelijkt de zojuist gerenderde uitvoer met de vorige uitvoer om een ui-diffing te berekenen die vervolgens efficiënt wordt toegepast op de DOM.

Blazor DOM interaction

Onderdelen kunnen ook handmatig aangeven dat ze moeten worden weergegeven als hun status buiten een normale UI-gebeurtenis verandert. Blazor maakt gebruik van een SynchronizationContext om één logische thread van uitvoering af te dwingen. De levenscyclusmethoden van een onderdeel en eventuele callbacks van gebeurtenissen die worden gegenereerd Blazor , worden op deze SynchronizationContextmanier uitgevoerd.