Condividi tramite


Introduzione all'app di riferimento eShopOnContainers

Suggerimento

Questo contenuto è un estratto dell'eBook Architecting Cloud Native .NET Applications for Azure, disponibile in .NET Docs o come PDF scaricabile gratuito che può essere letto offline.

app .NET native cloud per l'anteprima della copertina di Azure eBook.

Microsoft, in collaborazione con i principali esperti della community, ha prodotto un'applicazione di riferimento per microservizi nativa del cloud completa, eShopOnContainers. Questa applicazione è compilata per presentare l'uso di .NET e Docker e, facoltativamente, di Azure, Kubernetes e Visual Studio, per creare una vetrina online.

Screenshot dell'app di esempio eShopOnContainers.

Figura 2-1. Screenshot dell'app di esempio eShopOnContainers.

Prima di iniziare questo capitolo, è consigliabile scaricare l'applicazione di riferimento eShopOnContainers. In tal caso, dovrebbe essere più semplice seguire le informazioni presentate.

Funzionalità e requisiti

Si inizierà con una revisione delle funzionalità e dei requisiti dell'applicazione. L'applicazione eShopOnContainers rappresenta un negozio online che vende vari prodotti fisici come t-shirt e tazze di caffè. Se hai acquistato qualcosa online in precedenza, l'esperienza di utilizzo del negozio dovrebbe essere relativamente familiare. Ecco alcune delle funzionalità di base implementate dallo Store:

  • Elencare gli elementi del catalogo
  • Filtrare gli elementi in base al tipo
  • Filtrare gli elementi in base al marchio
  • Aggiungere articoli al carrello acquisti
  • Modificare o rimuovere elementi dal carrello
  • Cassa
  • Registrare un account
  • Accedere
  • Disconnettersi
  • Esaminare gli ordini

L'applicazione presenta anche i requisiti non funzionali seguenti:

  • Deve essere ad alta disponibilità e deve ridimensionarsi automaticamente per soddisfare un aumento del traffico (e ridimensionarsi nuovamente quando il traffico diminuisce).
  • Deve fornire un monitoraggio semplice dei log di integrità e diagnostica, che aiuta a identificare e risolvere eventuali problemi riscontrati.
  • Deve supportare un processo di sviluppo agile, incluso il supporto per l'integrazione continua e la distribuzione (CI/CD).
  • Oltre ai due front-end Web (applicazione tradizionale e a pagina singola), l'applicazione deve supportare anche le app client per dispositivi mobili che eseguono diversi tipi di sistemi operativi.
  • Deve supportare l'hosting multipiattaforma e lo sviluppo multipiattaforma.

Architettura di sviluppo di applicazioni di riferimento eShopOnContainers.

Figura 2-2. Architettura di sviluppo di applicazioni di riferimento eShopOnContainers.

L'applicazione eShopOnContainers è accessibile da client web o mobile che accedono all'applicazione tramite HTTPS, indirizzati verso l'applicazione server ASP.NET Core MVC o un opportuno gateway API. I gateway API offrono diversi vantaggi, ad esempio la separazione dei servizi back-end dai singoli client front-end e la migliore sicurezza. L'applicazione usa anche un modello correlato noto come Backends-for-Frontends (BFF), che consiglia di creare gateway API separati per ogni client front-end. L'architettura di riferimento dimostra la suddivisione dei gateway API in base al fatto che la richiesta provena da un client Web o mobile.

La funzionalità dell'applicazione è suddivisa in molti microservizi distinti. Ci sono servizi responsabili dell'autenticazione e dell'identità, l'inserzione degli articoli dal catalogo dei prodotti, la gestione dei carrello degli utenti e l'inserimento degli ordini. Ognuno di questi servizi separati ha una propria risorsa di archiviazione permanente. Non esiste un singolo archivio dati primario con cui interagiscono tutti i servizi. Al contrario, il coordinamento e la comunicazione tra i servizi viene eseguito in base alle esigenze e utilizzando un bus di messaggi.

Ognuno dei diversi microservizi è progettato in modo diverso, in base ai requisiti individuali. Questo aspetto significa che lo stack di tecnologie può essere diverso, anche se sono tutti compilati con .NET e progettati per il cloud. I servizi più semplici offrono l'accesso crud (Create-Read-Update-Delete) di base agli archivi dati sottostanti, mentre i servizi più avanzati usano approcci e modelli di progettazione Domain-Driven per gestire la complessità aziendale.

Tipi diversi di microservizi

figura 2-3. Tipi diversi di microservizi.

Panoramica del codice

Poiché usa microservizi, l'app eShopOnContainers include alcuni progetti e soluzioni separati nel repository GitHub. Oltre a soluzioni separate e file eseguibili, i vari servizi sono progettati per l'esecuzione all'interno dei propri contenitori, sia durante lo sviluppo locale che in fase di esecuzione nell'ambiente di produzione. La figura 2-4 mostra la soluzione completa di Visual Studio, in cui sono organizzati i diversi progetti.

Progetti nella soluzione Visual Studio.

Figura 2-4. Progetti nella soluzione Visual Studio.

Il codice è organizzato per supportare i diversi microservizi e, all'interno di ogni microservizio, il codice viene suddiviso in logica di dominio, problemi dell'infrastruttura e interfaccia utente o endpoint di servizio. In molti casi, le dipendenze di ogni servizio possono essere soddisfatte dai servizi di Azure nell'ambiente di produzione e opzioni alternative per lo sviluppo locale. Esaminiamo come i requisiti dell'applicazione si allineano con i servizi Azure.

Informazioni sui microservizi

Questo libro è incentrato sulle applicazioni native del cloud create con la tecnologia di Azure. Per altre informazioni sulle procedure consigliate per i microservizi e su come progettare applicazioni basate su microservizi, vedere il libro complementare Microservizi .NET: Architettura per applicazioni .NET in contenitori.