Mister Download Manager
  1. Ana Sayfa
  2. Yardım
  3. Mimari

Mimari

Mister Download Manager'ın parçaları nasıl bir araya geliyor.

Bileşenler

Yol Bileşen Rol
crates/engine mdm-engine HTTP(S) veya FTP(S) üzerinden tek bir dosyayı indirir: yoklama, segment planlayıcı, bağlantı çalışanları, devam durumu, ana bilgisayar başına sınırlar, hız sınırlayıcı, sağlama toplamları, proxy betikleri
crates/app mdm-app Masaüstü uygulaması (misterdownloadmanager.exe, egui): liste, kategoriler, kuyruklar, zamanlayıcı, iletişim kutuları, tepsi, ayarlar
crates/cli mdm-cli İlerleme göstergeli başsız indirmeler (get, resume)
crates/mcp mdm-mcp MCP sunucusu (misterdownloadmanager-mcp): AI asistanları, çalışan uygulamanın indirmelerini otomasyon API'si aracılığıyla listeler, ekler ve kontrol eder
crates/nmhost mdm-nmhost Tarayıcının yerel mesajlaşma ana bilgisayarı: yakalanan indirmeleri uzantıdan alır ve uygulamaya iletir
crates/ipc mdm-ipc Tek örnekli kanal (jeton korumalı yerel soket), veri klasörü ve uygulama ile ana bilgisayar tarafından paylaşılan yakalama kuralları
crates/tools mdm-tools yt-dlp ve ffmpeg aracılığıyla video sayfaları (ayrı programlar olarak çalışır)
crates/crash mdm-crash Çökme ve donma raporları: izleyici süreci, işlem dışı minidump'lar, sembolize edilmiş yığınlar, raporun metni ve sürüm günlükleri (crash-reports.md)
crates/torrent mdm-torrent librqbit aracılığıyla BitTorrent ve magnet bağlantıları
crates/labserver mdm-labserver İstek günlüğü ve hata enjeksiyonu olan bir HTTP Range sunucusu ve testler ve karşılaştırmalar için kendi hataları olan bir FTP/FTPS sunucusu
extension/ — Chromium (MV3) ve Firefox uzantısı
docs/ — Kullanım kılavuzu ve eğitimler (Yardım onları açar), bu dosya, karşılaştırma verileri
website/ — Gelecekteki bir web sitesinin sayfaları (henüz yayınlanmadı)

Bağımlılıklar içe doğru işaret eder: app, cli, mcp ve nmhost, engine ve ipc kullanır; motor, kullanıcı arayüzü hakkında hiçbir şey bilmez. Uygulama, motoru yalnızca olayları (ilerleme, segment tablosu anlık görüntüleri, tamamlandı, başarısız oldu) aracılığıyla görür.

Motor

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

Her segment tamamlandığında, parça dosyası beklenen boyuta göre kontrol edilir ve yerine yeniden adlandırılır; dosyanın tarihi sunucunun tarihini takip edebilir.

FTP ve FTPS (ftp.rs) aynı planlayıcı, çalışanlar ve durum üzerinden geçer: bir segment, aralıklı bir GET yerine bir kontrol oturumunda REST + RETR'tür, SIZE ve MDTM başlıklar için kullanılır ve oturumlar indirme başına havuza alınır ve segmentler arasında yeniden kullanılır.

Uygulama

Sabit piksel koordinatlarına boyanmış tek bir egui penceresi, artı iletişim kutusu başına bir anlık görüntü alanı. app.rs durumu (indirmeler, kuyruklar, ayarlar, listenin seçimi) tutar ve menü, araç çubuğu, tuş ve IPC komutlarını eylemlere dönüştürür. Her iletişim kutusu kendi modülüdür ve bir Outcome (açık, kapalı, bir değerle tamamlandı) döndürür. Yalnızca Windows çağrıları win32.rs ile sınırlıdır ve Linux ve macOS karşılıkları unix.rs ile sınırlıdır (oturumla başlayarak, tarayıcıların ana bilgisayarı, sesler, klasörde göster, çökme işleyicisi); diğer her dosya güvenli, taşınabilir Rust'tır. Yazı tipleri sistemden gelir: Windows'un Yazı Tipleri klasörü, macOS'un sistem yazı tipleri, Linux'ta fontconfig (theme.rs).

İndirme listesi ve ayarlar %APPDATA%\misterdownloadmanager\ (downloads.json) konumuna atomik olarak kaydedilir. Tarayıcı ana bilgisayarı, yakalama kuralları için aynı dosyayı okur, bu nedenle Seçenekler'deki bir değişiklik bir sonraki yakalanan indirmeye uygulanır.

Tarayıcı entegrasyonu

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

Uzantı, ana bilgisayara hangi dosya türlerini alacağını sorar, her indirmeyi bunlara göre kontrol eder ve tarayıcının indirmesini yalnızca uygulama kabul ettikten sonra iptal eder; aksi takdirde tarayıcı onu tutar.

Çeviriler

Kullanıcı arayüzünün gösterdiği her metin crate::i18n (craft-i18n katalogları, i18n/<locale>.tsv) aracılığıyla geçer. tools/i18n/extract.py, her metin için çevirmenlere bir not (ne olduğu, nerede gösterildiği, yer tutucuları) ile birlikte i18n/en.tsv'ü kaynaktan yeniden oluşturur.

Testler ve karşılaştırmalar

cargo testEnjekte edilmiş hatalarla (yavaş, düşen ve reddedilen bağlantılar, aralıksız sunucular, değişen dosyalar) mdm-labserver'e karşı birim testleri ve uçtan uca indirmeler çalıştırır. tools/bench yayınlanan hız karşılaştırmasını çalıştırır; ham verileri docs/bench/'tedir.

Ücretsiz, açık kaynak, reklamsız, deneme sürümü yok.

Mister Download Manager İndir