Skip to content

Buku Putih ​

Dokumen iki ngrembug kanthi jero desain arsitektur, pilihan teknologi, sarta logika implementasi tingkat ngisor saka fitur-fitur kunci WSL Dashboard, tujuane menehi perspektif kedalaman teknis kanggo pangembang lan pangguna tingkat lanjut.

1. Gambaran Arsitektur ​

WSL Dashboard nganggo arsitektur klasik UI reaktif minangka penggerak + tugas backend asinkron, nggunakake sistem tipe lan model kepemilikan basa Rust kanggo njamin keamanan memori lan kinerja konkurensi dhuwur.

Komponen Inti ​

  • Frontend (UI): Antarmuka deklaratif adhedhasar Slint. Thread UI tanggung jawab rendering lan interaksi pangguna.
  • Backend (Runtime): Runtime asinkron adhedhasar Tokio. Tanggung jawab nyebarake lan ngeksekusi printah sistem (CLI), I/O file, sarta ngrungokake jaringan.
  • Komunikasi: Thread UI lan tugas asinkron komunikasi kanthi efisien lan aman thread liwat Channel (MPSC) lan Shared State (Arc/Mutex/RwLock).

2. Alasan Pilihan Teknologi ​

Napa Milih Rust? ​

  • Kinerja: Abstraksi biaya nol, dikompilasi dadi kode mesin native, tanpa jitter GC.
  • Keamanan memori: Ngilangi buffer overflow lan data race ing wektu kompilasi, penting banget kanggo piranti sing nglibatake operasi tingkat ngisor sistem (kaya migrasi disk, konfigurasi jaringan).
  • Ukuran biner: Nalinke statis kabeh dependensi, ngasilake program portabel file tunggal.

Napa Milih Slint + Skia? ​

  • Sintaks deklaratif: Katrangan antarmuka kapisah saka logika, kode gampang dirawat.
  • Rendering Skia: Langsung nggunakake akselerasi GPU (liwat mesin Skia), menehi kejelasan teks tingkat sub-piksel lan efek animasi sing mulus.
  • Overhead murah: Dibandhingake Electron utawa WPF, overhead runtime Slint cilik banget.

3. Implementasi Teknologi Kunci ​

3.1 Deteksi lan Parsing Instance WSL ​

Aplikasi entuk status instance kanthi real-time kanthi nimbali wsl.exe --list --verbose lan parse output-nya (nangani encoding UTF-16).

  • Decoding tingkat ngisor: Decoder encoding efisien gaweyan dhewe, njamin output bisa diparsing kanthi bener ing lingkungan Windows kanthi locale beda.
  • Sinkronisasi status: Nganggo mekanisme sinkronisasi ganda polling berkala + pemicu operasi.

3.2 Migrasi Citra Disk (VHDX Move) ​

Fungsi migrasi nggunakake mekanisme impor-ekspor WSL, nanging kanthi abstraksi dhuwur lan pemrosesan atomik.

  • Jaminan transaksional: Sadurunge migrasi diwiwiti, aplikasi ngunci distribusi target liwat Mutex, nyegah kerusakan data amarga operasi konkuren.
  • Registrasi otomatis: Sawise migrasi rampung, aplikasi otomatis ngarahake maneh jalur VHDX lan ndhaptar maneh distribusi, pangguna ora prelu campur tangan manual.

3.3 Port Forwarding lan Otomatisasi Firewall ​

Fungsi jaringan dudu mung panggilan netsh interface portproxy prasaja.

  • Manajemen siklus urip aturan: Aplikasi otomatis ndeteksi aturan firewall sing ana. Nalika pangguna nggawe forwarding, aplikasi nggunakake Windows API utawa CLI kanggo nggawe aturan pengecualian mlebu (inbound) kanthi sinkron.
  • Perolehan IP otomatis: Kanthi parse asil wsl hostname -I, otomatis ngepetake IP jaringan virtual antarane host lan instance.

3.4 Integrasi USBIP ​

Nggunakake antarmuka baris printah usbipd-win.

  • Penanganan peningkatan hak: Operasi bind mbutuhake hak administrator, logika backend ngetrapake penerusan panjalukan peningkatan UAC sing elegan.
  • State machine status: Njaga state machine koneksi piranti USB kanthi internal, njamin keterlacakan proses Attach/Detach.

3.5 Pemantauan Sumber Daya lan Entheng ​

Aplikasi ngawasi panggunaan sumber daya dhewe kanthi nimbali API native Windows (kaya GetProcessMemoryInfo).

  • Entheng banget: Ing mode senyap tray, aplikasi kanthi proaktif mbebasake sumber daya UI sing ora perlu. Kanggo charset standar kaya Inggris, panggunaan memori bisa nganti 10MB; kanggo charset kompleks kaya Cina-Jepang-Korea, amarga perlu mbukak cache rendering font sing gedhe, panggunaan sekitar 38MB.

4. Indikator Optimalisasi Kinerja ​

IndikatorTarget/TerukurCara Optimalisasi
Kacepetan startup< 500msNgompilasi antarmuka Slint luwih dhisik, ngurangi parsing runtime.
Memori dhasar (tray)~10MBNgurangi frekuensi polling latar mburi, mbebasake cache rendering miturut kebutuhan.
Panggunaan CPU (diam)< 0.1%Nggunakake model adhedhasar event Windows, ngindari polling loop kosong.
Frame rate rendering60 FPSAkselerasi GPU Skia, rendering anti-aliasing tingkat sub-piksel.

5. Logika Distribusi Tugas Backend ​

Kanggo njamin kelancaran UI, kabeh operasi sing mbutuhake wektu (kaya ekspor VHDX) disebarake liwat tugas asinkron:

  1. Pembungkusan panjalukan: Thread UI mbungkus operasi pangguna dadi pesen Command.
  2. Kanal pesen: Dikirim menyang panangan tugas backend liwat tokio::sync::mpsc.
  3. Mbalekake status: Sawise tugas backend rampung, UI dianyari liwat callback utawa status bebarengan. Desain iki njamin yen nalika ngolah tugas pencadangan ukuran GB, antarmuka tetep bisa nanggapi klik pangguna kanthi real-time.

6. Pertimbangan Keamanan ​

  • Operasi atomik: Kanggo pencabutan registrasi lan migrasi instance sing kritis, ngetrapake validasi sadurunge.
  • Manajemen peningkatan UAC: Mung njaluk idin nalika perlu (kaya nalika nalèni piranti USB), miturut prinsip hak minimum.
  • Panyimpenan lokal: Konfigurasi mung disimpen lokal ing ~\.wsldashboard, tanpa sinkronisasi cloud apa wae, nglindhungi privasi pangguna.