Skip to content

শ্বেতপত্র ​

এই ডকুমেন্ট WSL Dashboard-এর আর্কিটেকচার ডিজাইন, টেকনিক্যাল সিলেকশন ও মূল ফিচারের নিম্নস্তরের বাস্তবায়ন লজিক গভীরভাবে অন্বেষণ করে, ডেভেলপার ও অ্যাডভান্সড ব্যবহারকারীদের জন্য টেকনিক্যাল গভীরতার দৃষ্টিভঙ্গি প্রদানের লক্ষ্যে।

1. আর্কিটেকচার অবলোকন ​

WSL Dashboard ক্লাসিক রিঅ্যাকটিভ UI ড্রিভেন + অ্যাসিংক্রোনাস ব্যাকএন্ড টাস্ক আর্কিটেকচার গ্রহণ করে, Rust ভাষার টাইপ সিস্টেম ও মালিকানা মডেল ব্যবহার করে মেমরি নিরাপত্তা ও উচ্চ সমবর্তিতা পারফরম্যান্স নিশ্চিত করে।

মূল কম্পোনেন্ট ​

  • Frontend (UI): Slint ডিক্লারেটিভ ইন্টারফেসের উপর ভিত্তি করে। UI থ্রেড রেন্ডারিং ও ব্যবহারকারী ইন্টারঅ্যাকশনের জন্য দায়ী।
  • Backend (Runtime): Tokio অ্যাসিংক্রোনাস রানটাইমের উপর ভিত্তি করে। সিস্টেম কমান্ড (CLI) বণ্টন, নির্বাহ, ফাইল I/O ও নেটওয়ার্ক শোনার জন্য দায়ী।
  • Communication: UI থ্রেড ও অ্যাসিংক্রোনাস টাস্ক Channel (MPSC) ও Shared State (Arc/Mutex/RwLock) দিয়ে দক্ষ, থ্রেড-নিরাপদ যোগাযোগ করে।

2. টেকনিক্যাল সিলেকশনের কারণ ​

কেন Rust বেছে নেওয়া হলো? ​

  • পারফরম্যান্স: শূন্য-খরচ অ্যাবস্ট্রাকশন, নেটিভ মেশিন কোডে কম্পাইল, কোনো GC জিটার নেই।
  • মেমরি নিরাপত্তা: কম্পাইল-টাইমে বাফার ওভারফ্লো ও ডেটা রেস দূর করে, সিস্টেম নিম্ন-স্তরের অপারেশন (যেমন ডিস্ক মাইগ্রেশন, নেটওয়ার্ক কনফিগারেশন) যুক্ত টুলের জন্য অত্যন্ত গুরুত্বপূর্ণ।
  • বাইনারি আকার: সব নির্ভরতা স্ট্যাটিকভাবে লিংক করে, একক-ফাইল পোর্টেবল এক্সিকিউটেবল উৎপন্ন করে।

কেন Slint + Skia বেছে নেওয়া হলো? ​

  • ডিক্লারেটিভ সিনট্যাক্স: ইন্টারফেস বিবরণ ও লজিক আলাদা, কোড সহজে রক্ষণাবেক্ষণযোগ্য।
  • Skia রেন্ডারিং: সরাসরি GPU এক্সিলারেশন (Skia ইঞ্জিনের মাধ্যমে) ব্যবহার করে, সাবপিক্সেল স্বচ্ছতার টেক্সট ও মসৃণ অ্যানিমেশন প্রভাব।
  • কম ওভারহেড: Electron বা WPF-এর তুলনায়, Slint-এর রানটাইম ওভারহেড অত্যন্ত কম।

3. মূল টেকনিক্যাল বাস্তবায়ন ​

3.1 WSL ইনস্ট্যান্স শনাক্তকরণ ও পার্সিং ​

অ্যাপ wsl.exe --list --verbose কল করে এবং তার আউটপুট (UTF-16 এনকোডিং হ্যান্ডলিংসহ) পার্স করে রিয়েল-টাইমে ইনস্ট্যান্স স্থিতি পায়।

  • নিম্নস্তরের ডিকোডিং: নিজস্ব দক্ষ এনকোড/ডিকোড, বিভিন্ন লোকেল সেটিংসের Windows পরিবেশে সঠিক পার্সিং নিশ্চিত করে।
  • স্থিতি সিঙ্ক: নির্ধারিত পোলিং + অপারেশন-ট্রিগারড দ্বৈত সিঙ্ক্রোনাইজেশন মেকানিজম।

3.2 ডিস্ক ইমেজ মাইগ্রেশন (VHDX Move) ​

মাইগ্রেশন ফিচার WSL-এর ইমপোর্ট/এক্সপোর্ট মেকানিজম ব্যবহার করে, তবে অত্যন্ত অ্যাবস্ট্রাক্ট ও অ্যাটমিক প্রসেসিং করে।

  • ট্রানজেকশনাল গ্যারান্টি: মাইগ্রেশন শুরুর আগে, অ্যাপ মিউটেক্স (Mutex) দিয়ে লক্ষ্য ডিস্ট্রো লক করে, সমবর্তী অপারেশনে ডেটা ক্ষতি রোধ করে।
  • স্বয়ংক্রিয় রেজিস্ট্রেশন: মাইগ্রেশন শেষে, অ্যাপ স্বয়ংক্রিয়ভাবে VHDX পাথ পুনঃনির্দেশ করে ও ডিস্ট্রো পুনরায় রেজিস্টার করে, ব্যবহারকারীর ম্যানুয়াল হস্তক্ষেপের প্রয়োজন নেই।

3.3 পোর্ট ফরওয়ার্ডিং ও ফায়ারওয়াল অটোমেশন ​

নেটওয়ার্ক ফিচার শুধু সাধারণ netsh interface portproxy কল নয়।

  • নিয়ম লাইফসাইকেল ম্যানেজমেন্ট: অ্যাপ বিদ্যমান ফায়ারওয়াল নিয়ম স্বয়ংক্রিয়ভাবে শনাক্ত করে। ব্যবহারকারী ফরওয়ার্ডিং তৈরি করলে, অ্যাপ Windows API বা CLI দিয়ে ইনবাউন্ড এক্সেপশন নিয়ম সিঙ্কভাবে তৈরি করে।
  • স্বয়ংক্রিয় IP প্রাপ্তি: wsl hostname -I ফলাফল পার্স করে, হোস্ট ও ইনস্ট্যান্সের মধ্যে ভার্চুয়াল নেটওয়ার্ক IP স্বয়ংক্রিয়ভাবে ম্যাপ করে।

3.4 USBIP ইন্টিগ্রেশন ​

usbipd-win-এর কমান্ড-লাইন ইন্টারফেস ব্যবহার করে।

  • প্রমোশন হ্যান্ডলিং: বাইন্ড অপারেশনে অ্যাডমিন অনুমতি প্রয়োজন, ব্যাকএন্ড লজিক সুন্দর UAC প্রমোশন রিকোয়েস্ট ফরওয়ার্ডিং বাস্তবায়ন করে।
  • স্টেট মেশিন: অভ্যন্তরীণভাবে USB ডিভাইস কানেকশন স্টেট মেশিন রক্ষণাবেক্ষণ করে, Attach/Detach প্রক্রিয়ার ট্রেসেবিলিটি নিশ্চিত করে।

3.5 রিসোর্স মনিটরিং ও লাইটওয়েট ​

অ্যাপ Windows নেটিভ API (যেমন GetProcessMemoryInfo) কল করে নিজের রিসোর্স ব্যবহার মনিটর করে।

  • অত্যন্ত লাইটওয়েট: ট্রে সাইলেন্ট মোডে, অ্যাপ অপ্রয়োজনীয় UI রিসোর্স সক্রিয়ভাবে মুক্ত করে। ইংরেজির মতো স্ট্যান্ডার্ড ক্যারেক্টার সেটের জন্য, মেমরি ব্যবহার 10MB পর্যন্ত কম হতে পারে; চীনা, জাপানি, কোরিয়ানর মতো জটিল ক্যারেক্টার সেটে, বড় ফন্ট রেন্ডারিং ক্যাশ লোডের প্রয়োজন বলে, ব্যবহার প্রায় 38MB।

4. পারফরম্যান্স অপটিমাইজেশন মেট্রিক্স ​

মেট্রিকলক্ষ্য/পরিমাপিতঅপটিমাইজেশন পদ্ধতি
স্টার্টআপ গতি< 500msSlint ইন্টারফেস প্রি-কম্পাইল, রানটাইম পার্সিং কম।
মৌলিক মেমরি (ট্রে)~10MBব্যাকগ্রাউন্ড পোলিং ফ্রিকোয়েন্সি ন্যূনতম, রেন্ডারিং ক্যাশ চাহিদা অনুযায়ী মুক্ত।
CPU ব্যবহার (স্থির)< 0.1%Windows ইভেন্ট-ড্রিভেন মডেল, খালি লুপ পোলিং এড়ানো।
রেন্ডারিং ফ্রেম রেট60 FPSSkia GPU এক্সিলারেশন, সাবপিক্সেল অ্যান্টি-আলিয়াসিং রেন্ডারিং।

5. ব্যাকএন্ড টাস্ক বণ্টন লজিক ​

UI-এর মসৃণতা নিশ্চিত করতে, সব সময়সাপেক্ষ অপারেশন (যেমন VHDX এক্সপোর্ট) অ্যাসিংক্রোনাস টাস্ক বণ্টনের মাধ্যমে চলে:

  1. রিকোয়েস্ট এনক্যাপসুলেশন: UI থ্রেড ব্যবহারকারী অপারেশনকে Command মেসেজে এনক্যাপসুলেট করে।
  2. মেসেজ চ্যানেল: tokio::sync::mpsc দিয়ে ব্যাকএন্ড টাস্ক প্রসেসরে পাঠায়।
  3. স্থিতি ফেরত: ব্যাকএন্ড টাস্ক শেষে, কলব্যাক বা শেয়ার্ড স্টেট দিয়ে UI আপডেট করে। এই ডিজাইন নিশ্চিত করে এমনকি কয়েক GB ব্যাকআপ টাস্ক চলাকালীনও ইন্টারফেস রিয়েল-টাইমে ব্যবহারকারীর ক্লিকে সাড়া দেয়।

6. নিরাপত্তা বিবেচনা ​

  • অ্যাটমিক অপারেশন: মূল ইনস্ট্যান্স আনইনস্টল ও মাইগ্রেশনের জন্য, প্রি-ভ্যালিডেশন বাস্তবায়িত।
  • UAC প্রমোশন ম্যানেজমেন্ট: শুধু প্রয়োজন হলে (যেমন USB ডিভাইস বাইন্ড) অনুমতি চায়, ন্যূনতম অনুমতি নীতি অনুসরণ করে।
  • লোকাল স্টোরেজ: কনফিগারেশন শুধু লোকাল ~\.wsldashboard-এ সংরক্ষিত, কোনো ক্লাউড সিঙ্ক নেই, ব্যবহারকারীর গোপনীয়তা রক্ষা করে।