Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa guida di avvio rapido, distribuisci e ridimensiona un'app Orleans per abbreviare URL su Azure Container Apps. Con questa app, gli utenti possono inviare un URL completo all'app, che restituisce una versione abbreviata che può essere condivisa con altri utenti per indirizzarli al sito originale. Orleans e Azure offrono le funzionalità di scalabilità necessarie per ospitare app con traffico elevato come le app di abbreviazione degli URL. Orleans è compatibile anche con qualsiasi altro servizio di hosting che supporta .NET.
Al termine di questa guida di avvio rapido si avrà un'app scalabile in esecuzione in Azure per fornire la funzionalità di abbreviazione degli URL. Lungo il percorso si imparerà a:
- Prelevare un modello di Azure Developer CLI
- Distribuire un'app Orleans in Azure
- Ridimensionare l'app in più istanze
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- CLI per sviluppatori di Azure
- .NET 8
- Scaricatore
Ottenere e distribuire l'applicazione di esempio
L'applicazione di esempio è disponibile come modello di Azure Developer CLI. Questa guida rapida mostra come scaricare l'applicazione modello, distribuire il modello e il codice di esempio in Azure, modificare il modello per implementare il tipo di persistenza preferito, distribuire le risorse necessarie e poi distribuire l'applicazione finale.
Aprire un terminale in una directory vuota.
Eseguire l'autenticazione in Azure Developer CLI usando
azd auth login
. Seguire i passaggi specificati dallo strumento per eseguire l'autenticazione in Azure Developer CLI usando le credenziali di Azure preferite.azd auth login
Ottenere l'applicazione di esempio usando il modello AZD
orleans-url-shortener
e il comandoazd init
.azd init --template orleans-url-shortener
Durante l'inizializzazione, configurare un nome di ambiente univoco.
Suggerimento
Il nome dell'ambiente verrà usato anche come nome del gruppo di risorse di destinazione. Per questo avvio rapido è consigliabile usare
msdocs-orleans-url-shortener
.Distribuire l'account Azure Cosmos DB for NoSQL usando
azd up
. I modelli Bicep distribuiscono anche un'applicazione Web di esempio.azd up
Durante il processo di provisioning, scegli la sottoscrizione e la posizione desiderata. Attendere che il processo di provisioning e distribuzione sia completato. L'operazione può richiedere circa cinque minuti.
Al termine del provisioning delle risorse di Azure, nell'output viene incluso un URL dell'applicazione Web in esecuzione.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Usare l'URL nella console per passare all'applicazione Web nel browser.
Nella barra degli indirizzi del browser testare l'endpoint
shorten
aggiungendo un percorso URL, ad esempio/shorten?url=https://www.microsoft.com
. La pagina dovrebbe ricaricarsi e fornire un nuovo URL con un percorso abbreviato alla fine. Copia il nuovo URL negli appunti.{ "original": "https://www.microsoft.com", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Incollare l'URL abbreviato nella barra degli indirizzi e premere INVIO. La pagina dovrebbe ricaricarsi e reindirizzare all'URL specificato.
Distribuire servizi aggiuntivi
Con la distribuzione originale sono stati distribuiti solo i servizi minimi necessari per ospitare l'app di abbreviazione degli URL. Per usare un servizio dati di Azure per la persistenza dei grani, occorre prima configurare il modello per distribuire il servizio preferito.
Usando il terminale, eseguire
azd env set
per configurare la variabile di ambienteDEPLOY_AZURE_TABLE_STORAGE
per abilitare la distribuzione di Azure Cosmos DB for NoSQL.azd env set DEPLOY_AZURE_TABLE_STORAGE true
Usando il terminale, eseguire
azd env set
per configurare la variabile di ambienteDEPLOY_AZURE_COSMOS_DB_NOSQL
per abilitare la distribuzione di Azure Cosmos DB for NoSQL.azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
Eseguire
azd provision
per ridistribuire l'architettura dell'applicazione con la nuova configurazione. Attendere il completamento del processo di provisioning. Il processo può richiedere circa due minuti.azd provision
Suggerimento
In alternativa, è possibile eseguire di nuovo
azd up
, che effettuerà il provisioning dell'architettura e ridistribuirà l'applicazione.
Installare i pacchetti NuGet
Prima di usare il grano, è necessario installare i pacchetti NuGet Microsoft.Orleans.Clustering.*
e Microsoft.Orleans.Persistence.*
corrispondenti. Questi servizi usano il controllo degli accessi in base al ruolo per l'autenticazione senza password, quindi è necessario importare anche il Azure.Identity
pacchetto NuGet.
Cambia la directory di lavoro corrente in ./src/web/.
cd ./src/web
Importare il
Azure.Identity
pacchetto da NuGet:dotnet add package Azure.Identity --version 1.*
Importare i pacchetti
Microsoft.Orleans.Clustering.AzureStorage
eMicrosoft.Orleans.Persistence.AzureStorage
.Caratteristica / Funzionalità Pacchetto NuGet Raggruppamento Microsoft.Orleans.Clustering.AzureStorage
Persistenza Microsoft.Orleans.Persistence.AzureStorage
dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.* dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
Importare il
Azure.Identity
pacchetto da NuGet:dotnet add package Azure.Identity --version 1.*
Importare i pacchetti
Microsoft.Orleans.Clustering.Cosmos
eMicrosoft.Orleans.Persistence.Cosmos
.Caratteristica / Funzionalità Pacchetto NuGet Raggruppamento Microsoft.Orleans.Clustering.Cosmos
Persistenza Microsoft.Orleans.Persistence.Cosmos
dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.* dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
Configurare e ridistribuire l'app di esempio
L'app di esempio è attualmente configurata per creare un cluster localhost e rendere persistenti i grani in memoria. Quando è ospitato in Azure, Orleans può essere configurato per l'uso di uno stato più scalabile e centralizzato usando un servizio dati in Azure.
Aggiungere le direttive
using
seguenti:using Azure.Identity; using Orleans.Configuration;
Trovare e rimuovere il codice di configurazione
builder
corrente nel file src/web/Program.cs.builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); });
Sostituire la configurazione
builder
con l'esempio seguente, che implementa questi concetti chiave:- Viene aggiunto un controllo dell'ambiente condizionale per assicurare la corretta esecuzione dell'app negli scenari di sviluppo locale e ospitati in Azure.
- Il metodo
UseAzureStorageClustering
configura il cluster Orleans per l'uso di Archiviazione tabelle di Azure ed esegue l'autenticazione usando la classe DefaultAzureCredential. - Usare il metodo
Configure
per assegnare gli ID per il cluster Orleans. -
ClusterID
è un ID univoco per il cluster che consente ai client e ai silo di comunicare tra loro. -
ClusterID
può variare tra una distribuzione e l'altra. -
ServiceID
è un ID univoco per l'applicazione usato internamente da Orleans e deve rimanere coerente tra le distribuzioni.
if (builder.Environment.IsDevelopment()) { builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); }); } else { builder.Host.UseOrleans(siloBuilder => { var endpoint = new Uri(builder.Configuration["AZURE_TABLE_STORAGE_ENDPOINT"]!); var credential = new DefaultAzureCredential(); siloBuilder .UseAzureStorageClustering(options => { options.ConfigureTableServiceClient(endpoint, credential); }) .AddAzureTableGrainStorage(name: "urls", options => { options.ConfigureTableServiceClient(endpoint, credential); }) .Configure<ClusterOptions>(options => { options.ClusterId = "url-shortener"; options.ServiceId = "urls"; }); }); }
Sostituire la configurazione
builder
con l'esempio seguente, che implementa questi concetti chiave:- Viene aggiunto un controllo dell'ambiente condizionale per assicurare la corretta esecuzione dell'app negli scenari di sviluppo locale e ospitati in Azure.
- Il metodo
UseCosmosClustering
configura il cluster Orleans per l'uso di Azure Cosmos DB for NoSQL ed esegue l'autenticazione usando la classe DefaultAzureCredential. - Usare il metodo
Configure
per assegnare gli ID per il cluster Orleans. -
ClusterID
è un ID univoco per il cluster che consente ai client e ai silo di comunicare tra loro. -
ClusterID
può variare tra una distribuzione e l'altra. -
ServiceID
è un ID univoco per l'applicazione usato internamente da Orleans e deve rimanere coerente tra le distribuzioni.
if (builder.Environment.IsDevelopment()) { builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); }); } else { builder.Host.UseOrleans(siloBuilder => { var endpoint = builder.Configuration["AZURE_COSMOS_DB_NOSQL_ENDPOINT"]!; var credential = new DefaultAzureCredential(); siloBuilder .UseCosmosClustering(options => { options.ConfigureCosmosClient(endpoint, credential); }) .AddCosmosGrainStorage(name: "urls", options => { options.ConfigureCosmosClient(endpoint, credential); }) .Configure<ClusterOptions>(options => { options.ClusterId = "url-shortener"; options.ServiceId = "urls"; }); }); }
Eseguire
azd deploy
per ridistribuire il codice dell'applicazione come contenitore Docker. Attendere il completamento del processo di distribuzione. Il processo può richiedere circa un minuto.azd deploy
Suggerimento
In alternativa, è possibile eseguire di nuovo
azd up
, che effettuerà il provisioning dell'architettura e ridistribuirà l'applicazione.
Verificare il comportamento dell'app
Verificare che il codice aggiornato funzioni usando di nuovo l'applicazione distribuita e verificando dove vengono archiviati i dati.
Nella barra degli indirizzi del browser testare di nuovo l'endpoint
shorten
aggiungendo un percorso URL, ad esempio/shorten?url=https://learn.microsoft.com/dotnet/orleans
. La pagina dovrebbe ricaricarsi e fornire un nuovo URL con un percorso abbreviato alla fine. Copia il nuovo URL negli appunti.{ "original": "https://learn.microsoft.com/dotnet/orleans", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Incollare l'URL abbreviato nella barra degli indirizzi e premere INVIO. La pagina dovrebbe ricaricarsi e reindirizzare all'URL specificato.
Facoltativamente, è possibile verificare che i dati del cluster e dello stato siano archiviati come previsto nell'account di archiviazione creato.
Nel portale di Azure, vai al gruppo di risorse distribuito in questo quickstart.
Importante
Il nome dell'ambiente specificato in precedenza in questo quickstart è anche il nome del gruppo di risorse di destinazione.
Passare alla pagina panoramica dell'account Azure Storage.
Nella barra di navigazione selezionare Browser archiviazione.
Espandere l'elemento di navigazione Tabelle per individuare due tabelle create da Orleans:
- OrleansGrainState: questa tabella archivia i dati di intervallo di stato persistente usati dall'applicazione per gestire i reindirizzamenti URL.
- OrleansSiloInstances: Questa tabella tiene traccia dei dati essenziali del silo per il cluster Orleans.
Selezionare la tabella OrleansGrainState. La tabella contiene una voce di riga per ogni reindirizzamento URL salvato in modo permanente dall'app durante il tuo test.
Passare alla pagina di panoramica dell'account Azure Cosmos DB for NoSQL.
Nel riquadro di spostamento selezionare Esplora dati.
Osservare i contenitori seguenti creati in precedenza in questa guida:
OrleansStorage: questa tabella archivia i dati di intervallo di stato persistente usati dall'applicazione per gestire i reindirizzamenti URL.
OrleansCluster: Questa tabella tiene traccia dei dati essenziali del silo per il cluster Orleans.
Ridimensionare l'app
Orleans è progettato per le applicazioni distribuite. Anche un'app semplice come quella di abbreviazione degli URL può trarre vantaggio dalla scalabilità di Orleans. È possibile ridimensionare e testare l'app in più istanze seguendo questa procedura:
Tornare al gruppo di risorse distribuito in questa guida di avvio rapido.
Passare alla pagina di panoramica di Azure Container Apps.
Nel riquadro di spostamento selezionare Scala.
Selezionare Modifica e distribuisci e quindi passare alla scheda Ridimensiona.
Usare il dispositivo di scorrimento per impostare i valori di replica minimi e massimi su 4. Questo valore garantisce che l'app venga eseguita in più istanze.
Selezionare Crea per distribuire la nuova revisione.
Al termine della distribuzione, ripetere i passaggi di test della sezione precedente. L'app continua a funzionare come previsto in diverse istanze e può ora gestire un numero più elevato di richieste.