Condividi tramite


Struttura dell'app del database del cliente

Le app line-of-business complesse hanno spesso molte pagine e funzionalità e un gran numero di righe di codice. Per questo motivo, è fondamentale progettare l'app in base a una struttura prevedibile. Esistono diversi modelli di progettazione delle applicazioni adatti alle app aziendali, ma sono tutti basati sull'obiettivo di semplificare la comprensione e l'uso di un'applicazione su larga scala.

Mentre l'esercitazione sul database del cliente presenta un'app a pagina singola per semplicità, implementa il modello di progettazione dell'app Model-View-ViewModel (MVVM) per mostrare queste idee in azione. Come suggerisce il nome, il modello di progettazione MVVM separa la logica principale dell'app in tre categorie:

  • I modelli sono le classi che contengono i dati dell'applicazione.
  • Le visualizzazioni sono l'interfaccia utente di una determinata pagina.
  • ViewModels fornisce la logica dell'applicazione. Ciò può includere la gestione delle azioni utente dalla Vista e/o dalla gestione delle interazioni con i modelli.

Anche se questa app non è un esempio perfetto e archetipico di MVVM, mostra i principi principali della separazione delle preoccupazioni in azione. Vedi qui l'app.

Struttura dell'applicazione

Dopo aver aperto l'app, inizia esaminando Esplora soluzioni. Alcune delle informazioni visualizzate dovrebbero essere familiari se hai lavorato con un'app UWP in precedenza, ma vedrai anche una raccolta di cartelle che contengono le parti che compongono l'app.

Punto di partenza dell'app nel Esplora soluzioni

Visualizzazioni

Tutta l'interfaccia utente dell'app è definita nella cartella Viste. Poiché l'esercitazione è un'app a pagina singola al momento, ciò significa che è presente una sola vista - CustomerListPage. Include sia il ricarico dell'interfaccia utente XAML sia il code-behind xaml.cs: questi due file costituiscono una Vista. Stai aggiungendo elementi dell'interfaccia utente a CustomerListPage.xaml.

Nota

Potresti notare che questa app non ha una MainPage. Questo perché è specificato in App.xaml.cs che l'app deve avviare CustomerListPage al momento dell'avvio.

ViewModel

Anche se questa app ha una sola Vista, ha due ViewModel. Perché?

CustomerListPageViewModel.cs è un ViewModel standard nel modello MVVM. È la posizione in cui si trova la logica fondamentale della pagina dell'app e la pagina che risulterà più utilizzata nell'esercitazione. Ogni azione dell'interfaccia utente eseguita dall'utente viene passata attraverso il menu Vista a questo ViewModel per l'elaborazione.

CustomerViewModel.cs, tuttavia, non è associato a una vista specifica. Associa, invece, un concetto programmatico (le proprietà che sono state modificate) ai dati contenuti nel modello di un singolo cliente.

Modelli

Questa app contiene tre modelli, che archiviano i dati dell'app e forniscono interfacce per interagire con il repository. Anche se si tratta di parti critiche dell'app, non sono elementi che verranno modificati direttamente nel corso dell'esercitazione.

L'aspetto più importante è Customer.cs, che descrive la struttura dei dati del cliente che verrà usata nell'esercitazione.

Nota

L'esercitazione ignora le proprietà Email e Telefono dell'oggetto Customer. Se si desidera andare oltre ciò che viene presentato qui, l'aggiunta di queste due proprietà nell'interfaccia utente dell'app rappresenta un buon passo iniziale.

Repository

La cartella Repository contiene classi che costruiscono e interagiscono con il database SQLite locale. Per l'esercitazione, il database SQLite viene presentato così com'è. Mentre l'aggiunta nel codice a CustomerListPageViewModel.cs per chiamare i metodi definiti da queste classi, non renderà necessario apportare modifiche per configurarle.

Per altre informazioni su SQLite in UWP, vedere questo articolo.

Se si prova la sezione "Approfondimenti" dell'esercitazione, verrà creata una classe per la connessione al database REST remoto. Implementerà anche l'interfaccia ICustomerRepository definita nella sezione Modelli, ma avrà un aspetto molto diverso rispetto alla sua controparte di SQLite.

Altri elementi

Come di consueto per le app UWP, il comportamento all'avvio dell'applicazione viene definito nella classe App.xaml.cs. La maggior parte del codice è il codice predefinito per qualsiasi app UWP. Ma sono già state apportate alcune piccole modifiche:

  • È stato specificato che l'app deve visualizzare CustomerListPage all'avvio.
  • È stato creato un oggetto Repository che conterrà l'origine dati in uso.
  • È stato aggiunto un metodo SQLiteDatabase, che inizializza il database locale e lo imposta come Repository specificato.

Se si prova la sezione "Continuare", si aggiungerà un metodo simile per inizializzare un oggetto Repository REST. Poiché sono state separate le preoccupazioni e si usa la stessa interfaccia definita per le operazioni SQLite e REST, questo sarà l'unico codice esistente che sarà necessario modificare per usare REST anziché SQLite nell'app.

Passaggi successivi

Se hai già completato l'esercitazione, puoi consultare l'app esempio completo per vedere come queste funzionalità vengono implementate su larga scala.

In caso contrario, ora che sai perché tutto è dove si trova, dovresti tornare all'esercitazione e lavorare con la struttura appena descritta.