Microservizi .NET: Architettura per le applicazioni .NET incluse in contenitori

Book cover

EDIZIONE v8.0 - Aggiornato ad ASP.NET Core 8.0

Fare riferimento al log delle modifiche per gli aggiornamenti del libro e i contributi della community.

Questa guida offre un'introduzione allo sviluppo di applicazioni basate su microservizi e alla relativa gestione tramite i contenitori. Vengono descritti gli approcci alla progettazione e all'implementazione dell'architettura mediante i contenitori Docker.

Per rendere più semplice iniziare, la guida illustra un'applicazione di riferimento basata su microservizi e inclusa in un contenitore che è possibile esplorare. L'applicazione di riferimento è disponibile nel repository GitHub eShopOnContainers.

Introduzione

Sempre più spesso nelle aziende vengono usati i contenitori per realizzare risparmi sui costi, risolvere i problemi di distribuzione e migliorare DevOps e operazioni di produzione. Microsoft ha introdotto innovazioni dei contenitori per Windows e Linux tramite la creazione di prodotti come il servizio Azure Kubernetes e Azure Service Fabric, oltre che attraverso la collaborazione con aziende leader del settore come Docker, Mesosphere e Kubernetes. Questi prodotti offrono soluzioni per i contenitori che consentono alle aziende di creare e distribuire le applicazioni con la velocità e la scalabilità del cloud, indipendentemente dalla piattaforma o dagli strumenti scelti.

Docker sta diventando lo standard di fatto nel settore dei contenitori, supportato dai più significativi fornitori negli ecosistemi Windows e Linux (Microsoft è uno dei principali fornitori cloud che supportano Docker). In futuro, probabilmente Docker sarà presente in qualsiasi data center nel cloud o locale.

Inoltre, l'architettura dei microservizi sta emergendo come un importante approccio alle applicazioni distribuite di importanza strategica. In un'architettura basata su microservizi, l'applicazione si basa su una raccolta di servizi che possono essere sviluppati, testati, distribuiti e sottoposti a controllo della versione in modo indipendente.

Informazioni sulla guida

Questa guida offre un'introduzione allo sviluppo di applicazioni basate su microservizi e alla relativa gestione tramite i contenitori. Vengono descritti gli approcci alla progettazione e all'implementazione dell'architettura mediante i contenitori Docker. Per rendere più semplice iniziare a usare i contenitori e i microservizi, la guida illustra un'applicazione di riferimento basata su microservizi e inclusa in un contenitore che è possibile esplorare. L'applicazione di esempio è disponibile nel repository GitHub eShopOnContainers.

Questa guida fornisce indicazioni di base per lo sviluppo e l'architettura principalmente a livello di ambiente di sviluppo, con particolare attenzione per due tecnologie: Docker e .NET. La guida dovrebbe essere letta al momento di valutare la progettazione dell'applicazione, senza considerare l'infrastruttura (cloud o locale) dell'ambiente di produzione. Sarà possibile prendere le decisioni relative all'infrastruttura in un secondo momento, durante la creazione delle applicazioni di produzione. Pertanto, questa guida è pensata per essere indipendente dall'infrastruttura e maggiormente incentrata sull'ambiente di sviluppo.

Dopo aver consultato questa guida, il passaggio successivo sarà acquisire informazioni sui microservizi disponibili per la produzione in Microsoft Azure.

Versione

Questa guida è stata rivista per includere la versione .NET 8 e numerosi altri aggiornamenti correlati alla stessa "generazione" di tecnologie (ovvero Azure e tecnologie aggiuntive di terze parti) coincidenti nel tempo con la versione .NET 8. Per tale motivo anche la versione stampata è stata aggiornata alla versione 8.0.

Argomenti non trattati dalla guida

Questa guida non tratta gli argomenti relativi a ciclo di vita delle applicazioni, DevOps, pipeline CI/CD o lavoro in team. La guida complementare Ciclo di vita delle applicazioni Docker incluse in contenitori con la piattaforma e gli strumenti Microsoft è dedicata a tali argomenti. La presente guida inoltre non contiene i dettagli relativi all'implementazione nell'infrastruttura Azure, ad esempio le informazioni sugli specifici agenti di orchestrazione.

Risorse aggiuntive

Destinatari della guida

Questa guida è stata scritta per gli sviluppatori e gli architetti di soluzioni che non hanno familiarità con lo sviluppo di applicazioni basate su Docker e l'architettura basata su microservizi. La guida è destinata ai professionisti che vogliono sapere come progettare e implementare applicazioni di prova con le tecnologie di sviluppo Microsoft (con particolare attenzione per .NET) e i contenitori Docker.

Questa guida è inoltre utile per i responsabili decisionali tecnici, ad esempio gli Enterprise Architect, che hanno bisogno di una panoramica dell'architettura e della tecnologia prima di decidere quale approccio scegliere per le applicazioni distribuite nuove e moderne.

Come utilizzare questa guida

Nella prima parte della guida vengono presentati i contenitori Docker, viene illustrato come scegliere tra .NET 8 e .NET Framework come framework di sviluppo e viene fornita una panoramica dei microservizi. Questo contenuto è destinato ai progettisti e ai responsabili decisionali tecnici che vogliono una panoramica generale, senza informazioni dettagliate relative all'implementazione del codice.

La seconda parte della guida inizia con la sezione Processo di sviluppo per le applicazioni basate su Docker. Si concentra sullo sviluppo e sui modelli dei microservizi per l'implementazione di applicazioni tramite .NET e Docker. Questa sezione sarà di particolare interesse per gli sviluppatori e i progettisti che vogliono concentrarsi sul codice e sui dettagli relativi a modelli e implementazione.

eShopOnContainers è un'applicazione open source di riferimento per .NET e i microservizi, progettata per la distribuzione tramite contenitori Docker. L'applicazione è costituita da più sottosistemi, inclusi diversi front-end con interfaccia utente per negozi online (un'app Web MVC, un'applicazione Web a pagina singola e un'app per dispositivi mobili nativa). Include inoltre i microservizi e i contenitori back-end per tutte le operazioni lato server necessarie.

Lo scopo dell'applicazione consiste nel presentare i modelli di architettura. NON È UN MODELLO DA USARE IN PRODUZIONE per avviare applicazioni reali. Di fatto, l'applicazione è in uno stato beta permanente, perché viene usata anche per testare le nuove tecnologie potenzialmente interessanti quando diventano disponibili.

Invia commenti e suggerimenti

Il libro e gli esempi correlati sono in continua evoluzione, pertanto il feedback degli utenti è il benvenuto. Se si hanno commenti su come migliorare questo libro e lo si sta leggendo su <learn.microsoft.com>, usare la sezione Invia commenti e suggerimenti nella parte inferiore della pagina:

Feedback section of all .NET docs article footers.

Come evidenziato nello screenshot precedente, la sezione Invia commenti e suggerimenti consente di inviare commenti e suggerimenti per:

  • Questo prodotto: usando il modulo di feedback del prodotto .NET.
  • Questa pagina: usando un modello di problema GitHub con i dettagli della pagina.

Se si legge questo libro in formato PDF, è possibile inviare feedback creando un nuovo problema GitHub della documentazione di .NET o usando il modello di problema GitHub per gli e-book sull'architettura .NET.

Crediti

Coautori:

Cesar de la Torre, Senior PM, team del prodotto .NET, Microsoft Corp.

Bill Wagner, Senior Content Developer, C+E, Microsoft Corp.

Mike Rousos, Principal Software Engineer, team DevDiv CAT, Microsoft

Editor:

Mike Pope

Steve Hoag

Collaboratori e revisori:

Jeffrey Richter, Partner Software Eng, team di Azure, Microsoft

Jimmy Bogard, Chief Architect di Headspring

Udi Dahan, fondatore e CEO di Particular Software

Jimmy Nilsson, cofondatore e CEO di Factor10

Glenn Condron, Senior Program Manager, team di ASP.NET

Mark Fussell, Principal PM Lead, team di Azure Service Fabric, Microsoft

Diego Vega, PM Lead, team di Entity Framework, Microsoft

Barry Dorrans, Senior Security Program Manager

Rowan Miller, Senior Program Manager, Microsoft

Ankit Asthana, Principal PM Manager, team di .NET, Microsoft

Scott Hunter, Partner Director PM, team di .NET, Microsoft

Nish Anil, Senior Program Manager, team di .NET, Microsoft

Dylan Reisenberger, Architect and Dev Lead di Polly

Steve "ardalis" Smith - Software Architect e Trainer - Ardalis.com

Ian Cooper, Coding Architect di Brighter

Unai Zorrilla, Architect and Dev Lead di Plain Concepts

Eduard Tomas, Dev Lead di Plain Concepts

Ramon Tomas, sviluppatore di Plain Concepts

David Sanz, sviluppatore di Plain Concepts

Javier Valero, Chief Operating Officer di Grupo Solutio

Pierre Millet, Senior Consultant, Microsoft

Michael Friis, Product Manager, Docker Inc

Charles Lowell, Software Engineer, team VS CAT, Microsoft

Miguel Veloso, Software Development Engineer presso Plain Concepts

Sumit Ghosh, Principal Consultant presso Neudesic

PUBBLICATO DA

Microsoft Developer Division, team dei prodotti .NET e Visual Studio

Una divisione di Microsoft Corporation

One Microsoft Way

Redmond, Washington, 98052-6399

Copyright © 2023 Microsoft Corporation

Tutti i diritti sono riservati. Nessuna parte del contenuto di questo libro può essere riprodotta o trasmessa in qualsiasi forma o con qualsiasi mezzo senza il permesso scritto dell'editore.

Questo libro viene fornito "così com'è" ed esprime i punti di vista e le opinioni dell'autore. I punti di vista, le opinioni e le informazioni espresse nel presente libro, inclusi URL e altri riferimenti a siti Web Internet, sono soggetti a modifiche senza preavviso.

Alcuni esempi forniti nel presente documento hanno solo scopo illustrativo e sono fittizi. Non è intesa né dovrà intendersi alcuna connessione.

Microsoft e i marchi elencati in https://www.microsoft.com nella pagina Web "Marchi" sono marchi del gruppo di società Microsoft.

Mac e macOS sono marchi registrati di Apple Inc.

Il logo Docker con la balena è un marchio registrato di Docker, Inc. Usato su autorizzazione.

Tutti gli altri marchi e log citati nel presente documento appartengono ai rispettivi proprietari.