Modelli di applicazione aziendali con Xamarin.Forms eBook
Linee guida per l'architettura per lo sviluppo di applicazioni aziendali adattabili, gestibili e testabili Xamarin.Forms
Nota
Questo eBook è stato pubblicato nella primavera del 2017 e non è stato aggiornato da allora. C'è molto nel libro che rimane prezioso, ma alcuni dei materiali sono obsoleti.
Questo eBook fornisce indicazioni su come implementare il modello Model-View-ViewModel (MVVM), l'inserimento delle dipendenze, la navigazione, la convalida e la gestione della configurazione, mantenendo l'accoppiamento libero. Sono inoltre disponibili indicazioni sull'esecuzione dell'autenticazione e dell'autorizzazione con IdentityServer, sull’accesso ai dati dai microservizi in contenitori e sul testing unità.
Prefazione
Questo capitolo illustra lo scopo e l'ambito della guida e chi si rivolge.
Introduzione
Gli sviluppatori di app aziendali affrontano diverse sfide che possono modificare l'architettura dell'app durante lo sviluppo. È quindi importante creare un'app in modo che possa essere modificata o estesa nel tempo. La progettazione per tale adattabilità può essere difficile, ma in genere comporta il partizionamento di un'app in componenti separati e ad accoppiamento libero che possono essere facilmente integrati in un'app.
MVVM
Il modello Model-View-ViewModel (MVVM) consente di separare in modo pulito la logica di business e presentazione di un'applicazione dall'interfaccia utente. La gestione di una separazione netta tra la logica dell'applicazione e l'interfaccia utente consente di risolvere numerosi problemi di sviluppo e di semplificare il test, la gestione e l'evoluzione di un'applicazione. Può anche migliorare notevolmente le opportunità di riutilizzo del codice e consente agli sviluppatori e ai progettisti dell'interfaccia utente di collaborare più facilmente durante lo sviluppo delle rispettive parti di un'app.
Inserimento delle dipendenze
L'inserimento delle dipendenze consente di separare i tipi concreti dal codice che dipende da questi tipi. In genere usa un contenitore che contiene un elenco di registrazioni e mapping tra interfacce e tipi astratti e i tipi concreti che implementano o estendono questi tipi.
I contenitori di inserimento delle dipendenze riducono l'accoppiamento tra oggetti fornendo una funzionalità per creare istanze di classe e gestirle in base alla configurazione del contenitore. Durante la creazione degli oggetti, il contenitore inserisce tutte le dipendenze richieste dall'oggetto. Se tali dipendenze non sono ancora state create, il contenitore crea e risolve prima le relative dipendenze.
Comunicazioni tra componenti poco accoppiati
La Xamarin.FormsMessagingCenter
classe implementa il modello publish-subscribe, consentendo la comunicazione basata su messaggi tra i componenti non convenienti da collegare tramite riferimenti a oggetti e tipi. Questo meccanismo consente ai server di pubblicazione e ai sottoscrittori di comunicare senza avere un riferimento diretto l'uno all'altro, contribuendo a ridurre le dipendenze tra i componenti e consentendo lo sviluppo e il test indipendente di tali componenti.
Navigazione
Xamarin.Forms include il supporto per lo spostamento delle pagine, che in genere deriva dall'interazione dell'utente con l'interfaccia utente o dall'app stessa, in seguito a modifiche dello stato interno basate sulla logica. Tuttavia, la navigazione può essere complessa da implementare nelle applicazioni che usano il modello MVVM.
Questo capitolo presenta una NavigationService
classe usata per eseguire la navigazione modello-primo visualizzazione dai modelli di visualizzazione. L'inserimento della logica di spostamento nelle classi del modello di visualizzazione significa che la logica può essere esercitata tramite test automatizzati. Inoltre, il modello di visualizzazione può implementare la logica per controllare la navigazione per garantire che vengano applicate determinate regole business.
Convalida
Qualsiasi app che accetta input dagli utenti deve assicurarsi che l'input sia valido. Senza convalida, un utente può fornire dati che causano l'esito negativo dell'app. La convalida applica regole business e impedisce a un utente malintenzionato di inserire dati dannosi.
Nel contesto del modello Model-View-ViewModel (MVVM), è spesso necessario un modello di visualizzazione o un modello per eseguire la convalida dei dati e segnalare eventuali errori di convalida alla visualizzazione in modo che l'utente possa correggerli.
Gestione della configurazione
Le impostazioni consentono la separazione dei dati che configurano il comportamento di un'app dal codice, consentendo la modifica del comportamento senza ricompilare l'app. Le impostazioni dell'app sono dati creati e gestiti da un'app e le impostazioni utente sono le impostazioni personalizzabili di un'app che influiscono sul comportamento dell'app e non richiedono una regolazione frequente.
Microservizi in contenitori
I microservizi offrono un approccio allo sviluppo e alla distribuzione di applicazioni adatte ai requisiti di agilità, scalabilità e affidabilità delle applicazioni cloud moderne. Uno dei principali vantaggi dei microservizi è che possono essere ridimensionati in modo indipendente, il che significa che un'area funzionale specifica può essere ridimensionata che richiede una maggiore potenza di elaborazione o larghezza di banda di rete per supportare la domanda, senza dover ridimensionare inutilmente aree dell'applicazione che non riscontrano un aumento della domanda.
Autenticazione e autorizzazione
Esistono molti approcci per l'integrazione dell'autenticazione e dell'autorizzazione in un'app Xamarin.Forms che comunica con un'applicazione Web MVC ASP.NET. In questo caso, l'autenticazione e l'autorizzazione vengono eseguite con un microservizio di identità in contenitori che usa IdentityServer 4. IdentityServer è un framework OpenID Connect open source e OAuth 2.0 per ASP.NET Core che si integra con ASP.NET Core Identity per eseguire l'autenticazione del token di connessione.
Accesso ai dati remoti
Molte soluzioni moderne basate sul Web usano servizi Web, ospitati da server Web, per fornire funzionalità per le applicazioni client remote. Le operazioni esposte da un servizio Web costituiscono un'API Web e le app client devono essere in grado di usare l'API Web senza sapere come vengono implementati i dati o le operazioni esposte dall'API.
Testing unità
I modelli di test e i modelli di visualizzazione dalle applicazioni MVVM sono identici ai test di qualsiasi altra classe e possono essere usati gli stessi strumenti e tecniche. Esistono tuttavia alcuni modelli tipici per modellare e visualizzare le classi del modello, che possono trarre vantaggio da tecniche di unit test specifiche.
Sito della community
Questo progetto ha un sito della community, in cui è possibile pubblicare domande e fornire commenti e suggerimenti. Il sito della community si trova in GitHub. In alternativa, è possibile inviare commenti e suggerimenti sull'eBook a dotnet-architecture-ebooks-feedback@service.microsoft.com.