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

Book cover

EDITION v6.0 - Aggiornato a ASP.NET Core 6.0

Fare riferimento al changelog 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. Illustra gli approcci di progettazione e implementazione dell'architettura usando i contenitori .NET e 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 di cloud che supportano Docker. In futuro, Docker probabilmente sarà ubiquiente in qualsiasi data center nel cloud o in 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. Illustra gli approcci di progettazione e implementazione dell'architettura usando i contenitori .NET e 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 fondamentali sullo sviluppo e sull'architettura principalmente a livello di ambiente di sviluppo con un'attenzione su 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 modificata per coprire la versione di .NET 6 insieme a molti aggiornamenti aggiuntivi correlati alla stessa "onda" di tecnologie (ovvero Azure e tecnologie di terze parti aggiuntive) in coincidenza con la versione .NET 6. Ecco perché la versione del libro è stata aggiornata anche alla versione 6.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. Questa guida è per te se vuoi imparare a progettare, progettare e implementare applicazioni di prova con tecnologie di sviluppo Microsoft (con particolare attenzione su .NET) e con 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 usare questa guida

La prima parte di questa guida introduce contenitori Docker, illustra come scegliere tra .NET 6 e il .NET Framework come framework di sviluppo e fornisce 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 sugli schemi di sviluppo e 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.

L'applicazione eShopOnContainers è un'app di riferimento open source per .NET e microservizi progettati per essere distribuiti usando contenitori Docker. L'applicazione è costituita da più sottosistemi, tra cui diversi front-end dell'interfaccia utente di e-store (un'app Web MVC, un'app Web SPA 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. Infatti, l'applicazione si trova in uno stato beta permanente, poiché viene usata anche per testare nuove tecnologie potenzialmente interessanti come vengono visualizzate.

Inviateci i vostri commenti!

Questa guida è stata scritta per aiutare il lettore a comprendere l'architettura delle applicazioni incluse in contenitori e dei microservizi in .NET. La guida e l'applicazione di riferimento correlata sono in evoluzione, pertanto qualsiasi commento è molto apprezzato. Se si hanno commenti su come è possibile migliorare questa guida, inviare commenti e suggerimenti a https://aka.ms/ebookfeedback.

Credits

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, ceo fondatore & , particolare 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 © 2022 da 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 contenute nel presente libro, inclusi gli URL e altri riferimenti a siti Web, possono essere soggetti a modifiche senza preavviso.

Alcuni esempi usati in questo documento vengono forniti a scopo puramente illustrativo e sono fittizi. Nessuna associazione reale o connessione è intenzionale o può essere desunta.

Microsoft e i marchi elencati nella pagina Web relativa ai marchi all'indirizzo https://www.microsoft.com sono marchi delle società del gruppo Microsoft.

Mac e macOS sono marchi registrati di Apple Inc.

Il logo della balena Docker è un marchio registrato di Docker, Inc. Usato per autorizzazione.

Tutti gli altri marchi e logo appartengono ai rispettivi proprietari.