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 में संग्रहीत होता है, कोई क्लाउड सिंक्रनाइज़ेशन नहीं, उपयोगकर्ता गोपनीयता की रक्षा करता है।