Mister Download Manager
  1. Beranda
  2. Bantuan
  3. Arsitektur

Arsitektur

Bagaimana bagian-bagian Mister Download Manager saling terhubung.

Crates

Jalur Crate Peran
crates/engine mdm-engine Mengunduh satu berkas melalui HTTP(S) atau FTP(S): probe, perencana segmen, pekerja koneksi, status lanjutkan, batas per host, pembatas kecepatan, checksum, skrip proxy
crates/app mdm-app Aplikasi desktop (misterdownloadmanager.exe, egui): daftar, kategori, antrean, penjadwal, dialog, baki, pengaturan
crates/cli mdm-cli Unduhan tanpa kepala dengan progres (get, resume)
crates/mcp mdm-mcp Server MCP (misterdownloadmanager-mcp): daftar asisten AI, menambah dan mengontrol unduhan aplikasi yang sedang berjalan melalui API otomatisasi
crates/nmhost mdm-nmhost Host pesan asli peramban: mengambil unduhan yang ditangkap dari ekstensi dan menyerahkannya ke aplikasi
crates/ipc mdm-ipc Saluran satu instans (soket lokal yang dilindungi token), folder data, dan aturan penangkapan yang dibagikan oleh aplikasi dan host
crates/tools mdm-tools Halaman video melalui yt-dlp dan ffmpeg (dijalankan sebagai program terpisah)
crates/crash mdm-crash Laporan kerusakan dan macet: proses monitor, minidump di luar proses, tumpukan bersimbol, teks laporan dan log rilis (crash-reports.md)
crates/torrent mdm-torrent BitTorrent dan tautan magnet melalui librqbit
crates/labserver mdm-labserver Server HTTP Range dengan log permintaan dan injeksi kesalahan, dan server FTP/FTPS dengan kesalahannya sendiri, untuk pengujian dan tolok ukur
extension/ — Ekstensi Chromium (MV3) dan Firefox
docs/ — Panduan pengguna dan tutorial (Bantuan membukanya), berkas ini, data tolok ukur
website/ — Halaman situs web masa depan (belum diterbitkan)

Ketergantungan mengarah ke dalam: app, cli, mcp dan nmhost menggunakan engine dan ipc; mesin tidak tahu apa-apa tentang UI. Aplikasi hanya melihat mesin melalui peristiwa-peristiwanya (progres, cuplikan tabel segmen, selesai, gagal).

Mesin

Download
 ├─ probe()              size, resumable?, validators (ETag / Last-Modified), file name
 ├─ Planner (pure)       segment table: when a connection is free, the largest remaining
 │                       part is split in half (planner.rs, tested by random simulation)
 ├─ Worker × N           one HTTP/1.1 connection each, reused across segments; slow ones
 │                       are dropped and their part re-split
 │    └─ writes at its offset into <name>.mdm.part (created sparse)
 ├─ HostLimits           learns how many connections each server accepts
 ├─ Limiter (shared)     per-download and global token buckets
 ├─ State                segment table saved atomically (craft-atomic) for crash-safe resume
 └─ events → channel     Progress, Done, Failed

Ketika setiap segmen selesai, berkas bagian diperiksa terhadap ukuran yang diharapkan dan diganti namanya ke tempatnya; tanggal berkas dapat mengikuti tanggal server.

FTP dan FTPS (ftp.rs) melalui perencana, pekerja, dan status yang sama: segmen adalah REST + RETR pada sesi kontrol alih-alih GET, SIZE dan MDTM yang berjangka menggantikan header, dan sesi dikumpulkan per unduhan dan digunakan kembali di antara segmen.

Aplikasi

Satu jendela egui yang dilukis ke koordinat piksel tetap, ditambah satu viewport langsung per dialog. app.rs menyimpan status (unduhan, antrean, pengaturan, pilihan daftar) dan mengubah perintah menu, bilah alat, kunci, dan IPC menjadi tindakan. Setiap dialog adalah modulnya sendiri dan mengembalikan Outcome (terbuka, tertutup, selesai dengan nilai). Panggilan khusus Windows terbatas pada win32.rs dan rekan-rekan Linux dan macOS-nya pada unix.rs (dimulai dengan sesi, host peramban, suara, tampilkan di folder, penangan kerusakan); setiap berkas lain aman, Rust portabel. Font berasal dari sistem: folder Font Windows, font sistem macOS, fontconfig di Linux (theme.rs).

Daftar unduhan dan pengaturan disimpan secara atomik ke %APPDATA%\misterdownloadmanager\ (downloads.json). Host peramban membaca berkas yang sama untuk aturan penangkapan, sehingga perubahan di Opsi berlaku untuk unduhan yang ditangkap berikutnya.

Integrasi browser

page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app

Ekstensi menanyakan host jenis berkas mana yang akan diambil, memeriksa setiap unduhan terhadapnya, dan membatalkan unduhan peramban hanya setelah aplikasi menerimanya; jika tidak, peramban tetap menyimpannya.

Terjemahan

Setiap teks yang ditampilkan UI melalui crate::i18n (katalog craft-i18n, i18n/<locale>.tsv). tools/i18n/extract.py membangun kembali i18n/en.tsv dari sumber, dengan catatan untuk penerjemah pada setiap teks (apa itu, di mana ditampilkan, placeholder-nya).

Pengujian dan tolok ukur

cargo testmenjalankan pengujian unit dan unduhan ujung-ke-ujung terhadap mdm-labserver dengan kesalahan yang disuntikkan (koneksi lambat, terputus, dan ditolak, server tanpa rentang, berkas yang berubah). tools/bench menjalankan perbandingan kecepatan yang diterbitkan; data mentahnya ada di docs/bench/.

Gratis, sumber terbuka, tanpa iklan, tanpa uji coba.

Unduh Mister Download Manager