TradeMonitor, müxtəlif formatlarda (CSV, TXT, XML) olan ticarət məlumatlarını izləmək və istifadəçiyə təqdim etmək üçün hazırlanmış C# WPF tətbiqidir.
Tətbiq plagin memarlığı əsasında qurulub — yəni yeni fayl formatı əlavə etmək üçün yalnız yeni bir DLL (plugin) yaratmaq kifayətdir, əsas tətbiqi yenidən tərtib etməyə ehtiyac yoxdur.
Layihə 6 əsas hissədən ibarətdir:
TradeMonitor/ ├─ Plugins/ │ ├─ CsvLoader.Plugin/ │ │ └─ CsvTradeLoader.cs │ ├─ TxtLoader.Plugin/ │ │ └─ TxtTradeLoader.cs │ └─ XmlLoader.Plugin/ │ └─ XmlTradeLoader.cs ├─ TradeMonitor.App/ # WPF UI (MVVM pattern) │ ├─ ViewModels/ │ │ ├─ MainViewModel.cs │ │ └─ RelayCommand.cs │ ├─ MainWindow.xaml │ ├─ appsettings.json # Configurable: scan interval, input directory, plugin list ├─ TradeMonitor.Contracts/ # Common interfaces & data models │ ├─ ITradeLoader.cs # Plugin interface │ └─ TradeRecord.cs # Common data model └─ TradeMonitor.Core/ # Core services ├─ Services/ │ ├─ AppSettings.cs │ ├─ DirectoryScanner.cs # Monitors directory for new files │ └─ PluginLoader.cs # Dynamically loads plugins
✅ 1. Dinamik fayl monitorinqi:
Tətbiq verilmiş qovluğu (appsettings.json) fayl dəyişiklikləri üçün mütəmadi yoxlayır (default: hər 5 saniyədən bir).
İstifadəçi interval və path-i dəyişdikdə yalnız tətbiqi yenidən işə salmaq kifayətdir.
✅ 2. Çoxformatlı fayl emalı (CSV, TXT, XML):
Hər fayl formatı üçün ayrıca plugin yaradılıb:
CsvLoader.PluginTxtLoader.PluginXmlLoader.Plugin
Yeni format əlavə etmək üçün ITradeLoader interfeysini implement edən DLL yaratmaq yetərlidir.
✅ 3. Plugin-based memarlıq:
PluginLoader servisi Plugins/ qovluğundakı DLL-ləri avtomatik aşkar edir və ITradeLoader implementasiyalarını yükləyir.
Əsas tətbiqin tərtibatına toxunmadan yeni plugin əlavə etmək mümkündür.
✅ 4. Paralel fayl emalı:
Yeni fayllar aşkar edildikdə onlar paralel şəkildə oxunur və nəticələr real-time interfeysə yansıyır.
✅ 5. Asinxron WPF UI:
MainViewModel asinxron əməliyyatları UI thread-dən ayırır, bu da tətbiqin “donmamasını” təmin edir.
🖥️ İstifadəçi interfeysi (WPF)
MainWindow.xaml: Əsas ekran, yüklənmiş faylların və nəticələrin siyahısını göstərir.
MainViewModel.cs: Fayl yükləmə və nəticə təqdimatının idarəçisi (MVVM pattern).
RelayCommand.cs: Komanda pattern-inin sadə implementasiyası.
🚀 İstifadə qaydası
appsettings.json-da DirectoryPath və IntervalSeconds dəyərlərini təyin edin.
Plugins qovluğunda uyğun DLL-lərin (*.Plugin.dll) olduğuna əmin olun.
TradeMonitor.App layihəsini işə salın (F5).
Fayl qovluğuna yeni .csv, .xml və ya .txt faylı əlavə edin.
Nəticə avtomatik olaraq GUI-də görsənəcək.
🔧 Texnoloji Stack
.NET 8 (C#)
WPF (MVVM pattern)
Dynamic Plugin Loading (Reflection / MEF-like)
Asynchronous Parallel Processing
Configuration via appsettings.json