WebAssembly এর মাধ্যমে ডেটা এক্সপোর্ট করা

Import এবং Export (ইমপোর্ট এবং এক্সপোর্ট) - ওয়েবঅ্যাসেম্বলি (WebAssembly) - Computer Programming

283

WebAssembly এর মাধ্যমে ডেটা এক্সপোর্ট করা

WebAssembly (WASM) এর মাধ্যমে ডেটা এক্সপোর্ট করা এমন একটি প্রক্রিয়া, যার মাধ্যমে আপনি WebAssembly মডিউল থেকে JavaScript বা অন্য কোনো প্রযুক্তির মাধ্যমে ডেটা বের করতে পারেন। সাধারণত, WebAssembly মডিউলগুলো কিছু ডেটা প্রসেস করে এবং সেই ডেটা JavaScript এ পাঠানোর জন্য exports ব্যবহার করে।

নিচে WebAssembly এর মাধ্যমে ডেটা এক্সপোর্ট করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হয়েছে।


1. WebAssembly মডিউল থেকে ডেটা এক্সপোর্ট

WebAssembly মডিউলগুলি functions, memory, এবং globals এক্সপোর্ট করতে পারে। এক্সপোর্ট করা ফাংশনগুলো JavaScript থেকে কল করা হয় এবং JavaScript তে ফলাফল ফেরত পাঠানো হয়।

1.1 WebAssembly মডিউল তৈরি এবং ডেটা এক্সপোর্ট

ধরা যাক, আপনি WebAssembly মডিউলে একটি ফাংশন তৈরি করেছেন যা কিছু ডেটা প্রসেস করে এবং তারপর সেই ডেটা JavaScript তে এক্সপোর্ট করছে।

WebAssembly (WASM) কোড:

(module
  (memory 1)  ;; মেমরি এক্সপোর্ট
  (export "memory" (memory 0))
  
  (export "processData" (func $processData))  ;; ফাংশন এক্সপোর্ট
  
  (func $processData (param $a i32) (result i32)
    local.get $a
    i32.mul  ;; এই ফাংশনটি প্রাপ্ত সংখ্যা দুটি দিয়ে গুণ করবে
  )
)

এখানে, processData নামক একটি ফাংশন i32.mul ইন্সট্রাকশন ব্যবহার করে একটি পূর্ণসংখ্যা প্রসেস করবে এবং তার ফলাফল JavaScript তে এক্সপোর্ট করবে।

1.2 JavaScript থেকে WebAssembly ফাংশন কল করা

fetch('your_program.wasm')  // WebAssembly ফাইল লোড করা
  .then(response => response.arrayBuffer())  // ফাইলটি বাইটে রূপান্তর
  .then(bytes => WebAssembly.instantiate(bytes))  // ফাইলটিকে ইনস্ট্যানশিয়েট করা
  .then(wasmModule => {
      const { instance } = wasmModule;
      
      // WebAssembly ফাংশন থেকে ডেটা এক্সপোর্ট করা
      const result = instance.exports.processData(10);  // এখানে 10 প্যারামিটার হিসাবে পাঠানো হচ্ছে
      console.log('Result from WASM:', result);  // আউটপুট হবে 100 (10 * 10)
  })
  .catch(console.error);

এখানে, processData ফাংশনটি 10 প্যারামিটার হিসেবে গ্রহণ করছে এবং সেই প্যারামিটারটির সাথে 10 গুণ করছে, এবং তারপর ফলাফল JavaScript তে এক্সপোর্ট করছে।


2. Memory থেকে ডেটা এক্সপোর্ট করা

WebAssembly মডিউলগুলি মেমরি এক্সপোর্ট করে, যা JavaScript এবং WebAssembly এর মধ্যে ডেটা শেয়ার করতে সাহায্য করে। আপনি যদি একটি অ্যারে বা অন্যান্য ডেটা সংরক্ষণ করতে চান, তবে Linear Memory ব্যবহার করতে পারেন, যা মেমরি থেকে ডেটা এক্সপোর্ট করার একটি শক্তিশালী পদ্ধতি।

2.1 WebAssembly Memory Example

ধরা যাক, WebAssembly মডিউলে একটি অ্যারে তৈরি করা হয়েছে, এবং সেই অ্যারে থেকে ডেটা এক্সপোর্ট করা হচ্ছে।

WebAssembly (WASM) কোড:

(module
  (memory 1)
  (export "memory" (memory 0))
  
  (export "fillMemory" (func $fillMemory))  ;; মেমরি পূর্ণ করার ফাংশন এক্সপোর্ট
  
  (func $fillMemory (param $value i32)
    i32.store 0 $value   ;; মেমরির প্রথম সেলে একটি ভ্যালু স্টোর
  )
)

এখানে, fillMemory ফাংশনটি WebAssembly মেমরির প্রথম সেলে একটি ভ্যালু স্টোর করবে।

2.2 JavaScript থেকে Memory Access এবং ডেটা এক্সপোর্ট

fetch('your_memory_program.wasm')  // WebAssembly ফাইল লোড করা
  .then(response => response.arrayBuffer())
  .then(bytes => WebAssembly.instantiate(bytes))  // ইনস্ট্যানশিয়েট করা
  .then(wasmModule => {
      const { instance } = wasmModule;
      
      // মেমরি অ্যাক্সেস করা
      const memory = new Int32Array(instance.exports.memory.buffer);

      // মেমরি পূর্ণ করা
      instance.exports.fillMemory(42);  // মেমরির প্রথম সেলে 42 স্টোর করা

      // মেমরি থেকে ডেটা এক্সপোর্ট করা
      console.log('Data in memory:', memory[0]);  // আউটপুট হবে 42
  })
  .catch(console.error);

এখানে, JavaScript কোড Int32Array ব্যবহার করে WebAssembly মেমরি অ্যাক্সেস করছে এবং fillMemory ফাংশন কল করে মেমরির প্রথম সেলে একটি ভ্যালু পাঠাচ্ছে। এরপর মেমরি থেকে ডেটা এক্সপোর্ট করা হচ্ছে।


3. Global Variables এর মাধ্যমে ডেটা এক্সপোর্ট

WebAssembly মডিউল গ্লোবাল ভ্যারিয়েবল এক্সপোর্ট করতে পারে, যা মেমরি থেকে আলাদা। আপনি যদি কোনো গ্লোবাল ভ্যারিয়েবল বা কনস্ট্যান্ট ওয়েব অ্যাসেম্বলিতে এক্সপোর্ট করতে চান, তবে সেটি সহজেই করা যায়।

3.1 WebAssembly Global Example

WebAssembly (WASM) কোড:

(module
  (global $myGlobal i32 (i32.const 100))  ;; একটি গ্লোবাল ভ্যারিয়েবল
  (export "myGlobal" (global $myGlobal))  ;; গ্লোবাল এক্সপোর্ট
)

এখানে, myGlobal নামক একটি গ্লোবাল ভ্যারিয়েবল WebAssembly মডিউল থেকে এক্সপোর্ট করা হয়েছে।

3.2 JavaScript থেকে Global Variable Access

fetch('your_global_program.wasm')  // WebAssembly ফাইল লোড করা
  .then(response => response.arrayBuffer())  // বাইটে রূপান্তর
  .then(bytes => WebAssembly.instantiate(bytes))  // ইনস্ট্যানশিয়েট করা
  .then(wasmModule => {
      const { instance } = wasmModule;
      
      // গ্লোবাল ভ্যারিয়েবল এক্সপোর্ট করা
      console.log('Global Variable from WASM:', instance.exports.myGlobal);  // আউটপুট হবে 100
  })
  .catch(console.error);

এখানে, myGlobal গ্লোবাল ভ্যারিয়েবলটি WebAssembly মডিউল থেকে এক্সপোর্ট করা হচ্ছে এবং JavaScript কোডে তা এক্সেস করা হচ্ছে।


Summary

  • Function Exporting: WebAssembly মডিউল থেকে ফাংশন এক্সপোর্ট করে JavaScript তে কল করা যায়। এই ফাংশনগুলো প্রিমিটিভ বা জটিল ডেটা প্রসেস করে JavaScript এ পাঠাতে পারে।
  • Memory Exporting: WebAssembly মডিউল মেমরি এক্সপোর্ট করে, যা JavaScript এ অ্যাক্সেস করা যায় এবং ডেটা শেয়ার করা সম্ভব।
  • Global Variable Exporting: গ্লোবাল ভ্যারিয়েবল এক্সপোর্ট করে ডেটা JavaScript এর মাধ্যমে অ্যাক্সেস করা যেতে পারে।

WebAssembly এর মাধ্যমে ডেটা এক্সপোর্ট করার কৌশলগুলি আপনাকে JavaScript এবং WebAssembly মডিউলগুলির মধ্যে কার্যকরী ইন্টারঅ্যাকশন তৈরি করতে সাহায্য করে, যার ফলে উন্নত পারফরম্যান্স এবং ফিচার রিচ ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...