WebAssembly: Kahulugan, Mga Kalamangan, Mga Kaso ng Paggamit at higit pa
Nahuli sa WebAssembly hype, ngunit hindi eksakto kung ano ito? Narito ang mababang pababa.

Ang WebAssembly o Wasm ay isang binary-code na format para sa paglikha ng mga program na maaaring isagawa sa anumang arkitektura ng computer.
Ang system ay binubuo ng isang virtual machine at isang compiler na nagsasalin ng computer code mula sa mga programming language, gaya ng C o C++ sa nababasa ng tao na .wat at ang binary .wasm na mga format.
Ang orihinal na layunin ng WebAssembly ay paganahin ang mga programmer na bumuo ng mga application na may mataas na pagganap para sa mga web page sa pamamagitan ng pagpapagana ng halos katutubong bilis ng pagpapatupad sa loob ng isang browser. Ngunit ang teknolohiya ngayon ay tila umuunlad na lampas sa mga browser at sa cloud.
Ipinapakita sa iyo ng gabay na ito ang lahat ng kailangan mong malaman tungkol sa umuusbong na teknolohiyang ito, ang mga kalakasan, at kahinaan nito, pati na ang potensyal nito sa hinaharap.
Ano ang WebAssembly?
WebAss Assembly ay isang binary-code na format na tumatakbo sa isang virtual machine at maaaring i-compile ng iba't ibang wika. Ito ay dinisenyo upang maging portable at maaaring tumakbo sa isang web browser o bilang isang server application.
Unang inilabas noong 2017, ang WebAssembly ay isang rekomendasyon ng W3C mula noong 2019 at pinananatili ng maraming nag-aambag, kabilang ang Mozilla, Google, Microsoft, Red Hat, at marami pa.
Ang orihinal na layunin ay upang bumuo ng halos katutubong bilis ng pagpapatupad tulad ng makikita mo sa mga C/C++ na application sa loob ng browser. Ito rin ay nilalayong maging isang ligtas, bukas na pamantayan, nade-debug, at mas mababa sa bersyon na pamantayan sa web na pabalik na tugma at sumusunod sa JavaScript.
Paano Gumagana ang WebAssembly?
Ang WebAssembly ay idinisenyo bilang isang runtime engine, gaya ng Java o JavaScript, na maaaring i-embed sa isang browser o server environment upang patakbuhin ang computer code na pinagsama-sama sa .wasm binary o .wat na mga format ng text.
Upang magsulat ng code para sa WebAssembly execution, isinusulat ng developer ang program sa alinman sa maraming sinusuportahang wika. Pagkatapos ay i-compile ito gamit ang isang WebAssembly compiler alinman sa AOT (Ahead of Time) o JIT (sa tamang oras).
Ang code na ito ay maaaring gumawa ng karamihan sa mga gawain sa kapaligiran ng pagpapatupad, ngunit hindi nito maa-access o mabago ang mga bagay sa DOM ng browser. Ang anumang naturang pakikipag-ugnayan ay dapat dumaan sa JavaScript.
Paano Gumawa ng Sample na WebAssembly Application
Ang paglikha ng isang simpleng application ng Wasm para sa web browser ay posible sa ilang hakbang lamang tulad ng makikita mo sa ibaba:
- I-download at i-install ang Emscripten SDK.
- Isulat ang iyong sample helloworld.c code o gawin ito sa C++/Rust kung gusto mo.
- Tumakbo emcc helloworld.c -s WASM=1 -s helloworld.html sa isang terminal upang i-compile ang code sa WebAssembly kasama ang Emscripten. Lilikha ito ng Wasm binary, HTML, at JavaScript na mga file na kailangan mo (glue code).
- Ihatid ang helloworld.html page sa pamamagitan ng iyong web browser.
Ang Mga Bentahe ng WebAssembly
Maraming dahilan para gamitin ang WebAssembly at ang mga kaugnay nitong teknolohiya, kabilang dito ang:
- Malapit sa Katutubong Pagganap – Ang WebAssembly ay may mababang antas na disenyo na nag-aalok ng mga pagtatanghal na katulad ng mababang antas ng mga wika gaya ng C at C++.
- Katiwasayan – Ang system ay idinisenyo upang maging secure sa pamamagitan ng paghihiwalay nito sa isang virtual na kapaligiran na may limitadong access sa system.
- Buksan ang Standard – Maraming organisasyon at indibidwal ang nag-aambag sa WebAssembly at isa itong opisyal na rekomendasyon ng W3C.
- Magaan – Nag-compile ang WebAssembly sa binary code na isasagawa sa isang virtual machine. Ang code na ito ay portable at hindi kailangan o kasama ng mga system file.
- Suporta sa Multi-wika – Mahigit sa 50 mga wika ang maaaring mag-compile sa WebAssembly.
- Platform Independent – Ang WebAssembly virtual machine ay idinisenyo para sa bawat arkitektura upang ipakita ang parehong runtime na kapaligiran. Ang kailangan lang gawin ng developer ay magsulat ng code para sa WebAssembly.
Ang Mga Limitasyon ng WebAssembly
- Magtrabaho sa pag-unlad – Ang pamantayan ay nasa pagbuo pa rin at samakatuwid ay maraming mga tampok at pagpapabuti ang darating pa.
- Walang koleksyon ng basura – Kulang pa rin ang WebAssembly sa pangongolekta ng basura, bagama't maaari itong maipatupad sa lalong madaling panahon.
- Walang access sa DOM – Hindi mo maa-access ang DOM ng web browser nang direkta mula sa WebAssembly, kakailanganin mong dumaan sa JavaScript.
WebAssembly vs Java
Ang Java ay uri ng pinakamaagang pagpapatupad ng WebAssembly. Idinisenyo ito bilang isang write-once, run-anywhere na wika, ngunit nakabuo ng maraming isyu sa daan.
Tulad ng Java, ang WebAssembly ay gumagamit ng RE (Runtime Environment) upang isagawa ang code nito, ngunit hindi tulad ng Java, maaari mong isulat ang WebAssembly sa iyong piniling wika.
WebAssembly vs JavaScript
Ang WebAssembly ay isinasagawa sa browser o iba pang kapaligiran ng host, tulad ng JavaScript. Gayunpaman, kung saan ang JavaScript ay inihahatid sa kapaligiran ng pagpapatupad sa format ng teksto at pinagsama-sama sa tamang oras, ang WebAssembly ay may parehong teksto at binary na mga format.
Sa loob ng mga web browser, ang JavaScript ay may access sa DOM, habang ang WebAssembly ay wala. Gayunpaman, pagdating sa bilis ng pagpapatupad, tinatalo ng WebAssembly ang JavaScript, kasama ang mga bilis ng pagpapatupad ng halos katutubong code nito.
Ang bilis ay kung saan kumikinang ang WebAssembly at ang dahilan kung bakit ito ay perpekto para sa napakaraming gamit. Maaari mong i-load ang WebAssembly sa isang browser gamit ang JavaScript at ang dalawang code ay maaaring tumakbo nang magkasama at magbahagi ng mga mapagkukunan.
WebAssembly Vs Docker Vs Kubernetes
Ang Docker at Kubernetes ay dalawa sa mga sikat na teknolohiya na nagpapagana sa cloud computing. Ang Docker ay isang teknolohiya ng container na nagbibigay-daan sa mga developer na mag-package ng isang application kasama ang lahat ng mga dependency ng system nito sa isang pakete. Pinapadali nitong i-deploy ang application sa anumang cloud environment sa isang segundo o mas kaunti.
Ang Kubernetes, sa kabilang banda, ay isang open-source system upang pamahalaan at i-deploy ang mga containerized na application tulad ng Docker, CRI-O, containerd, at anumang pagpapatupad ng Kubernetes CRI (Container Runtime Interface). Pinapadali din ng Kubernetes ang pag-scale ng mga cloud deployment sa maraming server o virtual machine.
Mula sa pananaw na ito, ang WebAssembly ay mas katulad ng Docker at maaaring gawin upang tumakbo bilang isang containerized na cloud application gamit ang Kubernetes. Nag-aalok din ito ng maraming mga pakinabang sa Docker, ngunit malamang na hindi ito papalitan.
Higit pa sa Browser
Sa simula, may mga web server. Kinailangan mong italaga ang isang buong makina bilang isang server. Pagkatapos, may mga virtual machine, o VM, na nagpapahintulot sa isang server na tumakbo sa isa o higit pang mga CPU thread. Gayunpaman, kailangan mong magkaroon ng dedikadong VM.
Cloud computing ginawang posible na ilunsad at patakbuhin ang mga server lamang kapag kinakailangan sa pamamagitan ng paglalagay ng mga application. Ito ay humantong sa isang pagbawas sa mga gastos, dahil kailangan mo lamang magbayad para sa kung ano ang iyong ginagamit - wala nang mga dedikadong makina. Ngunit mayroon pa ring ilang mga isyu.
Una, ang mga docker file ay maaaring ilang Gigabytes na malaki, at nangangahulugan ito ng isang maliit na pagkaantala sa startup at iba pang mga isyu sa pamamahala. Ang isang katulad na Wasm file, gayunpaman, ay maaaring maging ilang MB lamang ang laki dahil ito ay isang paunang pinagsama-samang binary. Nagbibigay ito ng mas mabilis na oras ng pagsisimula kaysa sa Docker, perpekto para sa ilang partikular na application na kritikal sa oras.
Pangalawa, ang disenyo ng WebAssembly ay nangangahulugan na ang developer ay hindi kailangang pamahalaan at magtalaga ng mga mapagkukunan ng system, maaari lamang siyang makarating sa punto gamit ang kanyang programming language na pinili.
Ginagawa ng mga feature na ito ang WebAssembly na perpekto para sa pagpapatakbo ng mga cloud micro-service, bagama't mas gusto pa rin ang mga Docker application para sa mga application na nangangailangan ng higit na kontrol sa operating environment at filesystem.
Para sa karagdagang impormasyon, mga proyekto tulad ng WasmCloud at WasmEdge ay bumubuo ng WebAssembly sa isang mabubuhay na platform sa pag-compute.
Mga Kaso ng Paggamit ng Wasm
Maraming mga kaso ng paggamit para sa WebAssembly, dahil sa kakaibang katangian nito. Maaari silang hatiin sa tatlong malalaking grupo; in-browser, outside-the-browser, at hybrid setup.
Ang uri ng in-browser ay nagpapaliwanag sa sarili at ang outside-the-browser ay kadalasang tumutukoy sa server, IoT, at mga cloud deployment, habang ang hybrid ay tumutukoy sa isang halo ng dalawa.
Ang sumusunod ay isang pagtingin sa mga kaso ng paggamit kung saan ang Wasm ay maaaring maging mahusay:
- Mayroon nang mataas na pagganap na code – Luma ngunit kamangha-manghang code na maaari mo lamang i-port sa WebAssembly.
- Bagong code na may mataas na pagganap – Ang mga kailangan mong idisenyo at ipatupad mula sa simula.
- Pag-port ng mga desktop application sa web – Maaari itong magbukas ng bagong lahi ng mga solusyon sa desktop na nakabatay sa web, gaya ng web-based na pag-edit ng video.
- Cloud computing – Tumatakbo sa tabi ng Docker at Kubernetes para sa mga bagong pagkakataon.
Ang sumusunod ay isang pagtingin sa mga partikular na application at sitwasyon kung saan maaaring maging excel ang Wasm:
- Pag-edit ng video at larawan
- Disenyo ng laro
- Mga aplikasyon ng AI
- Virtual at augmented reality na mga application
- Mga application ng musika
- Mga aplikasyon ng P2P
- Mga application sa gilid ng server
- Cloud/cluster computations
- Computer-aided design
- Simulation ng platform ng OS
- Encryption
- Lokal na web server
- Mga remote desktop application
- Mga pang-agham na visualization
- Hybrid native na apps sa mga smartphone
- Sa mga IoT device
Listahan ng Mga Sinusuportahang Wika at Framework
Higit sa 50 mga wika ang pinagsama-sama sa WebAssembly, at narito ang ilan sa mga pinakasikat:
- C
- C + +
- R
- Mapula
- matulin
- Go
- Kotlin
- Kalawang
- PHP
- blazer – Isang balangkas para sa mga developer ng .NET.
- JwebAssembly – Compiler para sa Java bytecode at mga kaugnay na wika tulad ng JRuby, Jython, Groovy, Scala, at Kotlin.
- yew – Isang Rust framework para sa paglikha ng multi-threaded web app gamit ang WebAssembly.
- AssemblyScript – Isang wikang partikular na idinisenyo upang lumikha ng WebAssembly code.
- Butil – Isang malakas na na-type na functional na wika.
- Motoko
Makakahanap ka ng higit pang mga wika dito.
Listahan ng WebAssembly Runtimes & Tools
- Ang lahat ng mga pangunahing browser ay may suporta sa Wasm
- Pyodide – Python runtime sa browser na may Python scientific stack, kabilang ang Pandas, NumPy, SciPy.
- pampainit
- timbang – Para sa mga micro-service at web app
- Wasi - Modular na interface ng system
- WasmTime – Mabilis at secure na WebAssembly runtime.
- Wasmer
- Lucet
- wasmCloud – Kapaligiran sa ulap
- Krustlet – Kubernetes kublete para sa pagpapatakbo ng Wasm, nakasulat sa Rust.
- WasmEdge – Cloud at edge runtime environment
Konklusyon
Dumating na kami sa dulo ng aming paglalakbay sa WebAssembly at kung ano ang hawak nito para sa pag-compute. At tulad ng nakikita mo, ito ay mayroong maraming pangako.
Ito ay isang gawain sa pag-unlad bagaman ngunit sa patuloy na pag-unlad. At kung interesado ka, makakahanap ka ng higit pang impormasyon dito, dito, at dito.





