Informazioni sui componenti .NET Aspire

Completato

Sebbene ogni microservizio nell'app sia probabilmente univoco, spesso hanno requisiti simili per il backup di servizi, ad esempio database e cache. Può essere difficile scrivere codice in ogni microservizio che si interfaccia con questi servizi di backup. Invece, in .NET Aspire, tale codice viene ridotto man mano che si aggiunge un componente .NET Aspire. Esistono componenti predefiniti per molti requisiti di backup comunemente necessari nei microservizi.

Si supponga di lavorare per un'azienda di abbigliamento e attrezzature all'aperto. I team di sviluppo hanno iniziato a progettare i propri microservizi per la nuova app Web eShop. Ogni microservizio potrebbe richiedere servizi come database, servizi di messaggistica e cache. Si vuole valutare il modo in cui .NET Aspire può aiutare a interagire con questi servizi.

In questa unità verranno illustrati i componenti inclusi in .NET Aspire predefiniti e come scegliere il componente migliore per il microservizio.

Usare i componenti di .NET Aspire

Ogni componente .NET Aspire è un pacchetto NuGet ed è possibile aggiungerlo al progetto usando gestione pacchetti NuGet. In Visual Studio è disponibile una nuova voce di menu Aggiungi>componente.NET Aspire. Questa azione visualizza la gestione pacchetti con un filtro applicato per visualizzare solo i componenti .NET Aspire:

Screenshot che mostra la gestione pacchetti NuGet in Visual Studio che mostra i componenti .NET Aspire.

Nota

Si vedrà come usare questi componenti nell'esercizio più avanti in questo modulo.

Visual Studio Code con l'estensione C# Dev Kit supporta anche l'aggiunta di componenti .NET Aspire.

Screenshot che mostra il riquadro comandi di Visual Studio Code che elenca i tipi di progetto .NET Aspire.

In alternativa, l'interfaccia della riga di comando di .NET può aggiungere componenti .NET. Ad esempio:

dotnet add package Aspire.StackExchange.Redis --prerelease

Nel progetto AppHost è necessario registrare il componente e usarlo nei progetti che lo chiamano:

var cache = builder.AddRedis("cache");

builder.AddProject<Projects.AspireSample_Web>("webfrontend")
    .WithReference(cache);

È quindi possibile usare l'inserimento delle dipendenze per aggiungerlo al progetto di utilizzo:

build.AddRedisClient("cache");

L'altro codice di utilizzo varia a seconda del componente in uso.

Nota

Ogni tipo di componente .NET Aspire dispone in genere di un pacchetto di hosting equivalente. I pacchetti di hosting configurano le risorse e le dipendenze richieste dall'app, mentre l'utente li installa nel progetto AppHost, non nel progetto di utilizzo.

Componenti del database

Nelle app native del cloud, ogni microservizio è responsabile dell'archiviazione dei propri dati e potrebbe avere bisogno di un database di dati strutturati o semistrutturati in cui leggere e scrivere. Poiché ogni microservizio viene sviluppato in modo indipendente, è possibile che diversi sistemi di database siano in uso da parti diverse dell'applicazione completa.

.NET Aspire include componenti per i server di database relazionali seguenti:

  • PostgreSQL: Un server di database open source diffuso con un'implementazione del linguaggio SQL (Structured Query Language).
  • MySQL: Un altro server di database SQL open source.
  • Database SQL: Sistema di database SQL di Microsoft.

Nota

Il componente del database SQL .NET Aspire può funzionare con Microsoft SQL Server o il database SQL di Azure, che è un'implementazione di SQL Server nel cloud di Azure. Analogamente, Azure include implementazioni PaaS (Platform-as-a-Service) di PostgreSQL e MySQL. Il percorso in cui si esegue un database è una decisione che deve prendere ogni team di architettura di microservizi, ma i componenti .NET Aspire possono supportare molte posizioni cloud e non applicare alcun particolare servizio di hosting.

Se si vogliono usare dati semistrutturati, .NET Aspire include il supporto per questi sistemi NoSQL:

  • MongoDB: Un server di database NoSQL multipiattaforma, orientato ai documenti.
  • Azure Cosmos DB: Il sistema di database NoSQL flessibile di Microsoft, ospitato in Azure.

Componenti di archiviazione

In .NET Aspire i componenti di archiviazione vengono forniti per i microservizi che devono archiviare file, dati o messaggi negli account di archiviazione di Azure. Esiste un componente per ognuno dei tre servizi in Archiviazione di Azure. Scegliere il componente in base alle operazioni da eseguire con Archiviazione di Azure:

  • Archiviazione BLOB di Azure: Usare questo servizio per archiviare e recuperare file BLOB, ad esempio immagini e video.
  • Archiviazione tabelle di Azure: Usare questo servizio per archiviare e recuperare righe in tabelle di dati semistrutturate.
  • Archiviazione code di Azure: Usare questo servizio per aggiungere messaggi alle code per la distribuzione ad altri microservizi di sottoscrizione.

Componenti di messaggistica

Un modo per migliorare l'affidabilità e la flessibilità delle comunicazioni tra microservizi in un'app nativa del cloud consiste nell'usare soluzioni di messaggistica che forniscono code, argomenti e sottoscrizioni anziché comunicazioni dirette. .NET Aspire include componenti per i tre servizi di messaggistica seguenti. Scegliere il componente in base al broker di messaggistica che lo sviluppatore vuole usare:

  • RabbitMQ: Questo broker di messaggistica è ampiamente usato, open source e supporta diversi protocolli di messaggistica per fornire code, argomenti e sottoscrizioni.
  • Apache Kafka: Questo servizio elabora flussi di eventi, che possono includere messaggi, e include l'API Kafka Connect per importare ed esportare dati da e verso altri sistemi.
  • Bus di servizio di Azure: Questo broker di messaggistica è ospitato in Azure e fornisce code e distribuzione di messaggi basata su sottoscrizione.

Componenti di memorizzazione nella cache

Quando un microservizio riceve una richiesta da un utente o da un altro microservizio, potrebbe essere necessario costruire una risposta usando dati provenienti da più posizioni o operazioni complesse. Questa operazione può richiedere tempo. Memorizzando nella cache parti di tali risposte, è possibile risparmiare tempo in un secondo momento quando arrivano richieste simili o identiche. In questo modo, la memorizzazione nella cache ottimizza le prestazioni.

Un servizio cache comune è Redis. Dispone di funzionalità di broker di messaggistica e di database in memoria, ma viene usato più comunemente per memorizzare nella cache le risposte nelle applicazioni Web e nei servizi. .NET Aspirare ha tre componenti diversi che funzionano con Redis. Scegliere un componente in base all'attività di memorizzazione nella cache che si vuole ottenere nel microservizio:

  • Componente Redis: Usare questo componente quando si vuole usare Redis come database in memoria.
  • Componente memorizzazione nella cache dell'output Redis: Usare questo componente quando si desidera memorizzare nella cache risposte HTTP complete, ad esempio intere pagine Web.
  • Componente Cache distribuita Redis: Usare questo componente quando si vuole creare una singola cache per più microservizi nell'app.

Sicurezza

In un'applicazione nativa del cloud la sicurezza dei dati è spesso un argomento critico per l'azienda. Poiché i clienti potrebbero fornire dati personali e sensibili, è necessario assicurarsi che siano crittografati e protetti da intercettazioni o manomissioni. Le firme digitali e la crittografia richiedono di archiviare le chiavi private e recuperarle per la decrittografia. Azure Key Vault è un percorso in cui è possibile archiviare in modo sicuro le chiavi e altri segreti, ad esempio password e certificati.

.NET Aspire include il componente Azure Key Vault in modo da poter archiviare e recuperare facilmente i segreti in Azure Key Vault.

Altre informazioni