Skip to content

হোয়াইটপেপার

এই নথিটি WSL Dashboard-এর স্থাপত্য নকশা, প্রযুক্তি পছন্দ এবং মূল বৈশিষ্ট্যগুলির অন্তর্নিহিত বাস্তবায়ন যুক্তির গভীর একটি পর্যালোচনা প্রদান করে, যা প্রযুক্তিগত দৃষ্টিকোণ অনুসন্ধানকারী ডেভেলপার এবং উন্নত ব্যবহারকারীদের জন্য তৈরি।

1. স্থাপত্য পর্যালোচনা

WSL Dashboard একটি ক্লাসিক প্রতিক্রিয়াশীল UI-চালিত + অ্যাসিঙ্ক ব্যাকএন্ড টাস্ক স্থাপত্য গ্রহণ করে, যা Rust-এর টাইপ সিস্টেম এবং মালিকানা মডেলকে কাজে লাগিয়ে মেমরি নিরাপত্তা এবং উচ্চ-সমবর্তন কার্যক্ষমতা নিশ্চিত করে।

মূল উপাদান

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

2. প্রযুক্তি যুক্তি

কেন Rust?

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

কেন Slint + Skia?

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

3. মূল প্রযুক্তিগত বাস্তবায়ন

3.1 WSL উদাহরণ সনাক্তকরণ এবং পার্সিং

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

  • নিম্ন-স্তরের ডিকোডিং: একটি কাস্টম-নির্মিত, দক্ষ এনকোডার/ডিকোডার বিভিন্ন আঞ্চলিক সেটিংস সহ Windows পরিবেশে সঠিক আউটপুট পার্সিং নিশ্চিত করে।
  • স্টেট সিঙ্ক্রোনাইজেশন: টাইমড পোলিং এবং অপারেশন-ট্রিগার্ড আপডেটের দ্বৈত-সিঙ্ক প্রক্রিয়া ব্যবহার করে।

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

মাইগ্রেশন বৈশিষ্ট্য WSL-এর import/export প্রক্রিয়া কাজে লাগায়, তবে উচ্চ স্তরের বিমূর্ততা এবং পারমাণবিকতা সহ।

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

3.3 পোর্ট ফরওয়ার্ডিং এবং ফায়ারওয়াল স্বয়ংক্রিয়করণ

নেটওয়ার্কিং বৈশিষ্ট্য একটি সাধারণ netsh interface portproxy কলের চেয়ে বেশি।

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

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

usbipd-win কমান্ড-লাইন ইন্টারফেস কাজে লাগায়।

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

3.5 সম্পদ পর্যবেক্ষণ এবং ন্যূনতম পদচিহ্ন

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

  • চরম দক্ষতা: সাইলেন্ট ট্রে মোডে, অ্যাপ সক্রিয়ভাবে অপ্রয়োজনীয় UI সম্পদ মুক্ত করে। স্ট্যান্ডার্ড অক্ষর সেটের (যেমন ইংরেজি) জন্য, মেমরি ব্যবহার 10MB পর্যন্ত কম হতে পারে; জটিল অক্ষর সেটের (যেমন CJK) জন্য, এটি বৃহত্তর ফন্ট রেন্ডারিং ক্যাশের কারণে আনুমানিক 38MB

4. কার্যক্ষমতা বেঞ্চমার্ক

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

5. ব্যাকএন্ড টাস্ক ডিসপ্যাচ যুক্তি

UI প্রতিক্রিয়াশীলতা নিশ্চিত করতে, সমস্ত সময়-ব্যয়ী অপারেশন (যেমন একটি VHDX রপ্তানি) অ্যাসিঙ্ক টাস্ক হিসাবে প্রেরণ করা হয়:

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

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

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