Skip to content

Ağ kağız ​

Bu sənəd WSL Dashboard-un memarlıq dizaynını, texnologiya seçimlərini və əsas funksiyaların arxasındakı icra məntiqini dərindən araşdırır; tərtibatçılar və qabaqcıl istifadəçilər üçün texniki dərinlik perspektivi təqdim edir.

1. Memarlıq icmalı ​

WSL Dashboard klassik reaktiv UI idarəli + asinxron arxa plan tapşırıqları memarlığını tətbiq edir; Rust dilinin tip sistemi və sahiblik modelindən istifadə edərək yaddaş təhlükəsizliyi və yüksək paralel performans təmin edir.

Əsas komponentlər ​

  • Frontend (UI): Slint əsaslı deklarativ interfeys. UI thread render və istifadəçi qarşılıqlı əlaqəsinə cavabdehdir.
  • Backend (Runtime): Tokio əsaslı asinxron iş mühiti. Sistem əmrlərinin (CLI) paylanmasına, icrasına, fayl I/O və şəbəkə dinləməsinə cavabdehdir.
  • Kommunikasiya: UI thread və asinxron tapşırıqlar Channel (MPSC) və paylaşılmış vəziyyət (Arc/Mutex/RwLock) vasitəsilə səmərəli, thread-safe şəkildə əlaqə saxlayır.

2. Texnologiya seçimi əsasları ​

Niyə Rust? ​

  • Performans: Sıfır xərcli abstraksiyalar, yerli maşın koduna kompilyasiya, GC sarsıntısı yoxdur.
  • Yaddaş təhlükəsizliyi: Buffer daşqınları və data yarışları kompilyasiya zamanı aradan qaldırılır; bu, aşağı səviyyəli sistem əməliyyatları (məs. disk köçürmə, şəbəkə konfiqurasiyası) yerinə yetirən alətlər üçün kritik əhəmiyyət daşıyır.
  • İkili ölçü: Bütün asılılıqların statik bağlanması, tək fayllı portativ icra olunan proqram istehsal edir.

Niyə Slint + Skia? ​

  • Deklarativ sintaksis: İnterfeys təsviri məntiqdən ayrılır, kodun saxlanması asanlaşır.
  • Skia renderi: GPU sürətləndirməsindən (Skia mühərriki vasitəsilə) birbaşa yararlanır; subpiksel səviyyəsində aydın mətn və hamar animasiyalar təqdim edir.
  • Aşağı yük: Electron və ya WPF ilə müqayisədə Slint-in işləmə yükü son dərəcə aşağıdır.

3. Əsas texniki icralar ​

3.1 WSL instanslarının aşkarlanması və təhlili ​

Proqram wsl.exe --list --verbose çağırıb çıxışını təhlil edərək (UTF-16 kodlaşdırma ilə işləmə) instans vəziyyətlərini real vaxtda əldə edir.

  • Aşağı səviyyəli dekodlaşdırma: Xüsusi hazırlanmış səmərəli kodlayıcı/dekoder; müxtəlif regional parametrli Windows mühitlərində çıxışın düzgün təhlilini təmin edir.
  • Vəziyyət sinxronizasiyası: Zamanlanmış sorğu + əməliyyat tetikli ikili sinxronizasiya mexanizmi.

3.2 Disk görüntüsü köçürmə (VHDX Move) ​

Köçürmə funksiyası WSL-nin idxal/ixrac mexanizmindən istifadə edir, lakin yüksək abstraksiya və atomik işləmə ilə.

  • Əməliyyat zəmanəti: Köçürmə başlamazdan əvvəl proqram hədəf distributivi qarşılıqlı kilid (Mutex) ilə kilidləyir; paralel əməliyyatların məlumat korlanmasına səbəb olmasının qarşısını alır.
  • Avtomatik qeydiyyat: Köçürmə tamamlandıqdan sonra proqram VHDX yolunu avtomatik yönləndirir və distributivi yenidən qeydiyyatdan keçirir; əl ilə müdaxilə tələb olunmur.

3.3 Port yönləndirmə və firewall avtomatlaşdırması ​

Şəbəkə funksiyası sadə bir netsh interface portproxy çağırışı deyil.

  • Qayda həyat dövrü idarəetməsi: Proqram mövcud firewall qaydalarını avtomatik aşkarlayır. İstifadəçi yönləndirmə yaratdıqda, proqram Windows API və ya CLI ilə daxil olan istisna qaydalarını sinxron yaradır.
  • Avtomatik IP əldə etmə: wsl hostname -I nəticələrini təhlil edərək host və instans arasındakı virtual şəbəkə IP-lərini avtomatik xəritələyir.

3.4 USBIP inteqrasiyası ​

usbipd-win komanda sətri interfeysindən yararlanır.

  • İcazə yüksəltmə idarəetməsi: Bağlama əməliyyatı administrator icazələri tələb edir; arxa plan məntiqi zərif UAC icazə yüksəltmə sorğusu ötürməsi həyata keçirir.
  • Vəziyyət maşını: Daxildə USB cihaz əlaqə vəziyyət maşını saxlanılır; Attach/Detach proseslərinin izlənilməsini təmin edir.

3.5 Resurs monitorinqi və yüngüllük ​

Proqram öz resurs istifadəsini izləmək üçün Windows yerli API-lərini (məs. GetProcessMemoryInfo) çağırır.

  • Həddindən artıq yüngül: Trayda səssiz rejimdə proqram lazımsız UI resurslarını aktiv şəkildə boşaldır. İngilis dili kimi standart simvol dəstlərində yaddaş istifadəsi 10MB qədər aşağı ola bilər; Çin/Yapon/Koreya kimi mürəkkəb simvol dəstlərində daha böyük şrift render keşinin yüklənməsi səbəbindən istifadə təxminən 38MB civarındadır.

4. Performans optimallaşdırma göstəriciləri ​

GöstəriciHədəf/ölçülmüşOptimallaşdırma üsulları
Başlanğıc sürəti< 500msƏvvəlcədən kompilyasiya edilmiş Slint interfeysi, işləmə zamanı təhlili azaldır.
Əsas yaddaş (tray)~10MBArxa plan sorğu tezliyini minimuma endirir, render keşini tələbata uyğun boşaldır.
CPU istifadəsi (boş)< 0.1%Windows hadisə yönümlü model istifadə edir, boş dövr sorğusu etmir.
Render kadr sürəti60 FPSSkia GPU sürətləndirməsi, subpiksel səviyyəsində antialiasing.

5. Arxa plan tapşırıq paylanması məntiqi ​

UI axıcılığını təmin etmək üçün bütün vaxt aparan əməliyyatlar (məs. VHDX ixracı) asinxron tapşırıqlarla paylanır:

  1. Sorğunun paketlənməsi: UI thread istifadəçi əməliyyatını Command mesajına paketləyir.
  2. Mesaj kanalı: tokio::sync::mpsc vasitəsilə arxa plan tapşırıq işləyicisinə göndərir.
  3. Vəziyyətin geri qaytarılması: Arxa plan tapşırığı tamamlandıqdan sonra callback və ya paylaşılmış vəziyyət vasitəsilə UI yenilənir. Bu dizayn hətta bir neçə GB-lıq ehtiyat nüsxə tapşırıqları işlənərkən də interfeysin istifadəçi kliklərinə real vaxtda cavab verməsini təmin edir.

6. Təhlükəsizlik mülahizələri ​

  • Atomik əməliyyatlar: Kritik instans silinməsi və köçürmə üçün ilkin yoxlama həyata keçirilir.
  • UAC icazə yüksəltmə idarəetməsi: Yalnız lazım olduqda (məs. USB cihaz bağlama) icazə tələb edir; minimum imtiyaz prinsipinə əməl edir.
  • Yerli saxlama: Konfiqurasiya yalnız yerli ~\.wsldashboard qovluğunda saxlanılır, bulud sinxronizasiyası yoxdur; istifadəçi məxfiliyi qorunur.