Su Quora, il più noto sito di domande e risposte al mondo, molti discutono dell'innovazione continua e della rilevanza di WPF nel 2024.
WPF, acronimo di Windows Presentation Foundation, è una tecnologia sviluppata da Microsoft per creare applicazioni desktop Windows che superano le limitazioni di Windows Forms, permettendo di separare la parte di presentazione, le view, da quella di logica applicativa, il code-behind.
Un grande vantaggio di WPF è la possibilità di sviluppare applicazioni robuste e solide, sfruttando al massimo le potenzialità del sistema operativo Windows.
A differenza delle applicazioni web, che sebbene versatili possono risultare più fragili, WPF garantisce stabilità e performance superiori.
La nascita di WPF è avvenuta in modo virtuoso: nel 2005, gli architetti di Microsoft, Ken Cooper e Ted Peters, hanno ideato il pattern architetturale MVVM (Model View ViewModel).
Questo pattern consente di sviluppare applicazioni testabili e manutenibili, grazie alla chiara separazione tra grafica e logica applicativa.
Tra i benefici offerti da WPF, c'è anche la possibilità di implementare la logica dell'applicazione senza la necessità immediata di definire le relative form e user control.
Come funziona il pattern MVVM in WPF?
Sviluppo con .NET da 25 anni, ho iniziato quando è uscito, e nonostante abbia 43 anni, è praticamente tutta la vita che metto le mani nel codice e progetto software di alto livello, con un unico obiettivo: lavorare sereno, senza stress e con i più ampi margini di guadagno possibili grazie all’ottimizzazione dei tempi di sviluppo.
Il pattern MVVM è suddiviso in tre componenti principali: Model, View e ViewModel, ognuna delle quali ha una sola dipendenza verso un altro componente.
- View: è l'interfaccia utente, definita in codice XAML.
- Model: sono le classi che permettono di trasferire e scrivere dati dai servizi.
- ViewModel: si occupa di aggiornare la vista attraverso il motore di binding di WPF e di implementare la logica applicativa.
Grazie a questa suddivisione, è possibile separare completamente la logica applicativa dall'interfaccia utente, ottenendo tre grandi vantaggi:
- Gli sviluppatori e i grafici possono lavorare su file separati, i file .cs per gli sviluppatori e i file .xaml per i grafici.
- È possibile implementare la logica applicativa anche senza avere ancora l'interfaccia grafica.
- È possibile scrivere unit test per il ViewModel e verificare il comportamento della logica applicativa.
Se stai usando WPF con il code-behind, ovvero il codice nella vista, e implementando ovunque il codice degli eventi facendo doppio clic del mouse, stai andando in una direzione molto impervia e in salita.
La tua vita da sviluppatore e project manager sarà stressata e piena di problemi, dovuti a ritardi nello sviluppo e a clienti che giustamente si lamentano perché il software che produci è pieno di bug.
Il nostro lavoro è nato per automatizzare il lavoro degli altri, di persone incapaci di usare la tecnologia come sappiamo fare noi. Non possiamo certo mettergli il bastone tra le ruote, giusto?
Il mercato premia enormemente chi è bravo a risolvere problemi, chi è sempre un passo avanti e riesce con eleganza a uscire da qualsiasi vicolo cieco, come faceva il grande mago Harry Houdini tra la fine del 1800 e l'inizio del 1900.
Vuoi essere visto come lui, in grado di compiere qualsiasi “miracolo” con il codice e consegnare progetti straordinari che risolvano davvero problemi ai tuoi clienti, o vuoi essere considerato come “quella schiappa che non ne fa una giusta”?
WPF e MVVM: i 3 errori da non fare
WPF con MVVM semplifica moltissimo lo sviluppo di applicazioni Windows e non solo. Con XAML e MVVM si possono sviluppare anche applicazioni mobile che girano su Android e iPhone, utilizzando Xamarin e riutilizzando le conoscenze degli sviluppatori e del team.
1. Scegliere un framework MVVM complicato è il primo errore che fanno i team e le aziende, con molte più funzionalità di quelle che sono realmente necessarie, rendendo il codice molto verboso e complicato.
Ti assicuro che nella mia carriera ventennale ho visto tonnellate di codice, e la maggior parte di questo era scritta veramente male.
Uno dei motivi è che chi sviluppa spesso non ha tempo di dedicare ore e ore di studio per migliorare costantemente il proprio lavoro.
Così entra nel circolo vizioso del “dobbiamo farlo e dobbiamo fare in fretta”. Il codice diventa sempre più disordinato, causando frustrazione.
Veniamo al secondo errore.
2. Richiedere delle skill introvabili sul mercato, a causa del framework scelto, creando un enorme collo di bottiglia nel dipendere da sviluppatori difficili da trovare.
Questo accade quando le aziende scelgono framework complessi e poco documentati, che richiedono competenze specialistiche molto rare.
Il risultato è che il team di sviluppo si trova in una situazione in cui non può progredire rapidamente, perché manca il personale qualificato.
Anche quando si riesce a trovare un esperto, i costi sono spesso esorbitanti e la dipendenza da pochi individui diventa un rischio significativo.
Questo può rallentare i tempi di sviluppo, aumentare i costi e rendere l'intero progetto vulnerabile a ritardi e problemi di qualità.
È quindi fondamentale scegliere strumenti e framework che siano supportati da una comunità ampia e attiva, garantendo così la disponibilità di risorse e facilitando la manutenzione e l'evoluzione del progetto nel tempo.
3. utilizzare WPF come fosse Windows Forms, implementando la logica negli handler degli eventi invece che nei metodi collegati ai comandi dell'interfaccia ICommand nel ViewModel.
In questo modo si perde completamente il vantaggio di poter disaccoppiare la vista dalla logica, trasformando WPF in una vecchia tecnologia anziché in qualcosa di innovativo, semplice e testabile, come è nato.
Come vedi, potresti far saltare in aria progetti per i prossimi 10 anni. E non sto scherzando, non sto esagerando per niente.
In un importante gruppo editoriale, mi sono occupato con un team alle mie dipendenze di tutto il sistema di reportistica di un gestionale per immobili.
Prima del mio arrivo, la società aveva dato in outsourcing tutto il client WPF che utilizzava WCF per comunicare con il sistema server. Questa UI era costata 600.000 euro di sviluppo.
Dopo 6 mesi, tutto è stato buttato nel cestino, non si è salvato niente. Questo scenario l’ho visto ripetersi decine di volte purtroppo, sempre per gli stessi motivi.
Mancanza di tempo per studiare adeguatamente, conoscere meglio le tecnologie e fare refactoring in modo continuativo.
Ci sta che ogni tanto tu e il tuo team scriviate codice non eccellente, specie se al primo colpo, ma poi è necessario passare con il bisturi e tagliare tutto ciò che è scritto male, inutile e fare un bel lifting al codice.
Del resto, chi vorrebbe guidare una macchina sportiva di lusso che sembra un vecchio rottame, mal tenuto e pieno di ammaccature?
Come utilizzare WPF nel modo corretto?
WPF è una tecnologia potente che permette di validare i dati con un pattern molto semplice, disabilitare i pulsanti in modo automatico in base allo stato del ViewModel e gestire le eccezioni in modo centralizzato.
Per sfruttarlo correttamente però bisogna partire da basi solide.
A quel punto lo sviluppo delle applicazioni e la loro manutenzione diventano processi sistematizzabili, aumentando moltissimo la qualità del codice prodotto, senza clienti o utenti che chiamano continuamente e interrompono il tuo lavoro e quello del tuo team.
Puoi apparire professionale come il team di una multinazionale, come Google o Facebook, che dimostrano di avere sempre la situazione sotto controllo. Ma solo se eviti questi errori fatali, e altri meno fatali, ma comunque importanti, che possono far fallire i tuoi progetti e diventare un ennesimo motivo di frustrazione invece che motivo di vanto e anche di divertimento.
Se vuoi ottenere questo obiettivo e diventare un asso dello sviluppo, ottenendo applicazioni davvero mantenibili, che non hanno bug che si ripresentano di continuo, clicca sul pulsante e chiedici di parlare con un tutor del corso di sviluppo in WPF “Da zero a WPF hero”!
Affrettati perché blocchiamo solo pochi giorni ogni anno per aziende selezionate, perché prima di tutto siamo sviluppatori che lavorano su progetti reali.
Pensa a quanto potrebbe migliorare il tuo futuro, rendendo più facile e radioso il tuo lavoro. Migliora esponenzialmente il sistema di sviluppo delle applicazioni WPF, separando correttamente i layer applicativi.
Non dovrai più sentirti stressato e sotto pressione per aver consegnato un software con codice di bassa qualità. Al contrario, sarai fiero di esporre il tuo codice come un'opera d'arte.
Sarà come mostrare non solo un ponte di Renzo Piano, ma anche i progetti, che sono essi stessi un grande capolavoro.
Ricordati che mentre tu pensi se migliorare il tuo sistema di sviluppo e le tue competenze di C# e quelle del tuo team, altri là fuori si stanno già muovendo.
Il mercato non aspetta nessuno, ma passa sopra come un rullo compressore a chi rimane indietro.
La bella notizia è che puoi prenotare la tua call con il tutor per pianificare come fare un salto quantico e lavorare finalmente con le redini tenute saldamente tra le tue mani.