Electron অ্যাপ্লিকেশনটি Main Process এবং Renderer Process এর মধ্যে যোগাযোগের জন্য IPC (Inter-Process Communication) ব্যবহার করে। এই মেসেজিংয়ের মাধ্যমে, আপনি Asynchronous (অসিঙ্ক্রোনাস) এবং Synchronous (সিঙ্ক্রোনাস) দুই ধরনের মেসেজিং ব্যবহার করতে পারেন।
আসুন এখন Asynchronous এবং Synchronous মেসেজিং এর মধ্যে পার্থক্য এবং ব্যবহার দেখে নিই।
Asynchronous মেসেজিং
Asynchronous মেসেজিং এর মাধ্যমে, Main Process এবং Renderer Process এর মধ্যে মেসেজ পাঠানোর পর, পাঠানো মেসেজের সাড়া আসার জন্য অপেক্ষা করতে হয় না। এর ফলে, অ্যাপের অন্যান্য কাজ চলতে থাকে এবং পরে যখন সাড়া আসে, তখন তা প্রাপ্ত হয়। এটি অ্যাপের কার্যকারিতা আরও দ্রুত এবং ফ্লুয়েন্ট (smooth) করে তোলে।
Asynchronous মেসেজিং উদাহরণ:
Main Process (main.js):
const { ipcMain } = require('electron');
ipcMain.on('async-message', (event, arg) => {
console.log('Renderer Process থেকে আসা বার্তা:', arg);
// Asynchronous সাড়া পাঠানো
setTimeout(() => {
event.reply('async-reply', 'Main Process থেকে আসা asynchronous সাড়া!');
}, 2000); // 2 সেকেন্ড পর সাড়া পাঠানো
});
Renderer Process (index.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Asynchronous Messaging</title>
</head>
<body>
<h1>Asynchronous Messaging উদাহরণ</h1>
<button id="sendAsyncBtn">Asynchronous মেসেজ পাঠাও</button>
<p id="response"></p>
<script>
const { ipcRenderer } = require('electron');
document.getElementById('sendAsyncBtn').addEventListener('click', () => {
// Asynchronous মেসেজ পাঠানো
ipcRenderer.send('async-message', 'Hello from Renderer!');
});
// Asynchronous সাড়া গ্রহণ
ipcRenderer.on('async-reply', (event, message) => {
document.getElementById('response').textContent = message;
});
</script>
</body>
</html>
ব্যাখ্যা:
- Main Process: Renderer থেকে আসা মেসেজ গ্রহণ করে এবং 2 সেকেন্ড পরে একটি সাড়া পাঠায়।
- Renderer Process: সাড়া আসার পর তা UI-তে প্রদর্শিত হয়।
- এই প্রক্রিয়ায়, Renderer Process মেসেজ পাঠানোর পর আর অপেক্ষা করে না, এবং সাড়া আসলে তা গ্রহণ করা হয়।
Synchronous মেসেজিং
Synchronous মেসেজিং এর মাধ্যমে, Main Process এবং Renderer Process এর মধ্যে মেসেজ পাঠানোর পর, Renderer Process সাড়া পাওয়ার আগে আর কোনো কাজ করতে পারে না। এটি ব্লকিং (Blocking) মেসেজিং হিসেবে কাজ করে, যার অর্থ যে পর্যন্ত সাড়া না পাওয়া যায়, তখন পর্যন্ত Renderer Process থেমে থাকে।
Synchronous মেসেজিং উদাহরণ:
Main Process (main.js):
const { ipcMain } = require('electron');
ipcMain.on('sync-message', (event, arg) => {
console.log('Renderer Process থেকে আসা বার্তা:', arg);
// Synchronous সাড়া পাঠানো
event.returnValue = 'Main Process থেকে আসা synchronous সাড়া!';
});
Renderer Process (index.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Synchronous Messaging</title>
</head>
<body>
<h1>Synchronous Messaging উদাহরণ</h1>
<button id="sendSyncBtn">Synchronous মেসেজ পাঠাও</button>
<p id="response"></p>
<script>
const { ipcRenderer } = require('electron');
document.getElementById('sendSyncBtn').addEventListener('click', () => {
// Synchronous মেসেজ পাঠানো এবং সাড়া গ্রহণ
const response = ipcRenderer.sendSync('sync-message', 'Hello from Renderer!');
document.getElementById('response').textContent = response;
});
</script>
</body>
</html>
ব্যাখ্যা:
- Main Process: Renderer Process থেকে আসা মেসেজ গ্রহণ করে এবং সাড়া প্রদান করে।
- Renderer Process: সাড়া পাওয়ার আগে অন্যান্য কাজ করতে পারে না, এটি ব্লক হয়ে থাকে।
Asynchronous এবং Synchronous মেসেজিং এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Asynchronous (অসিঙ্ক্রোনাস) মেসেজিং | Synchronous (সিঙ্ক্রোনাস) মেসেজিং |
|---|---|---|
| প্রক্রিয়া | মেসেজ পাঠানো পর অপেক্ষা করার প্রয়োজন নেই। | মেসেজ পাঠানোর পর সাড়া পাওয়ার আগে কিছু করা যায় না। |
| ব্লকিং | ব্লকিং নয়। | ব্লকিং হয়। |
| উদাহরণ | event.reply() বা setTimeout() দিয়ে সাড়া। | event.returnValue দিয়ে সাড়া। |
| ব্যবহার | ব্যাকগ্রাউন্ডে কাজ চলতে থাকে, সাড়া পরে পাওয়া যায়। | শুধুমাত্র সাড়া পাওয়ার পরে পরবর্তী কাজ করা হয়। |
সারাংশ
- Asynchronous মেসেজিং একটি দক্ষ উপায় যখন আপনি চাইবেন আপনার অ্যাপ্লিকেশন সাড়া আসার সময় অন্যান্য কাজ করতে সক্ষম হোক। এটি ব্যাকগ্রাউন্ডে কাজ করার সুযোগ দেয়।
- Synchronous মেসেজিং ব্যবহার করা হয় যখন আপনি নিশ্চিত করতে চান যে, সাড়া পাওয়ার আগে পরবর্তী কোনো কাজ না হয়ে থাকুক। এটি সাধারণত ছোট অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে দ্রুত সাড়া পাওয়ার প্রয়োজন হয়।
এটি আপনাকে আপনার অ্যাপ্লিকেশনের কার্যকারিতা এবং প্রয়োজন অনুযায়ী মেসেজিং ব্যবহারের জন্য সিদ্ধান্ত নিতে সাহায্য করবে।
Read more