Kako da pokrenete .Net aplikacije u pretraživaču sa Blazor-om

Microsoftov eksperiment Blazor koristi savremene veb tehnologije kao što je WebAssembly tako što postavlja izvršno okruženje za .Net unutar vašeg pretraživača. Svi se sećamo Silverlighta, Microsoftovog odgovora na Adobe Flash. Poslednji trag ambicioznog plana da se .Net kôd izvršava svuda, kombinovao je poznate C# i XAML sa pretraživačima. Rezultat je bilo veb iskustvo bogatije i interaktivnije od poznatih oblika sa CSS-om. Koliko god da su dodaci korisni, postalo je jasno da je površina izložena napadima postala mnogo veća. Flash i ActiveX eksperimenti postali su ozbiljan bezbednosni rizik, a dizajneri i programeri su počeli da se povlače iz sveta dodatnih programa. Nova generacija moćnijih pretraživača pomogla je tranziciji, zajedno sa otvaranjem odgovarajućeg novog fronta u neverovatnim ratovima pretraživača: benčmarkovima performansi pretraživača. Novi JavaScript motori poput Internet Explorer-ovog (i sada Edge-ovog) Chakra pojavili su se zajedno sa JIT kompajlerima koji koriste nove mogućnosti procesora i uskoro konkurentskog binarnog koda. Pored boljih performansi, i sam Veb je dodao više mogućnosti, sa novim JavaScript-om HTML5 i CSS konstruktima koji brzo pružaju alternativu sada zastarelim tehnologijama programskih dodataka, od 2D animacija do virtuelne stvarnosti.

Umesto programskih dodataka (engl. plug-in), sada koristimo ekstenzije. One su bezbednije, ali nemaju brzinu ni mogućnosti programskih dodataka kao što je Silverlight. Zbog toga što se oslanjaju na JavaScript, HTML i CSS, oni pružaju besprekornu integraciju sa pretraživačem. Ali oni ne dozvoljavaju da koristimo napredne jezičke funkcije u C# ili Go ili novije hardverske mogućnosti grafike.

WebAssembly je snaga iza Blazora

Google-ovi eksperimenti sa NaCl-om, njegovim matičnim klijentom iz Chrome-a, pored Mozillinog rada sa ASM.js-om, doveli su do razvoja WebAssembly u World Wide Web konzorcijumu, takozvani Wasm. U srcu WebAssemblyja je jednostavna virtuelna mašina koja može da radi sa prekompajliranim kodom koji se isporučuje u kompaktnom binarnom obliku. Iako WebAssembly kôd nije čitak za ljude, specifikacija uključuje način predstavljanja koji izgleda vrlo slično klasičnom asemblerskom jeziku.

Svaki kompajler može da obezbedi WebAssembly kôd, sa bilo kog jezika, i može da se izvršava gotovo isto tako brzo kao kompajlirani binarni kôd. Postoji i dodatna prednost, što izvršava samo provereni kôd u izolovanom okruženju (engl. sandbox) u pretraživaču. Sa dodatnim bezbednosnim funkcijama modernog pretraživača kao što je Edge, rezultat je vrlo bezbedan kôd koji ima samo ograničen pristup sistemskim resursima. To čini WebAssembly atraktivnom alternativom JavaScript-u, jer ugošćava brze korisničke interfejse sa dobrim odzivom zasnovane na vebu.

Iako je još uvek relativno nov, WebAssembly je iznenađujuće moćan alat, sa podrškom za širok spektar jezika i platformi. Rezultat je efikasna zamena za stari model dodatnih programa za proširenje pretraživača, koja održava bezbedno izolovano okruženje, ali ipak omogućava složene aplikacije.

Microsoft već neko vreme eksperimentiše sa WebAssembly-om, a Edge pruža podršku za WebAssembly alate. To je dovelo do eksperimentalnog izdanja Blazora, novog veb radnog okvira iz ASP.Net tima. Ime mu potiče od kombinacije Microsoftove sintakse veb aplikacija i pretraživača Razor, dostupna je od GitHub-a sa primerima aplikacija koje već postoje na vebu.

Namenjen za podršku jednostraničnih veb aplikacija, poput onih proizvedenih u postojećem okruženju Razor ASP.Net-a, Blazor dovodi C# kod direktno u pretraživač pomoću .Net motora baziranog na Mono-u koji je implementiran u WebAssembly. Ovim pristupom se postiže iskustvo veb korisnika kompatibilno sa postojećim stonim aplikacijama, smanjuje spoznajno opterećenje koje je potrebno prilikom prelaska između aplikacija za stoni računar i pretraživača, a baze kodova ostaju jednostavnije i lakše za upravljanje.

Šta je potrebno za početak rada sa Blazor-om

Gradnja Blazor aplikacije je sasvim jednostavna. Potreban vam je .Net Core 2.1 Preview 2 SDK, Visual Studio 2017 15.7 ili noviji sa instaliranim alatima ASP.Net i ekstenzijom Blazor Language Services (naći ćete ga u Visual Studio Marketplace-u). Kada to instalirate, aplikacije se prave iz Blazor šablona koji ćete pronaći među šablonima Visual Studija 2017, ASP.Net Core Web Application. Jedno što treba napomenuti je da u ovom trenutku ne postoji podrška za otklanjanje grešaka, tako da kada dobijete kôd, možete ga za testiranje postaviti samo na lokalni veb server i pretraživač.

Blazor koristite za implementaciju logike na klijentskoj strani, slično kao što biste uradili u JavaScriptu. Kôd se pokreće u Razorovom jednostraničnom veb aplikacijskom okviru, implementiranim uz pomoć poznatog šablona MVC (model-view-controller). Malo je razlike između Blazora i poznatog veb aplikacijskog ASP.Net servera, mada zbog toga što Blazor kôd radi u pretraživaču, potrebno je razmotriti kako ćete preneti podatke između vaše aplikacije i bilo kojeg pozadinskog servisa. U praksi, možete da koristite .Net REST konektore za rad sa API-jima generisanim u servisima kao što je Azure Mobile App Service.

Blazor nije samo za C# razvoj; njegovo osnovno izvršno okruženje .Net podržava F# i VB, tako da možete brzo da prenesete postojeće veštine na veb, bez potrebe da učite nove jezike. Takođe možete da delite kôd između Windows projekata i Veba. Blazor takođe podržava .Net Standard 2.0 (mada ne implementira sve API-je, pa ćete morati da proverite izuzetke NotSupportedExceptions).

Blazor kôd je predpreveden u.Net sklopove, a zatim se preuzima i pokreće u izvršnom okruženju Mono .Net. Mada .Net može biti predpreveden, tako da se naprave binarne aplikacije, Blazor trenutno ne podržava ovaj metod; trenutno se oslanja na Mono.

Blazor vam daje progresivne veb aplikacije uz WebAssembly i Xamarin

Mada ne ide putem kao Silverlight, bez direktne podrške za korisničke interfejse XAML, Blazor vam omogućava da dovedete postojeći C# kôd na veb, dodajući složenu poslovnu logiku aplikacijama koje udomljuju pretraživači. To bi trebalo da pomogne u razvoju progresivnih aplikacija za veb (PWA), čime se kôd skoro matične brzine dovodi u samostalne aplikacije pretraživača.

Jedan primer koristi alternativnu .Net WebAssembly implementaciju za izgradnju progresivne veb aplikacije koja koristi prednosti Xamarin Forms. Koristeći Ooui.wasm, možete da izvršavate XAML unutar veb pretraživača, preko istog Mono-wasm izvršnog okruženja .Net koji koristi Blazor. Mada neka pitanja ostaju otvorena, privlačna je perspektiva da se kombinuje Ooui.wasm i Blazor. Višeplatformski korisnički interfejs Xamarin Forms je moćan alat, uz mogućnost korišćenja XAML-a za raspoređivanje korisničkih interfejsa i prilagođavanje standardnih obrazaca.

Iako je Blazor još uvek eksperiment, to je pokazatelj za moguću budućnost razvoja veb aplikacija bez HTML-a i JavaScript-a. Biće zanimljivo videti da li Microsoft nastavlja sa eksperimentom Blazor i da li će buduća izdanja za obradu Xamarin Forms i drugih opcija korisničkih interfejsa ići dalje od Razor aplikacija za pojedinačne stranice. Korišćenjem pretraživača kao domaćina za vaš kôd, .Net bi mogao da dobije potpuno novu publiku, posebno sa podrškom za progresivne veb aplikacije koja je sada dostupna na svim glavnim mobilnim i stonim platformama.

Izvor: InfoWorld