Modelli di applicazioni aziendali con l'eBook Novell. FormsEnterprise Application Patterns using Xamarin.Forms eBook

Linee guida per l'architettura per lo sviluppo di applicazioni aziendali Novell. Forms adattabili, gestibili e testabiliArchitectural guidance for developing adaptable, maintainable, and testable Xamarin.Forms enterprise applications

Questo eBook fornisce indicazioni su come implementare il modello MVVM (Model-View-ViewModel), l'inserimento delle dipendenze, la navigazione, la convalida e la gestione della configurazione, mantenendo l'accoppiamento libero.This eBook provides guidance on how to implement the Model-View-ViewModel (MVVM) pattern, dependency injection, navigation, validation, and configuration management, while maintaining loose coupling. Inoltre, sono disponibili indicazioni per l'esecuzione dell'autenticazione e dell'autorizzazione con IdentityServer, l'accesso ai dati da microservizi in contenitori e il testing unità.In addition, there's also guidance on performing authentication and authorization with IdentityServer, accessing data from containerized microservices, and unit testing.

PrefazionePreface

In questo capitolo vengono illustrati lo scopo e l'ambito della guida e i destinatari.This chapter explains the purpose and scope of the guide, and who it's aimed at.

IntroduzioneIntroduction

Gli sviluppatori di app aziendali affrontano diverse esigenze che possono alterare l'architettura dell'app durante lo sviluppo.Developers of enterprise apps face several challenges that can alter the architecture of the app during development. È quindi importante compilare un'app in modo che possa essere modificata o estesa nel tempo.Therefore, it's important to build an app so that it can be modified or extended over time. La progettazione di tale adattamento può essere difficile, ma in genere comporta il partizionamento di un'app in componenti discreti, a regime di controllo libero, che possono essere facilmente integrati in un'app.Designing for such adaptability can be difficult, but typically involves partitioning an app into discrete, loosely coupled components that can be easily integrated together into an app.

MVVMMVVM

Il modello MVC (Model-View-ViewModel) consente di separare nettamente la logica di business e di presentazione di un'applicazione dalla relativa interfaccia utente (UI).The Model-View-ViewModel (MVVM) pattern helps to cleanly separate the business and presentation logic of an application from its user interface (UI). Il mantenimento di una netta separazione tra la logica dell'applicazione e l'interfaccia utente consente di risolvere numerosi problemi di sviluppo e può semplificare la verifica, la manutenzione e l'evoluzione di un'applicazione.Maintaining a clean separation between application logic and the UI helps to address numerous development issues and can make an application easier to test, maintain, and evolve. Può anche migliorare significativamente le opportunità di riutilizzo del codice e consente agli sviluppatori e ai progettisti di interfaccia utente di collaborare più facilmente durante lo sviluppo delle rispettive parti di un'app.It can also greatly improve code re-use opportunities and allows developers and UI designers to more easily collaborate when developing their respective parts of an app.

Inserimento dipendenzeDependency Injection

L'inserimento di dipendenze consente di separare i tipi concreti dal codice che dipende da questi tipi.Dependency injection enables decoupling of concrete types from the code that depends on these types. USA in genere un contenitore che include un elenco di registrazioni e mapping tra interfacce e tipi astratti e i tipi concreti che implementano o estendono questi tipi.It typically uses a container that holds a list of registrations and mappings between interfaces and abstract types, and the concrete types that implement or extend these types.

I contenitori di inserimento delle dipendenze riducono l'accoppiamento tra oggetti fornendo una struttura per creare istanze di classi e gestirne la durata in base alla configurazione del contenitore.Dependency injection containers reduce the coupling between objects by providing a facility to instantiate class instances and manage their lifetime based on the configuration of the container. Durante la creazione degli oggetti, il contenitore inserisce tutte le dipendenze necessarie per l'oggetto.During the objects creation, the container injects any dependencies that the object requires into it. Se tali dipendenze non sono ancora state create, il contenitore crea e risolve prima le dipendenze.If those dependencies have not yet been created, the container creates and resolves their dependencies first.

Comunicazioni tra componenti poco accoppiatiCommunicating Between Loosely Coupled Components

La classe MessagingCenter di Xamarin.Forms implementa il modello di pubblicazione-sottoscrizione, consentendo la comunicazione basata su messaggi tra componenti che non è pratico collegare con riferimenti a oggetti e tipi.The Xamarin.Forms MessagingCenter class implements the publish-subscribe pattern, allowing message-based communication between components that are inconvenient to link by object and type references. Questo meccanismo consente agli editori e ai sottoscrittori di comunicare senza avere un riferimento reciproco, contribuendo a ridurre le dipendenze tra i componenti, consentendo allo stesso tempo di sviluppare e testare i componenti in modo indipendente.This mechanism allows publishers and subscribers to communicate without having a reference to each other, helping to reduce dependencies between components, while also allowing components to be independently developed and tested.

Novell. Forms include il supporto per la navigazione tra le pagine, che in genere risulta dall'interazione dell'utente con l'interfaccia utente o dall'app stessa, in seguito a modifiche dello stato guidate dalla logica interna.Xamarin.Forms includes support for page navigation, which typically results from the user's interaction with the UI, or from the app itself, as a result of internal logic-driven state changes. Tuttavia, la navigazione può essere complessa da implementare nelle app che usano il modello MVVM.However, navigation can be complex to implement in apps that use the MVVM pattern.

In questo capitolo viene NavigationService presentata una classe, che viene utilizzata per eseguire l'esplorazione del primo modello di visualizzazione dai modelli di visualizzazione.This chapter presents a NavigationService class, which is used to perform view model-first navigation from view models. L'inserimento della logica di navigazione nelle classi del modello di visualizzazione significa che la logica può essere esercitata tramite test automatizzati.Placing navigation logic in view model classes means that the logic can be exercised through automated tests. Inoltre, il modello di visualizzazione può implementare la logica per controllare la navigazione per assicurarsi che vengano applicate determinate regole business.In addition, the view model can then implement logic to control navigation to ensure that certain business rules are enforced.

ConvalidaValidation

Tutte le app che accettano input dagli utenti devono assicurarsi che l'input sia valido.Any app that accepts input from users should ensure that the input is valid. Senza convalida, un utente può fornire dati che causano l'esito negativo dell'app.Without validation, a user can supply data that causes the app to fail. La convalida impone regole business e impedisce a un utente malintenzionato di inserire dati dannosi.Validation enforces business rules, and prevents an attacker from injecting malicious data.

Nel contesto del modello MVC (Model-View-ViewModel), sarà 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.In the context of the Model-View-ViewModel (MVVM) pattern, a view model or model will often be required to perform data validation and signal any validation errors to the view so that the user can correct them.

Gestione della configurazioneConfiguration Management

Le impostazioni consentono la separazione dei dati che configura il comportamento di un'app dal codice, consentendo la modifica del comportamento senza ricompilare l'app.Settings allow the separation of data that configures the behavior of an app from the code, allowing the behavior to be changed without rebuilding the app. Le impostazioni dell'app sono dati che un'app crea e gestisce e le impostazioni utente sono le impostazioni personalizzabili di un'app che influiscono sul comportamento dell'app e non richiedono una riregolazione frequente.App settings are data that an app creates and manages, and user settings are the customizable settings of an app that affect the behavior of the app and don't require frequent re-adjustment.

Microservizi in contenitoriContainerized Microservices

I microservizi offrono un approccio per lo sviluppo e la distribuzione di applicazioni, adatti ai requisiti di agilità, scalabilità e affidabilità delle applicazioni cloud moderne.Microservices offer an approach to application development and deployment that's suited to the agility, scale, and reliability requirements of modern cloud applications. Uno dei vantaggi principali dei microservizi è che è possibile scalare orizzontalmente in modo indipendente, il che significa che è possibile ridimensionare un'area funzionale specifica che richiede una maggiore potenza di elaborazione o larghezza di banda di rete per supportare la richiesta, senza inutilmente ridimensionare le aree di applicazione che non sta riscontrando un aumento della domanda.One of the main advantages of microservices is that they can be scaled-out independently, which means that a specific functional area can be scaled that requires more processing power or network bandwidth to support demand, without unnecessarily scaling areas of the application that are not experiencing increased demand.

Autenticazione e autorizzazioneAuthentication and Authorization

Sono disponibili molti approcci per l'integrazione di autenticazione e autorizzazione in un'app Novell. Forms che comunica con un'applicazione Web MVC ASP.NET.There are many approaches to integrating authentication and authorization into a Xamarin.Forms app that communicates with an ASP.NET MVC web application. In questo caso, l'autenticazione e l'autorizzazione vengono eseguite con un microservizio di identità in contenitori che usa IdentityServer 4.Here, authentication and authorization are performed with a containerized identity microservice that uses IdentityServer 4. IdentityServer è un framework open source di OpenID Connect e OAuth 2,0 per ASP.NET Core che si integra con ASP.NET Core identità per eseguire bearer token l'autenticazione.IdentityServer is an open source OpenID Connect and OAuth 2.0 framework for ASP.NET Core that integrates with ASP.NET Core Identity to perform bearer token authentication.

Accesso ai dati remotiAccessing Remote Data

Molte soluzioni moderne basate sul Web utilizzano i servizi Web, ospitati da server Web, per fornire funzionalità per le applicazioni client Remote.Many modern web-based solutions make use of web services, hosted by web servers, to provide functionality for remote client applications. Le operazioni esposte da un servizio Web costituiscono un'API Web e le app client devono essere in grado di utilizzare l'API Web senza conoscere il modo in cui vengono implementati i dati o le operazioni esposte dall'API.The operations that a web service exposes constitute a web API, and client apps should be able to utilize the web API without knowing how the data or operations that the API exposes are implemented.

Testing unitàUnit Testing

Il testing di modelli e modelli di visualizzazione da applicazioni MVVM è identico a quello di altre classi ed è possibile usare gli stessi strumenti e tecniche.Testing models and view models from MVVM applications is identical to testing any other classes, and the same tools and techniques can be used. Tuttavia, esistono alcuni modelli tipici per modellare e visualizzare le classi di modelli, che possono trarre vantaggio da specifiche tecniche di unit test.However, there are some patterns that are typical to model and view model classes, that can benefit from specific unit testing techniques.

Commenti e suggerimentiFeedback

Questo progetto include un sito della community in cui è possibile pubblicare domande e fornire commenti e suggerimenti.This project has a community site, on which you can post questions, and provide feedback. Il sito della community si trova in GitHub.The community site is located on GitHub. In alternativa, è possibile inviare un messaggio di posta elettronica a dotnet-architecture-ebooks-feedback@service.microsoft.comcommenti e suggerimenti sull'eBook.Alternatively, feedback about the eBook can be emailed to dotnet-architecture-ebooks-feedback@service.microsoft.com.