Come aggiungere orchestrazione a un'app .NET esistente

Completato

.NET Aspire può essere suddiviso in soluzioni per tre problemi che affrontano le moderne app native del cloud. Si tratta di:

  1. Gestione della complessità dell'orchestrazione tra microservizi.
  2. Semplificare il modo in cui i microservizi usano i componenti tramite pacchetti NuGet.
  3. Supporto della velocità dello sviluppatore tramite strumenti e modelli.

In questa unità, vedere come l'uso dell'orchestrazione .NET Aspire offre vantaggi alle app native del cloud esistenti. Vedere quindi come registrare l'app nell'orchestrazione .NET Aspire ed esaminare le modifiche apportate alla soluzione.

Vantaggi dell'orchestrazione .NET Aspire

L'orchestrazione è il coordinamento e la gestione dei vari servizi all'interno di un'app nativa del cloud. .NET Aspire fornisce astrazioni per la gestione dell'individuazione dei servizi, delle variabili di ambiente e delle configurazioni dei contenitori della soluzione. Queste astrazioni forniscono anche modelli di configurazione coerenti tra app con molti componenti e servizi.

Diagramma che mostra la relazione tra il progetto AppHost .NET Aspire e gli altri servizi in un'app.

.NET Aspire ha tre tipi di calcolo di base supportati con l'orchestrazione:

  • ProjectResource: Un progetto .NET, ad esempio ASP.NET app Web Core.
  • ContainerResource: Immagine del contenitore, ad esempio un'immagine Docker contenente Redis.
  • ExecutableResource: Un file eseguibile.

Confrontare .NET Aspire con la modalità di gestione dell'individuazione dei servizi con Docker Compose. Docker Compose è eccellente, ma inizia a diventare poco produttivo quando bisogna solo eseguire diversi progetti o eseguibili. È necessario compilare immagini del contenitore, comporre il file YAML per connetterle e quindi eseguire le app all'interno dei contenitori. Sono inoltre disponibili sostituzioni di variabili di ambiente (e inclusioni) e non IntelliSense ed è difficile determinare esattamente cosa è in esecuzione e perché. Il debug può anche essere difficile.

La configurazione tramite codice dichiarativo è migliore. Con .NET Aspirare, non è necessario imparare nulla oltre a ciò che si conosce già. .NET Aspire è un'esperienza migliore, è facile iniziare a usarla e aumentare le prestazioni con un agente di orchestrazione come Docker Compose, usando un linguaggio di programmazione reale.

L'orchestrazione .NET Aspire supporta anche lo sviluppo nei modi seguenti:

  • Composizione dell'app: .NET Aspire specifica i progetti .NET, i contenitori, i file eseguibili e le risorse cloud che costituiscono l'applicazione.
  • Individuazione dei servizi e gestione delle stringhe di connessione: L'host dell'app gestisce l'inserimento delle stringhe di connessione corrette e delle informazioni di individuazione dei servizi per semplificare l'esperienza di sviluppo.

Integrare l'app esistente nell'orchestrazione .NET Aspire

Visual Studio offre menu per integrare un progetto esistente nell'orchestrazione .NET Aspire.

Screenshot del menu Aggiungi che mostra il supporto di .NET Aspire Orchestrator evidenziato.

La prima volta che si aggiunge l'orchestrazione alla soluzione, una finestra di dialogo richiede il prefisso del nome del progetto e spiega che vengono aggiunti i progetti AppHost e ServiceDefaults .NET Aspire. Quando si aggiungono altri progetti a una soluzione già orchestrata, la finestra di dialogo notifica che il progetto AppHost viene aggiornato per includere tali progetti.

Se si sta creando un nuovo progetto, durante il nuovo flusso di lavoro del progetto, Visual Studio chiede se si vuole integrare l'orchestrazione .NET Aspire.

Screenshot del nuovo flusso di lavoro del progetto che mostra l'opzione Enlist in Aspire orchestration evidenziata.

Modifiche che Aspire apporta una soluzione esistente

Quando si aggiunge l'orchestrazione .NET Aspire alla soluzione, vengono apportate le modifiche seguenti:

  • Viene aggiunto un progetto AppHost. Il progetto contiene il codice di orchestrazione. Diventa il punto di ingresso per l'app ed è responsabile dell'avvio e dell'arresto dell'app. Gestisce anche l'individuazione del servizio e la gestione delle stringhe di connessione.
  • Viene aggiunto un progetto ServiceDefaults. Il progetto configura OpenTelemetry, aggiunge endpoint di controllo integrità predefiniti e abilita l'individuazione del servizio tramite HttpClient.
  • Il progetto di avvio predefinito della soluzione viene modificato in AppHost.
  • Le dipendenze dei progetti registrati nell'orchestrazione vengono aggiunte al progetto AppHost.
  • La dashboard .NET Aspire viene aggiunta alla soluzione, che consente ai collegamenti di accedere a tutti gli endpoint del progetto nella soluzione.
  • La dashboard aggiunge log, tracce e metriche per i progetti nella soluzione.

Se si aggiunge l'orchestrazione a un progetto di app Web, .NET Aspire aggiunge automaticamente un riferimento al progetto ServiceDefaults. Apporta quindi le modifiche seguenti al codice in Program.cs:

  • Aggiunge una chiamata a AddServiceDefaults, che abilita l'individuazione predefinita di OpenTelemetry, contatori e servizi.
  • Aggiunge una chiamata a MapDefaultEndpoints, che abilita gli endpoint predefiniti, ad esempio /health e /alive.