Didacticiel .NET - Votre premier microservice
Intro
Objectif
Familiarisez-vous avec les éléments de base pour créer des microservices avec .NET.
Prérequis
Aucun.
macOS 12.0 ou versions ultérieures.
Durée d’exécution
15 minutes
Scénario
Créez un service simple qui retourne une liste de valeurs, puis exécutez le service dans un conteneur Docker.
Installer le SDK .NET
Pour commencer à créer des applications .NET, téléchargez et installez le .NET SDK.
Télécharger le Kit de développement logiciel (SDK) .NET 8 (64 bits)
Télécharger 32 bits
|
Téléchargement Arm64
Télécharger le Kit de développement logiciel (SDK) .NET 8 x64 (Intel)
Télécharger le Kit de développement logiciel (SDK) .NET 8 Arm64 (Apple Silicon)
Si vous utilisez un Mac équipé d'une puce Apple M1 ou M2, vous devez installer la version Arm64 du SDK.
Vérifier tous les éléments installés correctement
Une fois l'installation terminée, ouvrez une nouvelle invite de commande et exécutez la commande suivante :
Une fois l'installation terminée, ouvrez un nouveau terminal et exécutez la commande suivante :
dotnet --version
Si l’installation a réussi, vous devriez voir la version 8.0.100 ou ultérieure générée :
8.0.100
Si tout semble correct, sélectionnez le bouton Continuer ci-dessous pour passer à l'étape suivante.
Vous avez une erreur ?
Si vous recevez un ’dotnet’ n’est pas reconnu comme une erreur de commande interne ou externe, veillez à ouvrir une nouvelle invite de commandes. Si redémarrer rapidement votre machine ne résout pas le problème, utilisez le bouton J’ai rencontré un problème pour obtenir de l’aide pour résoudre le problème.
Créer votre service
Dans votre invite de commande, exécutez la commande suivante pour créer votre application :
Dans votre terminal, exécutez la commande suivante pour créer votre application :
dotnet new webapi -o MyMicroservice --no-https
Ensuite, accédez au nouveau répertoire créé par la commande précédente :
cd MyMicroservice
Que signifient ces commandes ?
La commande dotnet
crée une nouvelle application de type webapi
(c'est un point de terminaison de l'API REST).
- Le paramètre
-o
crée un répertoire nomméMyMicroservice
où votre application est stockée. - L’indicateur
--no-https
crée une application qui s’exécutera sans certificat HTTPS afin de simplifier le déploiement.
La commande cd MyMicroservice
vous place dans le répertoire de l'application nouvellement créée.
Le code généré
Plusieurs fichiers ont été créés dans le répertoire MyMicroservice
, pour vous offrir un service simple prêt à s’exécuter, y compris les fichiers suivants :
Program.cs
est le fichier de point d’entrée et contient tous les paramètres et la configuration qui sont chargés au démarrage de l’application et qui contient le code d’une API simple qui retourne les prévisions météo pour les cinq prochains jours. Démarre également l’application.MyMycroservice.http
est utilisé pour tester ASP.NET Core projets.MyMicroservice.csproj
définit la version de .NET ciblée par l’application, les bibliothèques référencées par le projet, etc.- Le fichier
launchSettings.json
dans le répertoireProperties
définit différents paramètres de profil pour l'environnement de développement local. Un numéro de port compris entre 5000 et 5300 est automatiquement attribué à la création du projet et enregistré dans ce fichier.
Le code suivant affiche le contenu du fichier 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);
}
Sélectionnez le bouton Continuer ci-dessous pour passer à l’étape suivante.
Vous avez une erreur ?
Si vous recevez un message similaire à Le modèle "API Web ASP.NET Core" n'a pas pu être créé. Échec de la création du modèle. Détails : l'accès au chemin d'accès 'C:\Windows\System32\MyMicroservice' est refusé, changez votre répertoire actuel en un répertoire où vous avez les autorisations pour créer un nouveau dossier et essayez d'exécuter à nouveau la commande.
Si Windows ne trouve pas le SDK lorsque vous essayez de créer le projet et que vous êtes sûr d'avoir installé le SDK, votre machine peut avoir un problème avec la variable d'environnement PATH. Consultez cet article sur Stack Overflow pour obtenir des instructions sur la façon de diagnostiquer et de résoudre ce problème.
Si vous ne parvenez pas à résoudre le problème que vous rencontrez, sélectionnez le bouton J’ai rencontré un problème ci-dessous pour obtenir de l’aide pour résoudre le problème.
Exécutez votre service
Dans votre invite de commande, exécutez la commande suivante :
Dans votre terminal, exécutez la commande suivante :
dotnet run
Vous devriez voir une sortie similaire à ce qui suit :
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
Attendez que l’application affiche qu’elle écoute sur http://localhost:<port number>, puis ouvrez un navigateur et accédez à http://localhost:<port number>/weatherforecast.
Dans cet exemple, il a montré qu’il était à l’écoute sur le port 5020. L’image suivante montre donc l’URL localhost:5020/weatherforecast
.
Félicitations, vous avez un service simple en cours d’exécution !
Appuyez sur CTRL+C sur votre invite de commandes pour mettre fin à la commande dotnet run
qui exécute le service localement.
Appuyez sur CTRL+C sur votre terminal pour mettre fin à la commande dotnet run
qui exécute le service localement.
Vous avez une erreur ?
Si vous recevez un message similaire à Aucune page web n’a été trouvée pour l’adresse web : http://localhost:5020, vérifiez que vous consultez la page Prévisions météo de votre application. L’URL doit ressembler à http://localhost:5020/weatherforecast et pas seulement à http://localhost:5020.
Installer Docker
Docker est une plateforme qui vous permet de combiner une application ainsi que sa configuration et ses dépendances dans une seule unité déployable indépendamment appelée conteneur.
Si Docker est déjà installé, assurez-vous qu’il s’agit de la version 23.0.0 ou supérieure.
Télécharger et installer
Vous serez invité à vous inscrire au Docker Store avant de pouvoir télécharger le programme d’installation.
Par défaut, Docker utilise des conteneurs Linux sur Windows. Laissez ces paramètres de configuration tels quel lorsque vous y êtes invité dans le programme d’installation.
Après l’installation de Docker, vous pouvez être invité à vous déconnecter pour finaliser l’installation.
Vérifier que Docker est prêt à être utilisé
Une fois l'installation terminée, ouvrez une nouvelle invite de commande et exécutez la commande suivante :
Une fois l'installation terminée, ouvrez un nouveau terminal et exécutez la commande suivante :
docker --version
Si la commande s’exécute et affiche des informations de version, Docker est correctement installé.
Ajouter des métadonnées Docker
Pour exécuter avec une image Docker, vous avez besoin d’un code Dockerfile
— un fichier texte qui contient des instructions sur la création de votre application en tant qu’image Docker. Une image Docker contient tout ce qui est nécessaire pour exécuter votre application en tant que conteneur Docker.
Revenir à l’annuaire d’applications
Comme vous avez ouvert une nouvelle invite de commandes à l’étape précédente, vous devez revenir au répertoire dans lequel vous avez créé votre service.
Comme vous avez ouvert un nouveau terminal à l’étape précédente, vous devez revenir au répertoire dans lequel vous avez créé votre service.
cd MyMicroservice
Ajouter un fichier Docker
Créez un fichier appelé Dockerfile
avec cette commande :
touch Dockerfile
fsutil file createnew Dockerfile 0
Vous pouvez ensuite l’ouvrir dans votre éditeur de texte favori.
Vous pouvez ensuite l'ouvrir dans votre éditeur de texte préféré manuellement ou avec cette commande :
open Dockerfile
start Dockerfile
Remplacez le contenu du Dockerfile
par ce qui suit dans l'éditeur de texte :
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"]
Remarque : Veillez à nommer le fichier en tant que Dockerfile
et non Dockerfile.txt
ou un autre nom.
Facultatif : ajoutez un fichier .dockerignore
Un fichier .dockerignore réduit l'ensemble de fichiers utilisés dans le cadre de `docker build`. Moins de fichiers se traduira par des builds plus rapides.
Créez un fichier appelé fichier .dockerignore
(similaire à un fichier .gitignore
si vous connaissez bien ces fichiers) avec cette commande :
touch .dockerignore
fsutil file createnew .dockerignore 0
Vous pouvez ensuite l’ouvrir dans votre éditeur de texte favori.
Vous pouvez ensuite l'ouvrir dans votre éditeur de texte préféré manuellement ou avec cette commande :
open .dockerignore
start .dockerignore
Remplacez le contenu de .dockerignore
par ce qui suit dans l'éditeur de texte :
Dockerfile
[b|B]in
[O|o]bj
Créer une image Docker
Exécutez la commande suivante :
docker build -t mymicroservice .
La commande docker build
utilise Dockerfile
pour générer une image Docker.
- Le paramètre
-t mymicroservice
lui indique d’étiqueter (ou de nommer) l’image en tant quemymicroservice
. - Le paramètre final indique le répertoire à utiliser pour rechercher le
Dockerfile
(.
spécifie le répertoire actif). - Cette commande télécharge et génère toutes les dépendances pour créer une image Docker et peut prendre un certain temps.
Vous pouvez exécuter la commande suivante pour afficher la liste de toutes les images disponibles sur votre ordinateur, y compris celle que vous venez de créer.
docker images
Exécuter l'image Docker
Vous pouvez exécuter votre application dans un conteneur à l'aide de la commande suivante :
docker run -it --rm -p 3000:8080 --name mymicroservicecontainer mymicroservice
Vous pouvez accéder à l’URL suivante pour accéder à votre application s’exécutant dans un conteneur : http://localhost:3000/weatherforecast
Si vous le souhaitez, vous pouvez afficher votre conteneur en cours d'exécution dans une invite de commande distincte à l'aide de la commande suivante :
Si vous le souhaitez, vous pouvez afficher votre conteneur en cours d'exécution dans une fenêtre de terminal distincte à l'aide de la commande suivante :
docker ps
Appuyez sur CTRL+C sur votre invite de commandes pour mettre fin à la commande docker run
qui exécute le service dans un conteneur.
Appuyez sur CTRL+C sur votre terminal pour mettre fin à la commande docker run
qui exécute le service dans un conteneur.
Félicitations ! Vous avez créé un petit service indépendant qui peut être déployé et mis à l’échelle à l’aide de conteneurs Docker.
Ce sont les éléments fondamentaux des microservices.
Vous avez une erreur ?
Si vous recevez un message similaire à ERREUR : erreur lors de la connexion : cette erreur peut indiquer que le démon Docker n’est pas en cours d’exécution, cela peut indiquer que vous devez lancer l’application Docker. Vérifiez que le client Docker s’exécute en exécutant docker run hello-world
. Cette opération doit extraire et exécuter l’image. Pour plus d’aide, consultez la documentation de Docker pour obtenir des instructions sur la façon de diagnostiquer et de résoudre ce problème.
Étapes suivantes
Toutes nos félicitations! Vous avez créé un service simple, puis l'avez exécuté dans un conteneur Docker.
À présent, vous pouvez apprendre à déployer votre microservice dans le cloud avec notre prochain didacticiel.
Tutoriel .NET | Déployer un microservice sur Azure
Vous pourriez aussi être intéressé par...