Nu kommer C# i browseren til forretnings-apps

Ed Charbeneau fra firmaet Telerik mener, at tiden er inde til at benytte C# i browseren via Webassembly. Illustration: Microsoft
Langt om længe er tiden inde til at benytte samme sprog på server som klient – og det er vel at mærke ikke Javascript. Webassembly og frameworket Blazor giver mulighed for at anvende .Net i browseren.

Webassembly-teknologien, der gør det muligt at køre snart sagt alle former for kode og afviklingsmiljøer i moderne browsere, er nu kommet så langt, at det er farbart at overveje at udskifte Javascript i klienten med det sprog som udvikleren foretrækker, og måske i forvejen benytter på serversiden.

Det kan være sprog som C# og Java, der er populære valg til forretningsapplikationer.

Det mener i hvert fald Ed Charbeneau fra firmaet Telerik, der udvikler kommercielle og ikke-open source brugerflade-biblioteker til Javascript og .Net.

Læs også: Webassembly kan blive webbets næste revolution og sætte Javascript på porten

På Øredev-konferencen, der blev afholdt i Malmø for nylig, fortalte han om open source-frameworket Blazor, som Microsoft har udviklet. Det gør det muligt at udvikle klient-programmer, der kører i en browser, med sproget C# og .Net, og med en server-baseret Plan B i baghånden. Det sidste vender vi tilbage til.

»Jeg kan genbruge de færdigheder, jeg allerede har, så jeg ikke skal skifte den mentale sammenhæng fra C# til noget helt andet,« svarer Ed Charbeneau på spørgsmålet om, hvad der lige er så godt ved Blazor.

Mental tilstand bevares

»Værktøjerne er dem, jeg allerede benytter, såsom MS Build, Visual Studio osv. Før Blazor udkom, måtte du skrive din server-kode i C# og skifte til Javascript, Webpack og Npm i frontend-udviklingen. Nogle gange bruger folk også forskellige kodeværktøjer til de to forskellige opgaver. Forskellen mellem de to teknologier er så stor, at du skifter til en helt anden mental tilstand.«

Men begge sprog, Javascript og C#, er dog objektorienterede, indvender Version2's udsendte reporter. Så forskellen kan vel ikke være så stor?

»Syntaksen er forskellig, det ene anvender typer, og det andet gør ikke. Javascript fungerer anderledes end C#, hvor du kan kompilere en DLL-fil og regne med, at det virker i kørselsmiljøet. Der er mange nuancer, der gør det forskelligt. Feedback fra fejl er helt anderledes. C# har typer, så når noget går galt, kan man gå igennem stakken af kald for at finde fejlen, og man får en intelligent og meningsgivende fejlmeddelelse. I Javascript får man ofte noget i stil med ‘undefined’ og så prøver du at finde ud af, hvor den ‘undefined’ kom fra. Det er sværere at fejlrette.«

Men det er ikke, fordi Ed Charbeneau har noget imod Javascript, eller sprog der 'transpiles', oversættes til Javascript, som for eksempel Typescript.

»Der er ikke noget galt med det. Der er heller ikke noget galt med Javascript. Det er bare anderledes. Typescript prøver at lægge et type-lag oven på Javascript. Det er et slags kompromis mellem C# og Javascript. Med Blazor er der ikke noget kompromis – jeg bruger de værktøjer, jeg havde i forvejen.«

Runtime på 2 megabyte

Første gang, brugeren afvikler en Blazor-applikation, skal browseren downloade et bibliotek på 2 megabyte, og det er en del, medgiver Ed Charbeneau.

»Microsoft ser på, om firmaet kan gøre det mindre, ved eksempelvis at fjerne kode, der ikke bruges. Firmaet ser på kompression, caching og Content Distribution Networks (CDN). Det fulde .Net-framework ændrer sig kun én gang om året.«

Browseren kan cache frameworket, og når det er downloadet første gang, så kører den næste applikation også på den og kræver altså ikke download på 2 megabyte. Man kan også skabe 'progressive web apps,’ som er webapps, der downloades og køres lokalt på klienten. Det kan også caches, og man kan bruge det som et almindelig skrivebordsprogram, og installere det på samme vis.

Det gamle spørgsmål om browser-kompatibilitet spøger dog i baggrunden.

»Det er et indviklet problem. Mange virksomheder bruger ældre browsere. Det vil altid være et problem. Men Blazor er kompatibel med alle 'eviggrønne' browsere, som opdateres automatisk, og det vil sige Chrome, Firefox, Edge og Safari.«

På serversiden er Blazor kompatibel med Internet Explorer 11 via såkaldte ‘polyfills’. Serverside-Blazor kører med kun en lille smule Javascript-kode og en websocket-forbindelse.

Serverside-afvikling med lille binær diff

Serverside-Blazor er en anden måde at afvikle applikationer i frameworket på, uden Webassembly. Det giver netop udvidet kompatibilitet.

»På serversiden er det samme framework, men kan køre som en .Net-applikation på serveren, og browseren anvendes som en tynd klient.«

Første ‘push’ består af hele view’et, og når forbindelsen er etableret, sender Blazor efterfølgende en ‘diff’ - netop de data, der skal opdateres - i et binært format, der ikke fylder meget, ofte kun få bytes.

Det gør det muligt at undgå den tidligere nævnte payload af frameworket på 2 megabyte. Derudover har man mulighed for at udføre opgaver på serveren, som måske er for tunge for klienten. Server-siden har også mindre abstraktion mellem data og applikationen, så der er eksempelvis ikke behov for eksterne HTTP-kald. Det er effektivt, specielt i forbindelse med udvikler-hastighed og -omkostninger.

Blazors framework kører på Mono, som er open source-.Net, og et framework til Webassembly. Der er ikke meget adgang fra Webassembly til broweren og dets dokument- og event-model, så her bruges der små bidder Javascript, der binder Webassembly sammen med browser og webside.

»Det er skjult i en abstraktion, så jeg ser det ikke som udvikler, der kun skriver C#. Hvis jeg skulle have brug for at tilgå Javascript, har jeg dog mulighed for det.«

Læs også: Firefox skaber hurtigere kald mellem Webassembly og Javascript

Der er en god grænseflade i mellem Javascript og frameworket, der afvikles i Webassembly, mener Ed Charbeneau.

Det er så simpelt som at kalde en Javascript-funktion, der knyttes til dokument-modellens Window-objekt. Det kan eksempelvis være at tilknytte en event, der skal udløses, når brugeren ændrer størrelsen på browseren. Det kræver kun en lille smule Javascript.

Tiden er rede til Webassembly for forretningsapps

Nu bliver interviewet lidt pikant, for Version2 talte med Ed Charbeneaus gode kollega TJ VanToll fra samme firma på Gotocph-konferencen for 12 måneder siden. Dengang sagde TJ VanToll:

»Jeg har hørt tale om Webassembly i årevis og jeg har endnu ikke set en praktisk situation, hvor det bliver anvendt. Det kommer nok til at spille en større rolle i forbindelse med f.eks. spil, hvor ydelse er kritisk, men til de fleste forretningsapplikationer er Javascripts ydelse ikke et problem. Det er vigtigere at være produktiv, og Typescript gør netop det. De fleste udviklere vil godt give køb på lidt ydelse, hvis det betyder, at de kan få tingene gjort lidt hurtigere.«

Ed Charbeneau klarer sig ud af den kollegiale kattepine på diplomatisk vis:

»Det var et korrekt udsagn på daværende tidspunkt. Tingene har ændret sig en hel del i løbet af det seneste år, og Blazor er en af de ting. Der arbejdes også meget andre steder i Webassembly-miljøet, og det er værd at kigge nærmere på, som indenfor programmeringssproget Rust.«

Læs også: Webassembly får online-kodeværktøj fra Mozilla

Tidligere har spil været et fokus for Webassembly, da de ydelsesmæssige fordele er indlysende, men forretningsapplikationer er det nyeste anvendelsesområde på platformen. Her er går Blazor forrest, mener Ed Charbeneau.

Kommer vi til at se mere C# og Java i browseren, og vil Javascript blive skubbet ud?

»Jeg tror at Javascript nok skal blive sikkert, hvor det er i dag. Jeg tror også vi vil se mange udviklere, der bruger .Net-teknologi, som vil skifte til Blazor.«

Det gælder især dem, der har arbejdet med .Net-teknologier som Silverlight, WPF, MVC og Webforms, siger Ed Charbeneau.

Måske er der nogle C#-udviklere, der har været tvunget til at udvikle frontends med Javascript, og som ikke er glade og hellere vil tilbage til C#.

»Mange siger, at eksempelvis Angular-biblioteket til Javascript kan være skræmmende, så nogle vil gerne tilbage. Jeg tror dog ikke vi kommer til at se et stort skift, hvor alle bare forlader Javascript,« mener Ed Charbeneau.

Men der er en tendens. Det er nemmere for en virksomhed kun at satse på ét sæt færdigheder hos udviklerne. Det samme er set med mobil-krydsplatformsmiljøet Xamarin.

»Folk tvivlede på det først, men år senere er Xamarin stadig her, og det spiller en stor rolle for Microsoft i dag.«

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (7)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere