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 ডিরেক্টরিতে সংরক্ষণ করা হয়, কোন ক্লাউড সিঙ্ক নেই, ব্যবহারকারীর গোপনীয়তা রক্ষা করে।