Esercitazione su .NET - Il tuo primo microservizio
Intro
Scopo
Acquisisci familiarità con i blocchi predefiniti per la creazione di microservizi con .NET.
Prerequisiti
Nessuna.
macOS 12.0 o versioni successive.
Tempo di completamento
15 minuti
Scenario
Crea un servizio semplice che restituisca un elenco di valori, quindi esegui il servizio in un contenitore Docker.
Installa .NET SDK
Per iniziare a creare app .NET, scarica e installa l’SDK .NET.
Scaricare .NET 8 SDK x64 (Intel)
Scaricare .NET 8 SDK Arm64 (Apple Silicon)
Se si usa un Mac con un chip Apple M1 o M2, è necessario installare la versione Arm64 dell'SDK.
Verificare che tutto sia installato correttamente
Dopo l'installazione, aprire un nuovo terminale ed eseguire il comando seguente:
Dopo l'installazione, aprire un nuovo terminale ed eseguire questo comando:
dotnet --version
Se l'installazione è andata a buon fine, dovresti visualizzare la versione 8.0.100 o superiore:
8.0.100
Se tutto sembra corretto, selezionare il pulsante Continuare di seguito per passare al passaggio successivo.
Si è verificato un errore?
Se ricevi un errore 'dotnet' non è riconosciuto come comando interno o esterno, assicurati di aver aperto un nuovo prompt dei comandi. Se il riavvio rapido del computer non risolve il problema, usa il pulsante Si è verificato un problema per ricevere assistenza.
Crea il servizio
Nel prompt dei comandi eseguire questo comando per creare l'app:
Nel terminale eseguire questi comandi per creare l'app:
dotnet new webapi -o MyMicroservice --no-https
Passare quindi alla nuova directory creata dal comando precedente:
cd MyMicroservice
Cosa significano questi comandi?
Il comando dotnet
crea una nuova applicazione di tipo webapi
,ovvero un endpoint dell'API REST.
- Il parametro
-o
crea una directory denominataMyMicroservice
in cui è archiviata la tua app. - Il flag
--no-https
crea un'app che verrà eseguita senza un certificato HTTPS, per semplificare la distribuzione.
Il comando cd MyMicroservice
ti consente di passare alla directory dell'app appena creata.
Il codice generato
Nella directory MyMicroservice
sono stati creati diversi file per fornire un servizio semplice pronto per l'esecuzione, inclusi i seguenti file:
Program.cs
è il file del punto di ingresso e include tutte le impostazioni e configurazioni caricate all'avvio dell'app. Inoltre, contiene il codice per una semplice API che fornisce le previsioni meteo per i prossimi cinque giorni. Avvia anche l'applicazione.MyMycroservice.http
è utilizzato per testare i progetti ASP.NET Core.MyMicroservice.csproj
specifica la versione di .NET a cui l'applicazione fa riferimento, le librerie utilizzate dal progetto, e altro ancora.- Il file
launchSettings.json
all'interno della directoryProperties
definisce impostazioni del profilo diverse per l'ambiente di sviluppo locale. Un numero di porta compreso tra 5000 e 5300 viene assegnato automaticamente al momento della creazione del progetto e salvato in questo file.
Il codice seguente mostra il contenuto del file Program.cs
:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
Seleziona il pulsante Continua qui sotto per procedere al passaggio successivo.
Si è verificato un errore?
Se si riceve un messaggio simile a Impossibile creare il modello "API Web ASP.NET Core". Non è stato possibile creare il modello. Dettagli: l'accesso al percorso 'C:\Windows\System32\MyMicroservice' è stato negato, modificare la directory corrente in una directory in cui si dispone delle autorizzazioni per creare una nuova cartella e provare a eseguire di nuovo il comando.
Se Windows non riesce a trovare l'SDK quando si prova a creare il progetto e si è certi di aver installato l'SDK, il computer potrebbe avere un problema con la variabile di ambiente PATH. Vedere questo post su Stack Overflowper istruzioni su come diagnosticare e risolvere il problema.
Se non riesci a risolvere il problema riscontrato, seleziona il pulsante Si è verificato un problema di seguito seguente per ricevere assistenza.
Esegui il servizio
Nel prompt dei comandi, eseguire il comando seguente:
Nel terminale eseguire questo comando:
dotnet run
Dovrebbe essere visualizzato un output simile al seguente:
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5020
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Ana\MyMicroservice
Attendi che l'applicazione mostri che è in ascolto su http://localhost:<port number>, quindi apri un browser e passa a http://localhost:<port number>/weatherforecast.
In questo esempio, veniva mostrato che era in ascolto sulla porta 5020, quindi l'immagine seguente mostra l'URL localhost:5020/weatherforecast
.
Congratulazioni, è stato eseguito un semplice servizio in esecuzione.
Premere CTRL+C nel prompt dei comandi per terminare il comando dotnet run
che esegue il servizio in locale.
Premi CTRL+C sul terminale per terminare il comando dotnet run
che esegue il servizio in locale.
Si è verificato un errore?
Se si riceve un messaggio simile a Non è stata trovata alcuna pagina Web per l'indirizzo Web: http://localhost:5020, assicurarsi di visualizzare la pagina Previsioni meteo dell'applicazione. L'URL dovrebbe essere simile a http://localhost:5020/weatherforecast e non solo http://localhost:5020.
Installare Docker
Docker è una piattaforma che consente di combinare un'app con la sua configurazione e le sue dipendenze in un'unica unità distribuibile in modo indipendente, denominata contenitore.
Se Docker è già installato, verifica che sia la versione 23.0.0 o quella successiva.
Scarica e installa
Verrà richiesto di eseguire la registrazione per Docker Store prima di poter scaricare il programma di installazione.
Per impostazione predefinita, Docker userà i contenitori Linux in Windows. Lasciare queste impostazioni di configurazione invariate quando richiesto nel programma di installazione.
Dopo l'installazione di Docker, potrebbe essere richiesto di disconnettersi per completare l'installazione.
Verifica che Docker sia pronto per l'uso
Dopo l'installazione, aprire un nuovo terminale ed eseguire il comando seguente:
Dopo l'installazione, aprire un nuovo terminale ed eseguire questo comando:
docker --version
Se il comando viene eseguito e vengono visualizzate alcune informazioni sulla versione, Docker è installato correttamente.
Aggiungi metadati Docker
Per l'esecuzione con un'immagine Docker, è necessario un Dockerfile
, ovvero un file di testo che contiene le istruzioni su come compilare l'app come immagine Docker. Un'immagine Docker contiene tutto il necessario per eseguire l'app come contenitore Docker.
Torna alla directory dell'app
Dopo aver aperto un nuovo prompt dei comandi nel passaggio precedente, è necessario tornare alla directory in cui è stato creato il servizio.
Dopo aver aperto un nuovo terminale nel passaggio precedente, è necessario tornare alla directory in cui è stato creato il servizio.
cd MyMicroservice
Aggiungi un Dockerfile
Crea un file denominato Dockerfile
con questo comando:
touch Dockerfile
fsutil file createnew Dockerfile 0
Puoi quindi aprirlo nel tuo editor di testo preferito.
È quindi possibile aprirlo manualmente nell'editor di testo preferito o con questo comando:
open Dockerfile
start Dockerfile
Sostituire il contenuto di Dockerfile
con il codice seguente nell'editor di testo:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY MyMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
Nota: assicurati di assegnare al file il nome Dockerfile
e non Dockerfile.txt
o altro.
Facoltativo: aggiungere un file .dockerignore
Un file con estensione dockerignore riduce il set di file usati come parte di 'docker build'. Un minor numero di file si traduce in compilazioni più veloci.
Creare un file denominato .dockerignore
(simile al file .gitignore
, se si ha familiarità con questi file) con questo comando:
touch .dockerignore
fsutil file createnew .dockerignore 0
Puoi quindi aprirlo nel tuo editor di testo preferito.
È quindi possibile aprirlo manualmente nell'editor di testo preferito o con questo comando:
open .dockerignore
start .dockerignore
Sostituire il contenuto di .dockerignore
con il codice seguente nell'editor di testo:
Dockerfile
[b|B]in
[O|o]bj
Crea un'immagine Docker
Eseguire il comando seguente:
docker build -t mymicroservice .
Il comando docker build
utilizza il Dockerfile
per compilare un'immagine Docker.
- Il parametro
-t mymicroservice
indica di contrassegnare l'immagine comemymicroservice
. - Il parametro finale indica la directory da utilizzare per trovare il
Dockerfile
(.
specifica la directory corrente). - Questo comando consente di scaricare e compilare tutte le dipendenze per creare un'immagine Docker e potrebbe richiedere del tempo.
Puoi eseguire il comando seguente per visualizzare un elenco di tutte le immagini disponibili nel computer, inclusa quella appena creata.
docker images
Esegui immagine Docker
È possibile eseguire l'app in un contenitore usando il comando seguente:
docker run -it --rm -p 3000:8080 --name mymicroservicecontainer mymicroservice
Per accedere all'applicazione in esecuzione in un contenitore, puoi passare al seguente URL: http://localhost:3000/weatherforecast
Facoltativamente, è possibile visualizzare il contenitore in esecuzione in un prompt dei comandi separato usando il comando seguente:
Facoltativamente, è possibile visualizzare il contenitore in esecuzione in una finestra del terminale separata usando il comando seguente:
docker ps
Premi CTRL+C sul prompt dei comandi per terminare il comando docker run
che sta eseguendo il servizio in un contenitore.
Premi CTRL+C sul terminale per terminare il comando docker run
che esegue il servizio in un contenitore.
Congratulazioni! È stato creato un piccolo servizio indipendente che può essere distribuito e ridimensionato usando contenitori Docker.
Questi sono i blocchi predefiniti fondamentali dei microservizi.
Si è verificato un errore?
Se si riceve un messaggio simile a ERRORE: errore durante la connessione: questo errore può indicare che il daemon Docker non è in esecuzione, potrebbe indicare che è necessario avviare l'applicazione Docker. Verificare che il client Docker sia in esecuzione eseguendo docker run hello-world
. Verranno eseguiti il pull e l'immagine. Per altre informazioni, vedere la documentazione di Docker per istruzioni su come diagnosticare e risolvere il problema.
Passaggi successivi
Congratulazioni! Hai creato un servizio semplice e poi lo hai eseguito in un contenitore Docker.
La prossima esercitazione spiega come distribuire il tuo microservizio nel cloud.
Esercitazione: distribuire il microservizio in Azure
Potrebbe interessarti anche...