Vad är Microsofts Blazor Web Framework och ska du använda det?

0
300

Blazor är ett nytt webbramverk från Microsoft utformat för att konkurrera med branschledande plattformar som React. Förutom att den i stället för att använda JavaScript körs på .NET runtime och tillåter utvecklare att göra interaktiva webbappar med C# och HTML.

Vad är ASP .NET även?

Om du kommer från en värld av JavaScript -ramverk kan du vara förvirrad över Blazors förhållande till ASP.NET. De är båda “ webbramar, ” men Blazor är bara en del av ASP.NET -ekosystemet.

Medan ASP.NET -plattformen är nästan 20 år gammal vid denna tidpunkt, är det inte en dinosaurramverk — det har konsekvent förbättrats tillsammans med C#och .NET som helhet, eftersom Microsoft använder det internt. Det är helt plattformsoberoende och lika effektivt som någonsin.

I början fanns det bara ASP.NET, som kan användas för att göra alla möjliga webbapplikationer. Det fanns ASP.NET MVC (Model-View-Controller), som skapar datadrivna webbsidor och ASP.NET WebAPI, som specialiserat sig på backend-API: er. Dessa slogs nyligen samman till ett enhetligt paket med den moderniserade ASP.NET Core.

För fem år sedan släpptes Razor Pages (som är en separat sak från Blazor och förvirrande namngiven) för att förenkla den uttrycksfulla syntaxen för MVC, som kräver mycket kokplatta och som sådan inte spelar bra med komponenten- fokuserad design av moderna applikationer. MVC kräver att du gör en vy och modell för varje sida i separata filer:

Annons

Samtidigt kan du med Razor göra mer strömlinjeformade sidor eller komponenter med integrerad kod på själva sidan. Detta fungerar bättre när sidorna är enklare, men båda är tillgängliga som alternativ för dig att använda.

Alla dessa funktioner är en del av “ ASP.NET ” ekosystem. Den stora delen om det är paketen och supporten. Ungefär som NPM för JavaScript har C# också en sund paketmiljö med NuGet-pakethanteraren.

Så vad är Blazor?

Blazor ändrar ingenting om syntaxen för dessa sidor. Du kommer fortfarande att använda rakbladssidor och/eller MVC. Det här är faktiskt inte ens en dålig sak, eftersom det redan finns många användargränssnitt och komponentbibliotek för C#-backade rakbladssidor.

Vad Blazor tillägger är interaktivitet. Traditionella MVC/Razor-sidor som använder ASP.NET har alltid varit klumpiga och har kämpat för att hänga med i realtid webbapplikationer som React. Webbappar i realtid är så snabba att de också börjar ta över skrivbordet, med ramar som elektron som kör appar i en Chromium-behållare, utan att användarna är klokare.

Så, Blazor skapades för att möta denna efterfrågan. Det fungerar ungefär som React, där åtgärder ändrar tillstånd och rekvisita och utlöser uppdateringar av appen. Ramverket hanterar uppdatering av DOM för dig baserat på vilka komponenter som behöver uppdateras. Detta möjliggör realtidsapplikationer där sidan kan uppdateras eller till och med helt ritas om utan att behöva uppdatera webbläsaren.

Fördelen med Blazor framför ett etablerat ramverk som React är språket. Det låter dig bygga webbappar med C#, och det ensam gör det lockande för många utvecklare. Oavsett vilken åsikt du kan ha om den dynamiska kontra statiska skrivdebatten, finns det definitivt fördelar med “ desktop ” språk som C#, och webben saknas allvarligt i alternativ till JavaScript.

Annonsering

Om du har en backend som kräver hög prestanda, kommer C# också att köra mycket snabbare än JavaScript. Även om JS på intet sätt är långsam och har förbättrats mycket under åren, kommer det fortfarande att bli mindre presterande än C#, vilket faktiskt går ganska nära inbyggda C ++ -prestanda.

Blazor möjliggör bättre driftskompatibilitet. Många appar använder också redan C# på backend. Du kan till exempel ha ett ASP.NET API som interagerar med din React -frontend. Du behöver separata modeller för servern och klientsidan samt separat kod för att interagera med dem. Om de är samma språk kan du enkelt dela kod och bibliotek mellan klient och server. Detta är hela anledningen till att NodeJS finns på serversidan — även om JavaScript inte är det perfekta skrivbordsspråket, eftersom appar som är inbyggda på ett språk minskar utvecklingstiden.

Blazors framtid

Det finns faktiskt några olika typer av Blazor, eftersom Microsoft nyligen har gjort ett stort utvecklingsarbete för att modernisera ASP.NET -ekosystemet. För närvarande finns det två versioner som har släppts:

  • Blazor Server , som fungerar som React Server Side Rendering och gör det mesta av bearbetningen på servern.
  • Blazor WebAssemble , som använder magin i WebAssemble för att köra verklig .NET -kod i en verklig klientwebbläsare.

Microsoft planerar också att släppa ytterligare tre versioner av Blazor, som fortfarande är under utveckling och tillgängliga för förhandsgranskning:

  • Blazor PWA , som är utformad för att publicera webbplatsen som en installerbar Progressive Web App (PWA).
  • Blazor Desktop/Hybrid , som gör att Blazor -appar kan packas i stationära appar och är i princip som Electron men med bättre prestanda.
  • Blazor Native, som ersätter det webbaserade användargränssnittet med ett plattformsnära gränssnitt. Det är inte klart hur användbart detta är förutom interop med befintliga Blazor -verktyg, och den här versionen är fortfarande i planeringsfaserna.

I sitt meddelande för Blazor Desktop uppgav Microsoft att “ Blazor är en applikationsprogrammeringsmodell. Det är mycket anpassningsbart och kan köras på flera sätt (beroende på behov). ”

Microsoft verkar tänka på Blazor som deras nästa standard för att göra applikationsfront. Deras arbete är väl värt det också, för i takt med att applikationer blir mer och mer webbberoende är det svårare att motivera att skapa separata frontends för webb och skrivbord. Blazor har en ljus framtid, och webbapplikationer som görs idag på Blazor Server och WebAssemble kommer att ha mycket utrymme att växa.

Blazor Server vs. Blazor WebAssemble

Blazor Server använder en SignalR -anslutning för att kommunicera mellan klienten och servern. Detta är bara ett fint lager ovanpå en WebSocket -anslutning, som valfritt kan falla tillbaka till andra anslutningar vid behov. Detta behåller all behandling på servern och lämnar klienten som en enkel vy med ett grundläggande sätt att manipulera DOM.

Annonsering

Blazor WebAssemble är där det blir seriöst coolt. WebAssemble (WASM) är egentligen inte ett språk som du skriver på, utan ett kompilatormål. Det fungerar faktiskt nästan precis som Microsoft Intermediary Language (MSIL) som alla C#, F#och VB.NET kompilerar till. Förutom att det, istället för att köra med en .NET -körning, körs med WebAssemble -körtiden i webbläsaren.

Det häftiga med WebAssemble är att det är ett relativt enkelt kompilermål att träffa. Ungefär som hur C# kan kompilera ner till MSIL, kan C# också kompilera till WebAssemble. Tekniskt sett är det MSIL -kompilering till WebAssemble (eftersom det är enklare), men poängen är densamma.

Vilket språk som helst kan kompilera till WASM, även helt inbyggda skrivbordsspråk som C ++. Detta är inte teoretiskt ’ det fungerar faktiskt i praktiken. AutoDesk kunde överföra AutoCAD, en 30-årig C ++-kodbas till en WebAssemble-baserad webbapp på några månader med relativt enkelhet. Någon överförde till och med Doom 3.

Blazor WebAssemble tar i princip hela servern och .NET -körtiden och kör den ovanpå WASM. Sedan, istället för att prata med servern via SignalR, pratar den direkt med DOM. Detta avbryter bearbetningen på serversidan, vilket kan vara perfekt för vissa appar.

Detta gör det unikt positionerat för att konkurrera med ramverk som React, eftersom det i huvudsak är den första sanna konkurrenten till JavaScript för klientwebbapplikationer. Medan du måste lägga till några skriptkoder för att ladda körtiden och kanske måste doppa tårna i JavaScript -kod för några saker, bör du för det mesta kunna skapa en hel produktionswebbapp utan att skriva en enda rad av JavaScript.

Annonsering

Om du använder Blazor Server eller Blazor WebAssemble är upp till dig. De har båda sina fördelar. Blazor Server kör all behandlingskod i en pålitlig miljö och kräver inte att du har ett offentligt API. Blazor WASM är lyhörd och snabb och kan till och med distribueras som en statisk webbplats med bara NGINX.

Hur fungerar Blazor med JavaScript?

I båda fallen har du faktiskt full JavaScript -kompatibilitet. Blazor kan anropa JS -funktioner från hanterad kod:

private async Task ConvertArray () {text = new (invänta JS.InvokeAsync & lt; string & gt; (“convertArray”, quoteArray)); }

Och vice versa:

DotNet.invokeMethodAsync ('{ASSEMBLY NAME}', '{.NET METHOD ID}', {ARGUMENTS});

Tänk dock på att detta naturligtvis kommer att använda reflektion, och det är verkligen inte det mest presterande i världen.

Du kan tekniskt använda alla NPM -paket med Blazor, även om det kan vara lite huvudvärk att ställa in det och interagera med det från .NET -sidan, så du bör föredra ett NuGet -paket för det mesta.

Kan du använda Blazor på skrivbordet (elektron)?

Överraskande nog är svaret på detta ja. Medan Microsoft planerar att släppa Blazor Desktop/Hybrid, som gör samma sak, kan du faktiskt bara använda normal elektron. Detta beror på att Electron verkligen inte bryr sig om vilken webbsida den serverar och bara kan betjäna en Blazor -app.

Du kanske tror att den skulle använda en Blazor WebAssemble -app, men det är faktiskt lättare att bara lägga till Electron till en befintlig ASP.NET Core -server. WASM har viss kostnad, så denna metod är snabbare. Det är vad Electron.NET gör, och det fungerar förvånansvärt bra. Allt du behöver göra är att installera det och lägga till Electron som en ASP.NET -tjänst. Du kan också ringa till elektroniska funktioner från C#.

Annonsering

Microsoft har dock större planer för Blazor Desktop. De planerar att helt bli av med beroendet av en webbläsare och JavaScript och bara köra en inbyggd behållare med en webbvy som är .NET hela vägen ner.

“ Blazor desktop will vara strukturerad på samma sätt som Electron fungerar. Det kommer att finnas en WebView -kontroll som återger innehåll från en inbäddad Blazor -webbserver, som kan betjäna både Blazor och annat webbinnehåll (JavaScript, CSS, etc.). ”

Detta webbvy skulle använda Safari, WebKitGTK eller WebView2, beroende på operativsystem. WebView2 använder Chromium under huven, så det skulle fungera mycket som Electron, förutom att det är mer presterande och använder mindre minne.

Vad implementeringen än blir blir det spännande att se en annan plattform konkurrerar med JavaScript och Electron för att bygga plattformsoberoende webb- och stationära appar. Blazor Desktop ska släppas i november 2021 med .NET 6: s första förhandsgranskning.