# GestoreTrimestrale - Architettura e Evoluzione ## Versioni del Sistema ### 1. Versione Originale (GestoreTrimestrale) #### Caratteristiche Tecniche - Framework: .NET 4.5 - Pattern: WPF tradizionale con code-behind - Struttura: Monolitica - File principale: MainWindow.xaml.cs (~32KB) #### Componenti Principali - Controls (2 controlli base) - Gestione configurazione tramite configModel.cs - Logica business integrata nel code-behind - Sistema di logging con NLog ### 2. Versione MVVM (GestoreTrimestrale_branch_applyingMVVM) #### Miglioramenti Tecnici - Aggiornamento a .NET Framework 4.8 - Implementazione pattern MVVM completo - Architettura modulare e scalabile #### Nuova Struttura - **Models/** - ConfigurationModel.cs - Logica di business separata - **ViewModels/** - Logica di presentazione - Binding dati - **Views/Controls/** (33 controlli specializzati) - **Commands/** per pattern Command - **Converters/** per trasformazione dati #### Componenti Aggiuntivi - UserStatusWindow per gestione stato utente - WorkflowWindow per flussi di lavoro - Sistema di template XML potenziato ## GestoreTrimestrale.Logic ### Componenti Principali #### 1. FtpManagerProcess - Gestisce il trasferimento FTP dei file - Utilizza BackgroundWorker per operazioni asincrone - Gestisce parametri di ambiente e configurazione TNG #### 2. PdfManagerProcess - Gestisce la generazione parallela di PDF - Supporta processi concorrenti multipli - Controlla il numero di processi PDF attivi - Gestisce lo stato di elaborazione attraverso ManagerProcessStatusEnum #### 3. ZipManagerProcess - Gestisce la compressione dei file - Utilizza SmartZip.Logic per le operazioni di compressione - Supporta: - Elaborazione iterativa - Configurazione intervalli di esecuzione - Logging degli errori - Gestione di pacchetti ZIP personalizzati - Supporto per approvazioni e scenari diversi ### Caratteristiche Chiave 1. **Separazione della Logica** - Layer separato per la logica di business - Indipendente dall'interfaccia utente - Riutilizzabile in diversi contesti 2. **Gestione Asincrona** - Uso di BackgroundWorker e Thread - Supporto per operazioni parallele - Monitoraggio dello stato dei processi 3. **Configurabilità** - Supporto per configurazioni XML - Parametri personalizzabili - Gestione di scenari diversi 4. **Integrazione** - Progetto condiviso tra GestoreTrimestrale e GestoreTrimestrale_branch_applyingMVVM - Referenziato come progetto separato in entrambe le versioni - Garantisce consistenza della logica di business tra le implementazioni - Permette la migrazione graduale mantenendo le funzionalità core ## Confronto Architetturale ### Vantaggi Versione MVVM 1. **Manutenibilità** - Separazione chiara delle responsabilità - Codice più organizzato e modulare - Facilità di modifica e aggiornamento 2. **Testabilità** - Componenti isolati e testabili - Suite di test automatizzati - Migliore qualità del codice 3. **Scalabilità** - Facilità di aggiungere nuove funzionalità - Struttura più flessibile - Migliore gestione della complessità ### Considerazioni di Migrazione - Refactoring completo dell'architettura - Mantenimento delle funzionalità esistenti - Miglioramento dell'esperienza utente - Aggiornamento tecnologico significativo ## Integrazione nel Sistema - Parte del sistema ContrattoSEI - Gestione report trimestrali - Elaborazione dati finanziari - Generazione documentazione automatizzata