WebAssembly: nozīme, priekšrocības, lietošanas gadījumi un daudz kas cits

Vai esat aizrāvies ar WebAssembly ažiotāžu, bet nezināt, kas tas ir? Šeit ir zemākais punkts.

WebAssembly vai Wasm ir binārā koda formāts tādu programmu izveidei, kuras var izpildīt jebkurā datora arhitektūrā.

Sistēma sastāv no virtuālās mašīnas un kompilatora, kas pārvērš datora kodu no programmēšanas valodām, piemēram, C vai C++, cilvēkam lasāmā .wat un binārajos .wasm formātos.

WebAssembly sākotnējais mērķis bija ļaut programmētājiem izstrādāt augstas veiktspējas lietojumprogrammas tīmekļa lapām, pārlūkprogrammā nodrošinot gandrīz vietējo izpildes ātrumu. Taču šķiet, ka tehnoloģija tagad attīstās ne tikai pārlūkprogrammās, bet arī mākonī.

Šajā rokasgrāmatā ir parādīts viss, kas jums jāzina par šo tehnoloģiju attīstību, tās stiprajām un vājajām pusēm, kā arī tās nākotnes potenciālu.

Kas ir WebAssembly?

WebAssembly ir binārā koda formāts, kas darbojas virtuālajā mašīnā un kurā var kompilēt dažādas valodas. Tas ir paredzēts pārnēsājamam un var darboties tīmekļa pārlūkprogrammā vai kā servera lietojumprogramma.

Pirmo reizi izlaista 2017. gadā, WebAssembly ir W3C ieteikums kopš 2019. gada, un to uztur daudzi līdzstrādnieki, tostarp Mozilla, Google, Microsoft, Red Hat un daudzi citi.

Sākotnējais mērķis bija attīstīt gandrīz sākotnējos izpildes ātrumus, kādus jūs varētu atrast ar C/C++ lietojumprogrammām pārlūkprogrammā. Tas ir arī paredzēts kā drošs, atvērtā standarta, atkļūdojams un bez versiju tīmekļa standarts, kas ir saderīgs ar atpakaļejošu datumu un ir saderīgs ar JavaScript.

Kā darbojas WebAssembly?

WebAssembly ir izstrādāts kā izpildlaika dzinējs, piemēram, Java vai JavaScript, ko var iegult pārlūkprogrammas vai servera vidē, lai palaistu datora kodu, kas apkopots .wasm binārajā vai .wat teksta formātā.

Lai rakstītu kodu WebAssembly izpildei, izstrādātājs raksta programmu jebkurā no daudzajām atbalstītajām valodām. Pēc tam kompilējiet to, izmantojot WebAssembly kompilatoru AOT (pirms laika) vai JIT (tieši laikā).

Šis kods var veikt lielāko daļu darba izpildes vidē, taču tas nevar piekļūt vai modificēt pārlūkprogrammas DOM objektus. Jebkurai šādai mijiedarbībai ir jānotiek caur JavaScript.

Kā izveidot WebAssembly lietojumprogrammas paraugu

Vienkāršas Wasm lietojumprogrammas izveide tīmekļa pārlūkprogrammai ir iespējama, veicot tikai dažas darbības, kā redzams tālāk:

  1. Lejupielādēt un instalēt Emscripten SDK.
  2. Uzrakstiet savu paraugu kolēģu pasaule.c kodu vai dariet to C++/Rust, ja vēlaties.
  3. skrējiens emcc helloworld.c -s WASM=1 -s helloworld.html terminālī, lai ar Emscripten apkopotu WebAssembly kodu. Tas izveidos nepieciešamos Wasm bināros, HTML un JavaScript failus (līmes kods).
  4. Apkalpojiet helloworld.html lapu, izmantojot savu tīmekļa pārlūkprogrammu.

WebAssembly priekšrocības

Ir daudz iemeslu WebAssembly un ar to saistīto tehnoloģiju ieviešanai, tostarp:

  • Gandrīz vietēja veiktspēja - WebAssembly ir tik zema līmeņa dizains, ka tas piedāvā veiktspēju, kas ir līdzīga zema līmeņa valodām, piemēram, C un C++.
  • Drošība – Sistēma ir veidota tā, lai tā būtu droša, izolējot to virtuālajā vidē ar ierobežotu piekļuvi sistēmai.
  • Atvērtais standarts - Daudzas organizācijas un privātpersonas sniedz ieguldījumu WebAssembly, un tas ir oficiāls W3C ieteikums.
  • Viegls - WebAssembly apkopo bināro kodu, kas jāizpilda virtuālajā mašīnā. Šis kods ir pārnēsājams, un tam nav nepieciešami sistēmas faili.
  • Daudzvalodu atbalsts - WebAssembly var apkopot vairāk nekā 50 valodās.
  • Platforma neatkarīga – WebAssembly virtuālā mašīna ir paredzēta katrai arhitektūrai, lai parādītu vienu un to pašu izpildlaika vidi. Viss, kas izstrādātājam ir jādara, ir jāraksta WebAssembly kods.

WebAssembly ierobežojumi

  • Darbs progresā – Standarts joprojām ir izstrādes stadijā, tāpēc daudzas funkcijas un uzlabojumi vēl ir gaidāmi.
  • Nav atkritumu savākšanas - WebAssembly joprojām trūkst atkritumu savākšanas, lai gan tas drīz varētu tikt ieviests.
  • Nav DOM piekļuves – Jūs nevarat piekļūt tīmekļa pārlūkprogrammas DOM tieši no WebAssembly, jums būs jāiet cauri JavaScript.

WebAssembly vs Java

Java ir sava veida agrākā WebAssembly ieviešana. Tā tika izstrādāta kā vienreiz rakstāma valoda, kuru var palaist jebkurā vietā, taču tā radīja daudz problēmu.

Tāpat kā ar Java, WebAssembly izmanto RE (Runtime Environment), lai izpildītu savu kodu, taču atšķirībā no Java, jūs varat rakstīt WebAssembly savā izvēlētajā valodā.

WebAssembly vs JavaScript

WebAssembly tiek izpildīts pārlūkprogrammā vai citā resursdatora vidē, tāpat kā JavaScript. Tomēr, ja JavaScript izpildes vidē tiek piegādāts teksta formātā un tiek apkopots tieši laikā, WebAssembly ir gan teksta, gan binārie formāti.

Tīmekļa pārlūkprogrammās JavaScript ir piekļuve DOM, savukārt WebAssembly nav. Tomēr, runājot par izpildes ātrumu, WebAssembly pārspēj JavaScript ar gandrīz vietējā koda izpildes ātrumu.

Ātrums ir tas, kur WebAssembly spīd, un tāpēc tas ir ideāli piemērots tik daudziem lietojumiem. Varat ielādēt WebAssembly pārlūkprogrammā, izmantojot JavaScript, un abi kodi var darboties kopā un koplietot resursus.

WebAssembly vs Docker vs Kubernetes

Docker un Kubernetes ir divas no populārākajām tehnoloģijām, kas nodrošina mākoņdatošanu. Docker ir konteinera tehnoloģija, kas ļauj izstrādātājiem vienā pakotnē iesaiņot lietojumprogrammu ar visām tās sistēmas atkarībām. Tas atvieglo lietojumprogrammas izvietošanu jebkurā mākoņa vidē sekundē vai ātrāk.

No otras puses, Kubernetes ir atvērtā pirmkoda sistēma, lai pārvaldītu un izvietotu konteinerizētas lietojumprogrammas, piemēram, Docker, CRI-O, konteineru un jebkuru Kubernetes CRI (konteinera izpildlaika interfeisa) ieviešanu. Kubernetes arī ļauj viegli mērogot mākoņa izvietošanu vairākos serveros vai virtuālajās mašīnās.

No šī viedokļa WebAssembly ir vairāk līdzīgs Docker, un to var izveidot kā konteinerizētu mākoņa lietojumprogrammu, izmantojot Kubernetes. Tas piedāvā arī daudzas priekšrocības salīdzinājumā ar Docker, taču, iespējams, to neaizstās.

Ārpus pārlūkprogrammas

Sākumā bija tīmekļa serveri. Jums bija jāvelta pilna mašīna kā serveris. Pēc tam bija virtuālās mašīnas vai virtuālās mašīnas, kas ļāva serverim darboties tikai vienā vai vairākos CPU pavedienos. Tomēr jums bija jābūt īpašai VM.

mākonis skaitļošanas ļāva palaist un palaist serverus tikai nepieciešamības gadījumā, konteinerizējot lietojumprogrammas. Tas izraisīja izmaksu samazināšanos, jo jums bija jāmaksā tikai par to, ko lietojat — vairs nebija īpašu iekārtu. Bet joprojām ir dažas problēmas.

Pirmkārt, docker faili var būt vairāki gigabaiti lieli, un tas nozīmē nelielu palaišanas aizkavēšanos un citas pārvaldības problēmas. Tomēr līdzīgs Wasm fails var būt tikai dažus MB liels, jo tas ir iepriekš kompilēts binārs. Tas nodrošina daudz ātrāku startēšanas laiku nekā Docker, kas ir lieliski piemērots noteiktām laika ziņā kritiskām lietojumprogrammām.

Otrkārt, WebAssembly dizains nozīmē, ka izstrādātājam nav jāpārvalda un jāpiešķir sistēmas resursi, viņš var vienkārši tikt pie lietas, izmantojot savu izvēlēto programmēšanas valodu.

Šīs funkcijas padara WebAssembly ideālu mākoņa mikropakalpojumu darbināšanai, lai gan Docker lietojumprogrammas joprojām ir ieteicamas lietojumprogrammām, kurām nepieciešama lielāka operētājsistēmas un failu sistēmas kontrole.

Lai iegūtu vairāk informācijas, projekti, piemēram WasmCloud un WasmEdge izstrādā WebAssembly par dzīvotspējīgu skaitļošanas platformu.

Wasm lietošanas gadījumi

Ņemot vērā WebAssembly īpašo raksturu, ir daudz lietošanas gadījumu. Tos var iedalīt trīs lielās grupās; pārlūkprogrammā, ārpus pārlūkprogrammas un hibrīdie iestatījumi.

Pārlūkprogrammas iekšējais veids ir pašsaprotams, un ārpus pārlūkprogrammas galvenokārt attiecas uz servera, IoT un mākoņa izvietošanu, savukārt hibrīds attiecas uz abu veidu izvietošanu.

Tālāk ir apskatīti lietošanas gadījumi, kad Wasm var būt izcils:

  • Jau esošs augstas veiktspējas kods - Vecs, bet brīnišķīgs kods, kuru varat vienkārši portēt uz WebAssembly.
  • Jauns augstas veiktspējas kods – Tie, kas jāprojektē un jāīsteno no nulles.
  • Darbvirsmas lietojumprogrammu pārnešana uz tīmekli - Tas varētu atvērt jaunu tīmekļa darbvirsmas risinājumu veidu, piemēram, tīmekļa video rediģēšana.
  • mākonis skaitļošanas – Darbojas kopā ar Docker un Kubernetes pēc jaunām iespējām.

Tālāk ir apskatītas konkrētas lietojumprogrammas un scenāriji, kuros Wasm var būt izcils:

  • Video un attēlu rediģēšana
  • Spēļu dizains
  • AI lietojumprogrammas
  • Virtuālās un paplašinātās realitātes lietojumprogrammas
  • Mūzikas programmas
  • P2P lietojumprogrammas
  • Servera puses lietojumprogrammas
  • Mākoņu/klasteru aprēķini
  • Ar datora palīdzību apstrādāts dizains
  • OS platformas simulācija
  • Šifrēšana
  • Vietējais tīmekļa serveris
  • Attālās darbvirsmas lietojumprogrammas
  • Zinātniskās vizualizācijas
  • Hibrīdas vietējās lietotnes viedtālruņos
  • IoT ierīcēs

Atbalstīto valodu un ietvaru saraksts

WebAssembly ir apkopotas vairāk nekā 50 valodās, un šeit ir dažas no populārākajām:

  • C
  • C + +
  • R
  • rubīns
  • Swift kods
  • Go
  • Kotlin
  • Rūsa
  • PHP
  • Pūtējs – ietvars .NET izstrādātājiem.
  • JwebAssembly - Kompilators Java baitkodam un saistītām valodām, piemēram, JRuby, Jython, Groovy, Scala un Kotlin.
  • īve - Rust sistēma vairāku pavedienu tīmekļa lietotņu izveidei, izmantojot WebAssembly.
  • AssemblyScript – Valoda, kas īpaši izstrādāta WebAssembly koda izveidei.
  • Grauds – Spēcīgi tipizēta funkcionāla valoda.
  • Motoko

Jūs varat atrast vairāk valodu šeit.

WebAssembly izpildlaiku un rīku saraksts

  • Visām lielākajām pārlūkprogrammām ir Wasm atbalsts
  • Piodīds - Python izpildlaiks pārlūkprogrammā ar Python zinātnisko steku, tostarp Pandas, NumPy, SciPy.
  • wamr
  • svars - Mikropakalpojumiem un tīmekļa lietotnēm
  • Wasi - Moduļu sistēmas saskarne
  • WasmTime - Ātrs un drošs WebAssembly izpildlaiks.
  • Wasmer
  • Lucet
  • wasmCloud – Mākoņu vide
  • Krustlets – Kubernetes kublete Wasm skriešanai, rakstīts Rust.
  • WasmEdge - Mākoņa un malas izpildlaika vide

Secinājumi

Esam nonākuši pie sava ceļojuma uz WebAssembly un to, ko tas sniedz skaitļošanai, noslēgumā. Un, kā redzat, tam ir daudz solījumu.

Tomēr tas joprojām ir nepabeigts darbs, bet nepārtraukti attīstās. Un, ja jūs interesē, jūs varat atrast vairāk informācijas šeit, šeit, un šeit.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke ir datoru entuziasts, kuram patīk lasīt dažādas grāmatas. Viņš dod priekšroku Linux, nevis Windows/Mac, un ir izmantojis
Ubuntu kopš tā sākuma. Jūs varat viņu noķert Twitter, izmantojot bongotrax

Raksti: 299

Saņemiet tehnikas preces

Tehniskās tendences, starta tendences, atsauksmes, tiešsaistes ienākumi, tīmekļa rīki un mārketings vienu vai divas reizes mēnesī