Loading...
9/6/2024
Tech Blog

WebAssembly (WASM): Вебийн гүйцэтгэлийг шинэ түвшинд гаргах нь

Зургийн эх сурвалж: https://byteofdev.com/posts/webassembly/

Нийтэлсэн: 

Програм хангамжийн инженер T.Цэрэнсодном 

Програм хангамжийн инженер Ц.Гэрэлтунгалаг

Хураангуй

Энэхүү блог нийтлэл нь WebAssembly (WASM)-ийн үндсэн ойлголт, түүний веб хөгжүүлэлтэд хэрхэн нөлөөлж, ашиглах арга замуудыг тайлбарлана. WASM нь өндөр гүйцэтгэлтэй, платформ хооронд ажиллах боломжтой код бичих боломжийг олгодог технологи юм.

Асуудал

Веб хөгжүүлэлтийн ертөнцөд өндөр гүйцэтгэлтэй программ бичих нь нэгэн томоохон асуудал болж байна. JavaScript-ийн гүйцэтгэлийн хязгаарлалтууд нь зарим тохиолдолд хангалтгүй байж, веб программуудын хурд удаашралтай болох шалтгаан болж байна. Энэ асуудлыг шийдэхийн тулд WebAssembly (WASM)-ийг ашиглах нь зүйтэй гэж үзэж байна.

Шийдэл

WebAssembly гэж юу вэ?

WebAssembly (WASM) нь платформ хооронд ажиллах боломжтой, өндөр гүйцэтгэлтэй бинар форматтай кодыг веб хөтөчүүд дээр ажиллуулах стандарт юм. WASM нь программын гүйцэтгэлийг сайжруулж, JavaScript-тэй хамтран ажиллаж болох бөгөөд аливаа програмчлалын хэлээр бичигдсэн кодыг веб хөтөчүүд дээр гүйцэтгэх боломжийг олгодог.

WASM-г хэрхэн хэрэгжүүлэх вэ?

  1. Компилятор сонгох: WASM-г үүсгэхийн тулд эхлээд хэрэглэх програмчлалын хэлээ сонгож, түүнд тохирох компиляторыг ашиглана. Жишээ нь, Emscripten, Rust, AssemblyScript зэрэг компиляторуудыг ашиглаж болно.
  2. Код бичих: Өөрийн сонгосон програмчлалын хэлээр кодоо бичиж, компиляторыг ашиглан WASM файл үүсгэнэ.
  3. WASM-г веб дээр ачаалах: Үүсгэсэн WASM файлаа веб хөтөч дээр ачаалж, JavaScript ашиглан түүний функцийг дуудна. Энэ үед JavaScript болон WASM хоорондын харилцааг зохицуулахын тулд WebAssembly API-г ашиглана.
  4. Туршилт хийх, оновчлох: WASM-г ашиглаж байгаа кодын гүйцэтгэлийг туршиж, шаардлагатай тохиолдолд оновчлох хэрэгтэй. Эцэст нь веб программын гүйцэтгэлийг сайжруулахын тулд WASM-г зөв тохируулж, оновчтойгоор ашиглах нь чухал.

WebAssembly-г хэрхэн ажилладаг вэ?

  1. Бинар файлыг үүсгэх: WASM файлыг төрөл бүрийн програмчлалын хэлээр бичсэн кодоос үүсгэж болно. Жишээлбэл, C, C++, Rust гэх мэт. Програмчлалын хэлний кодыг WASM руу хөрвүүлдэг компиляторууд байдаг бөгөөд тэдгээрийн тусламжтайгаар өөрийн бичсэн кодыг веб дээр гүйцэтгэх боломжтой болно. Компиляторуудын жишээ нь Emscripten, Rust, AssemblyScript зэрэг орно.
  2. Бинар файлыг веб хөтөчүүд дээр ажиллуулах: Орчин үеийн бүх веб хөтөчүүд (Chrome, Firefox, Safari, Edge) WASM-г дэмждэг. Энэ нь ямар ч веб хөтөч дээр WASM кодыг ачаалж гүйцэтгэх боломжийг олгодог тул веб програмыг бүх төрлийн төхөөрөмж дээр ашиглах боломжтой гэсэн үг. Өөрөөр хэлбэл, нэг л удаа WASM файлыг үүсгээд, бүх веб хөтөчүүд дээр ажиллуулах боломжтой гэсэн үг юм.
  3. JavaScript-тэй хамтран ажиллах: WASM нь JavaScript-тэй хамтран ажиллаж, веб программын зарим хэсгийг өндөр гүйцэтгэлтэйгээр гүйцэтгэх боломжийг олгодог. Жишээ нь, тооцооллын өндөр ачаалалтай хэсгийг WASM дээр бичиж, JavaScript-тэй харилцах замаар веб программын гүйцэтгэлийг сайжруулж болно. Энэ нь JavaScript-ийн хязгаарлалтуудыг даван туулж, илүү үр ашигтай веб программуудыг хөгжүүлэхэд тусалдаг
  4. HTML болон JavaScript ашиглан хэрэгжүүлэх: WASM-г веб дээр ачаалах, түүний функцийг дуудахдаа HTML болон JavaScript ашиглах хэрэгтэй. Жишээ нь, C хэлээр бичсэн кодыг Emscripten компайлераар WASM руу хөрвүүлж, HTML болон JavaScript ашиглан веб дээр ажиллуулж болно.

Жишээ (https://github.com/nt-puujee/wasm-factorial)

Жишээ болгон WASM-г хэрхэн хэрэгжүүлэх талаар харуулъя. Энд бид C хэлээр бичсэн энгийн кодыг WASM руу хөрвүүлж, JavaScript ашиглан веб дээр ажиллуулах болно.

C хэлний кодfactorial.c файлд дараах кодыг бичнэ:
 

#include <stdio.h>

int factorial(int n) {

    if (n <= 1) return 1;

    return n * factorial(n - 1);

}

Компайлдах: Энгийн C хэлний кодыг WASM руу хөрвүүлэхийн тулд Emscripten компайлерыг ашиглана.

emcc factorial.c -s WASM=1 -o factorial.js

HTML файл: Веб дээр WASM-г ачаалж, JavaScript ашиглан дуудах HTML файлыг үүсгэнэ.

<!DOCTYPE html>

<html>

<head>

   <title>WebAssembly Example</title>

</head>

<body>

   <h1>WebAssembly Example</h1>

   <button onclick="calculateFactorial()">Calculate Factorial</button>

   <p id="result"></p>

   <script>

       async function calculateFactorial() {

           const response = await fetch('factorial.wasm');

           const buffer = await response.arrayBuffer();

           const wasmModule = await WebAssembly.instantiate(buffer);

           const result = wasmModule.instance.exports.factorial(5);

           document.getElementById('result').textContent = 'Factorial of 5 is ' + result;

       }

   </script>

</body>

</html>

Энэ жишээнд, C хэлээр бичсэн факториал тооцоолох функцийг WASM руу хөрвүүлж, HTML болон JavaScript ашиглан веб дээр ажиллуулж байна. Веб дээрх товчлуурыг дарж факториалын үр дүнг харуулах болно.

Туршилт хийх, оновчлох

WASM-г ашиглаж байгаа кодын гүйцэтгэлийг туршиж, шаардлагатай тохиолдолд оновчлох хэрэгтэй. Эцэст нь веб программын гүйцэтгэлийг сайжруулахын тулд WASM-г зөв тохируулж, оновчтойгоор ашиглах нь чухал.

WebAssembly-г Хэрэглэх Шалтгаан

WebAssembly нь веб программуудын гүйцэтгэлийг сайжруулах, платформ хоорондын нийцлийг хангах зорилгоор бүтээгдсэн. Үүний үндсэн шалтгаанууд нь:

  • Өндөр гүйцэтгэл

WASM нь C, C++ болон бусад өндөр гүйцэтгэлтэй хэлнүүдээр бичсэн кодыг веб дээр гүйцэтгэх боломжийг олгодог. Энэ нь JavaScript-ээс хамаагүй хурдан гүйцэтгэгдэх бөгөөд тооцооллын өндөр ачаалалтай веб программуудын хувьд онцгой ач холбогдолтой.

Платформ хоорондын нийцэл

WASM нь бүх веб хөтөчүүд дээр ажиллах боломжтой. Энэ нь нэг л удаа бичсэн кодыг ямар ч веб хөтөч дээр ажиллуулах боломжийг олгож, хөгжүүлэлтийн ажлыг хөнгөвчилнө.

Аюулгүй байдал

WASM нь веб программуудын аюулгүй байдлыг хангах үүднээс тусгайлан зохиогдсон. WASM код нь sandbox орчинд ажилладаг бөгөөд энэ нь веб хөтөчийг хамгаалж, хэрэглэгчийн төхөөрөмжийг аюулгүй байлгана.

Хэрэглээний өргөн боломж

WASM нь веб дээрх тоглоомууд, график боловсруулалт, бодит цагийн програмчлал зэрэг олон төрлийн хэрэглээнд ашиглаж болно. Энэ нь веб хөгжүүлэлтийн шинэ боломжуудыг нээж өгдөг.

WebAssembly-г амжилттай хэрэглэсэн жишээнүүд

  1. AutoCAD Web App: AutoCAD нь WebAssembly ашиглан өөрийн алдартай CAD программ хангамжийн веб хувилбарыг бүтээсэн. Энэ нь хэрэглэгчдэд хөтөч дотроос шууд AutoCAD-ийн боломжуудыг ашиглах боломжийг олгодог. WebAssembly нь программын хурдыг сайжруулж, том хэмжээний файлуудыг ачаалах болон боловсруулалтыг хурдасгасан.
  2. eBay: eBay нь WebAssembly суурилсан баркод сканерыг хэрэгжүүлэн өөрийн мобайл веб худалдааны туршлагыг сайжруулсан. Өмнө нь зөвхөн натив аппликейшнүүдэд хязгаарлагддаг байсан энэ боломж нь дотоодын C++ номын санг WebAssembly-д компайл хийснээр камерын урсгалаас баркод илрүүлэх үйлдлийг тогтвортой гүйцэтгэлтэй болгосон. 
  3. Google Earth: Анх Google Earth нь хүнд шаардлагуудаас болж натив апп эсвэл хэрэглээнээс шалтгаалан өргөн хэрэглээтэй нэмэлт плагин ууд шаарддаг байсан. WebAssembly-ийн тусламжтайгаар Google нь Google Earth-ийн үндсэн кодыг хөтөч дотор үр ашигтай ажиллуулж, нэмэлт таталт шаардлагагүй болгосон.

 

Дүгнэлт

WebAssembly (WASM) нь веб хөгжүүлэлтийн ертөнцөд гүйцэтгэл сайжруулах, платформ хоорондын уялдаа холбоог нэмэгдүүлэх шинэ боломжийг нээж өгч байна. Түүний гол давуу талууд нь веб хөтөч доторх программын гүйцэтгэлийг сайжруулж, өндөр ачаалалтай, нарийн төвөгтэй тооцооллыг хялбархан гүйцэтгэх чадвартай байдал юм. WASM нь JavaScript-ээс хамаагүй хурдан ажиллах, нарийн тооцооллол хийгдэх шаардлагатай веб программуудад онцгой ач холбогдолтой. WASM-ийг ашиглах нь зөвхөн веб программын гүйцэтгэлийг нэмэгдүүлээд зогсохгүй, хөгжүүлэгчдэд өөрсдийн кодыг нэг удаа бичээд, ямар ч платформ дээр ажиллуулах давуу талыг олгодог. Энэ нь хөгжүүлэлтийн цаг хугацааг хэмнэж, олон төрлийн төхөөрөмж, платформд нийцсэн веб программуудыг бүтээхэд хялбар болгодог. WASM-ийг амжилттай хэрэглэж буй жишээнүүдээс харахад томоохон технологийн компаниуд түүнийг ашиглан веб программуудаа сайжруулж, хэрэглэгчийн туршлагыг шинэ түвшинд гаргаж байна. Жишээ нь, AutoCAD, eBay, Google Earth зэрэг компаниуд WASM-ийн тусламжтайгаар веб орчин дахь гүйцэтгэлээ амжилттай сайжруулсан байна.

Иймд WebAssembly нь веб хөгжүүлэлтийн ирээдүйн гол түлхүүр технологиудын нэг болж, илүү хурдан, найдвартай веб программыг хөгжүүлэхэд зайлшгүй хэрэгцээтэй хэрэгсэл болж байна. Хэрэв та веб хөгжүүлэлт хийж байгаа бол WASM-г өөрийн заавал эзэмших хэрэглүүр болгох хэрэгтэй бөгөөд энэ нь веб хөгжүүлэлтийн чанарыг сайжруулж, гүйцэтгэлийг шинэ түвшинд хүргэхэд тусална.