Crea applicazioni MVVM con Windows Community Toolkit

Microsoft è sempre stata brava a lavorare con gli sviluppatori, fin dai suoi primi giorni come fornitore di linguaggi. Il suo programma si è evoluto nel corso degli anni, da un approccio top-down guidato da Redmond che ha raggiunto il picco con i normali DVD di documentazione MSDN, al programma basato sulla comunità di oggi avvolto intorno a Microsoft Docs, Microsoft Learn, un team globale di Azure Developer Advocates, e un set in continua crescita di strumenti e framework sviluppati su GitHub.

Windows Community Toolkit: uno starter kit .NET

Lavorare con la comunità ha prodotto risultati interessanti con una documentazione più accurata e tempestiva utilizzando GitHub per gestire i contenuti e una serie di progetti open source guidati dalla comunità. Uno dei progetti più importanti è il Windows Community Toolkit, una serie di funzioni, controlli e servizi per applicazioni .NET e UWP. È un progetto che diventerà sempre più importante con la transizione dal vecchio .NET Framework a .NET 5 basato su .NET Core e il lancio di Project Reunion e del framework MAUI (Multiplatform App UI) multipiattaforma.

Windows Community Toolkit non è un'entità monolitica che deve essere fornita con le tue applicazioni. È un set di pacchetti NuGet, quindi puoi scegliere ciò di cui hai bisogno, mantenendo al minimo il sovraccarico di codice e libreria. Se stai creando applicazioni Windows .NET moderne, vale la pena dare un'occhiata, poiché contiene molti importanti controlli XAML che possono aiutare a fornire un'applicazione bella e intuitiva. Altri strumenti utili includono un set di helper per migliorare le prestazioni dell'applicazione, un set di parser per formati di dati comuni, incluso Markdown, e il codice principale necessario per supportare il framework di notifica di Windows 10.

Aggiunta di MVVM al Toolkit

Una delle aggiunte più recenti al toolkit è una nuova libreria per la creazione di applicazioni utilizzando il modello di progettazione MVVM. Model-view-viewmodel è al centro del prossimo framework MAUI e .NET necessita di un'implementazione buona e veloce se vuole avere successo. Il risultato è un set relativamente leggero di strumenti MVVM e un set di codice di esempio.

C'è molto da apprezzare nella nuova implementazione di MVVM Windows Community Toolkit. Forse il più utile è che si tratta di un miglioramento delle prestazioni di un ordine di grandezza rispetto agli strumenti .NET MVVM comparabili, come il suo coautore Michael Hawker, responsabile del progetto Windows Community Toolkit presso Microsoft, ha sottolineato in una presentazione a UnoConf la scorsa settimana. Questo miglioramento sarà fondamentale per le applicazioni MAUI, specialmente quando si prendono di mira piattaforme mobili come Android e iOS. Potrebbe non avere tutte le caratteristiche delle alternative pesanti, ma per la maggior parte degli scopi è una scelta ideale e, con alcuni degli strumenti .NET MVVM alternativi non più sviluppati, vale la pena dare un'occhiata.

Rendi la tua interfaccia utente basata sugli eventi

Il modello di progettazione MVVM ha lo scopo di supportare interfacce utente guidate da eventi. Al centro c'è un modello, che funge da interfaccia tra l'applicazione e qualsiasi logica o dato aziendale di back-end. L'interfaccia utente è implementata dalla vista, in modo molto simile al modello MVC (controller di visualizzazione del modello) familiare. MVVM differisce da altri modelli di progettazione simili nel suo viewmodel, che collega le associazioni di dati nella vista ai dati nel modello, fornendo un modo per rappresentare lo stato dell'uno nell'altro.

Il codice viewmodel gestisce l'elaborazione di input e output da e verso la visualizzazione, usando associazioni di dati XAML standard ai controlli. L'obiettivo qui è di mantenere il codice nella vista al minimo in modo che i progettisti possano concentrarsi sulla produzione di esperienze utente mentre gli sviluppatori lavorano sul codice back-end e sull'elaborazione dello stato di visualizzazione guidata dagli eventi del viewmodel. Applicando una separazione tra la vista e il modello è possibile concentrare lo sviluppo sulla logica dell'applicazione, utilizzando i controlli del prototipo prima di passare a un progetto finale senza influire sul codice scritto durante lo sviluppo dell'applicazione.

Inizia con Microsoft.MVVM.Toolkit

Il codice per il nuovo toolkit MVVM è molto nuovo, ma è sufficientemente maturo per supportare lo sviluppo di applicazioni prototipo. Forse il problema più grande è che non esiste ancora alcuna documentazione per Microsoft.Toolkit.MVVM sul sito di Microsoft Docs, anche se una piccola ricerca troverà la parte iniziale di documentazione su GitHub.

Come il resto del Windows Community Toolkit, MVVM Toolkit viene installato da un repository Nuget. Poiché è stato ispirato dall'ormai deprecato MVVMLight, la transizione dal vecchio toolkit al Windows Community Toolkit non dovrebbe essere troppo difficile.

Inizia scaricando la versione di anteprima di MVVM Toolkit da Nuget e installandola nella tua applicazione in Visual Studio. In questo modo verranno introdotte eventuali dipendenze e verrà impostato un framework che è possibile utilizzare per iniziare a creare un'applicazione MVVM.

Sotto il cofano: un sistema di notifiche in azione

Fondamentalmente, MVVM è un'architettura basata sulla messaggistica che monitora gli eventi sia dal modello che dalla vista, inviando notifiche asincrone tra i due utilizzando il viewmodel. Avrai bisogno di familiarizzare con le classi base di base che controllano il modo in cui il viewmodel risponde alle proprietà modificate nel modello sottostante. Quando un oggetto osservabile nel modello cambia stato, il viewmodel genera una notifica appropriata e la usa per recapitare un messaggio di evento attraverso un'associazione a un controllo dell'interfaccia utente nella vista.

La chiave per il funzionamento di MVVM Toolkit e il motivo dei significativi miglioramenti delle prestazioni rispetto ad altre implementazioni .NET MVVM è la sua classe Messenger. Ecco come collegare i diversi elementi di un'applicazione MVVM, implementando e registrando i gestori di messaggi. Puoi pensarlo come un sistema di pubblicazione e sottoscrizione semplificato, che offre solo servizi al modello e alla vista. I destinatari e i mittenti devono essere registrati e annullati se non sono più necessari. Ad esempio, se si utilizza MVVM Toolkit per alimentare un'app di chat e un utente specifico si disconnette, è necessario annullarne la registrazione dall'applicazione per evitare perdite di memoria.

Progettazione per MVVM

Avere un modello di pubblicazione e sottoscrizione al centro della vista modello ha molto senso. Ti consente di assicurarti che tutte le tue associazioni di controllo siano associate agli endpoint dei messaggi, offrendoti un modo per creare a livello di programmazione le mappature necessarie per collegare la vista e il modello in un modo che dovrebbe scalare tra più viste e più modelli.

Separare la vista e il modello in questo modo semplifica la struttura complessiva dell'applicazione, soprattutto se si considera che si sta passando da un modello di programmazione dichiarativo nella visualizzazione XAML a un approccio orientato agli oggetti nel modello. L'utilizzo di un viewmodel basato sulla messaggistica come livello di traduzione tra questi due modi di programmazione molto diversi riduce i rischi e mantiene al minimo la quantità di code-behind necessaria nelle viste. Prima di scrivere qualsiasi codice, assicurati che la progettazione dell'applicazione includa tali mappature e associazioni in dettaglio, insieme ai messaggi che trasportano, poiché queste sono le tue API interne per tutta la tua integrazione tra front-end e back-end.

Il lavoro della comunità .NET su Windows Community Toolkit è importante per il futuro della piattaforma. Con i cambiamenti significativi in ​​corso (la transizione a .NET 5, la separazione di SDK e Windows in Project Reunion e il modello di interfaccia utente multipiattaforma in MAUI) sta diventando sempre più importante disporre di una serie di controlli e funzionalità di riferimento. Puoi scegliere e scegliere gli elementi che desideri per ottenere una spinta nel tuo viaggio .NET. L'MVVM Toolkit potrebbe essere una delle parti più nuove del kit, ma è probabile che diventi una delle più importanti.