Megosztás a következőn keresztül:


ASP.NET Web Forms és Blazor architektúra összehasonlítása

Jótanács

Ez a tartalom egy részlet az eBookból, Blazor az Azure-hoz készült ASP NET Web Forms Developers számára, amely elérhető a .NET Docs-on vagy egy ingyenesen letölthető PDF-fájlként, amely offline is olvasható.

Blazor-for-ASP-NET-Web-Forms-Developers eBook borító miniatűr.

Bár az ASP.NET Web Forms és Blazor sok hasonló fogalmat tartalmaznak, különbségek vannak a működésükben. Ez a fejezet az ASP.NET Web Forms és Blazor belső működését és architektúráit vizsgálja.

ASP.NET webes űrlapok

A ASP.NET Webes űrlapok keretrendszere lapközpontú architektúrán alapul. Az alkalmazás egy-egy helyére vonatkozó MINDEN HTTP-kérés egy külön lap, amelyre ASP.NET válaszol. Az oldalak kérése során a böngésző tartalma a kért oldal eredményeire cserélődik.

A lapok a következő összetevőkből állnak:

  • HTML-jelölés
  • C# vagy Visual Basic-kód
  • Logikai és eseménykezelési képességeket tartalmazó kód mögötti osztály
  • Vezérlők

A vezérlők a webes felhasználói felület újrafelhasználható egységei, amelyek programozott módon helyezhetők el és kezelhetők a lapon. A lapok olyan fájlokból állnak, amelyek .aspx végződnek, amelyek korrektúrát, vezérlőket és néhány kódot tartalmaznak. A kód mögötti osztályok a használt programozási nyelvtől függően azonos alapnévvel és .aspx.cs vagy .aspx.vb kiterjesztéssel rendelkező fájlokban találhatók. Érdekes, hogy a webkiszolgáló értelmezi a .aspx fájlok tartalmát, és lefordítja őket, amikor módosulnak. Ez az újrafordítás akkor is megtörténik, ha a webkiszolgáló már fut.

A vezérlők jelölőnyelvvel hozhatók létre, és felhasználói vezérlőkként szállíthatók. A felhasználói vezérlők az UserControl osztályból származnak, és az oldalhoz hasonló struktúrával rendelkezik. A felhasználói vezérlők jelölése egy .ascx fájlban van tárolva. A kísérő kód mögötti osztály egy .ascx.cs vagy .ascx.vb fájlban található. A vezérlők teljesen kóddal is felépíthetők, az WebControl vagy a CompositeControl alaposztályból örökölve.

A lapok kiterjedt eseményéletciklust is tartalmaznak. Minden oldal eseményeket hoz létre az inicializálási, betöltési, előrendelői és eltávolítási eseményekhez, amelyek akkor fordulnak elő, amikor a ASP.NET futtatókörnyezet végrehajtja az oldal kódját az egyes kérésekhez.

A lapok vezérlői általában visszatérnek arra az oldalra, amely megadta a vezérlőt, és magukkal viszik egy rejtett űrlapmezőből származó adatcsomagot ViewState. A ViewState mező információkat tartalmaz a vezérlők állapotáról a megjelenítéskor és az oldalon való megjelenítésekor, így a ASP.NET futtatókörnyezet összehasonlíthatja és azonosíthatja a kiszolgálónak küldött tartalom változásait.

Blazor

Blazor egy ügyféloldali webes felhasználói felületi keretrendszer, amely hasonló a JavaScript előtér-keretrendszerekhez, például az Angularhoz vagy a Reacthez. Blazor kezeli a felhasználói interakciókat, és megjeleníti a szükséges felhasználói felületi frissítéseket. Blazor nem egy kérés-válasz modellen alapul. A felhasználói interakciók olyan eseményekként vannak kezelve, amelyek nincsenek egy adott HTTP-kérés kontextusában.

Blazor az alkalmazások egy vagy több, HTML-oldalon renderelt gyökérösszetevőből állnak.

Blazor összetevők HTML-ben

A felhasználó által meghatározott, hogy hol jelenjenek meg az összetevők, és az összetevők hogyan legyenek összekapcsolva a felhasználói interakciókhoz, ez a tárhelymodell sajátosságaitól függ.

Blazor az összetevők .NET-osztályok, amelyek egy újrafelhasználható felhasználói felületet képviselnek. Minden összetevő saját állapotot tart fenn, és saját renderelési logikát határoz meg, amely magában foglalhatja más összetevők renderelését is. Az összetevők eseménykezelőket adnak meg az adott felhasználói interakciókhoz az összetevő állapotának frissítéséhez.

Miután egy összetevő kezel egy eseményt, rendereli az összetevőt, Blazor és nyomon követi, hogy mi változott a renderelt kimenetben. Az összetevők nem jelennek meg közvetlenül a dokumentumobjektum-modellben (DOM). Ehelyett a DOM egy memórián belüli ábrázolására renderelnek, amit RenderTree -nek neveznek, hogy Blazor nyomon tudja követni a változásokat. Blazor Összehasonlítja az újonnan renderelt kimenetet az előző kimenettel egy felhasználói felületi diff kiszámításához, amelyet aztán hatékonyan alkalmaz a DOM-ra.

Blazor DOM-interakció

Az összetevők manuálisan is jelezhetik, hogy renderelni kell őket, ha az állapotuk egy normál felhasználói felületi eseményen kívül változik. Blazor SynchronizationContext a végrehajtás egyetlen logikai szálának kényszerítésére használatos. Egy összetevő életciklus-módszerei és az általa Blazor kiváltott esemény-visszahívások ezen SynchronizationContext lesznek végrehajtva.