Pour intégrer Nacos dans une application .NET, commencez par installer les packages NuGet suivants :
nacos-sdk-csharpnacos-sdk-csharp.AspNetCorenacos-sdk-csharp.Extensions.Configuration
Créez un projet Web API, par exemple nommé ConfigCenter.NacosService1.
Configurez les paramètres de Nacos dans le fichier appsettings.json comme suit :
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"NacosConfig": {
"Listeners": [
{
"Optional": true,
"DataId": "application.properties", // Nom du fichier de configuration
"Group": "DEFAULT_GROUP"
},
{
"Optional": true,
"DataId": "common.settings",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "mon-namespace", // Espace de noms spécifique pour votre application
"ServerAddresses": [ "http://localhost:8848/" ], // Adresse de votre serveur Nacos
"UserName": "admin", // Nom d'utilisateur Nacos
"Password": "votre_mot_de_passe", // Mot de passe Nacos
"ConfigUseRpc": false, // Utiliser l'API HTTP pour la configuration
"NamingUseRpc": false // Utiliser l'API HTTP pour la découverte de services
}
}
Initialisez les services dans votre application :
var builder = WebApplication.CreateBuilder(args);
// Ajout des services au conteneur
builder.Services.AddControllers();
builder.Services.AddSwaggerGen();
// Intégration de la configuration Nacos
builder.Host.UseNacosConfig("NacosConfig");
// Enregistrement du service auprès de Nacos
builder.Services.AddNacosAspNet(builder.Configuration);
var app = builder.Build();
// Configuration du pipeline HTTP
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
Pour gérer les configurations, vous pouvez définir plusieurs entrées dans la section Listeners du fichier appsettings.json. Chaque entrée correspond à un fichier de configuration géré par Nacos.
Voici un exemple de contrôleur qui récupère des valeurs de configuration :
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class ConfigurationController : ControllerBase
{
private readonly IConfiguration _configuration;
public ConfigurationController(IConfiguration configuration)
{
_configuration = configuration;
}
[HttpGet("database")]
public IActionResult GetDatabaseSettings()
{
var dbConnectionString = _configuration.GetConnectionString("DefaultConnection");
var redisEndpoint = _configuration["Redis:Endpoint"];
return Ok(new { DbConnection = dbConnectionString, Redis = redisEndpoint });
}
}
Gestion des configurations multi-environnements
Nacos prend en charge la gession de configuratinos spécifiques à différents environnements (développement, production, etc.). Pour cela, créez des espaces de noms distincts dans Nacos pour chaque environnement, par exemple, dev pour le développement et prod pour la production.
Configurez ensuite vos fichiers appsettings.Development.json et appsettings.json (qui sert de configuration par défaut pour la production) pour pointer vers les bons espaces de noms Nacos.
Exemple pour appsettings.Development.json :
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"NacosConfig": {
"Listeners": [
{
"Optional": true,
"DataId": "webapp-dev.yaml",
"Group": "DEFAULT_GROUP"
},
{
"Optional": true,
"DataId": "common.config",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "dev", // Espace de noms pour l'environnement de développement
"ServerAddresses": [ "http://192.168.1.100:8848/" ], // Adresse du serveur Nacos pour le dev
"UserName": "dev_user",
"Password": "dev_password",
"ConfigUseRpc": false,
"NamingUseRpc": false
}
}
Exemple pour appsettings.json (production par défaut) :
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"NacosConfig": {
"Listeners": [
{
"Optional": true,
"DataId": "webapp.yaml",
"Group": "DEFAULT_GROUP"
},
{
"Optional": true,
"DataId": "common.config",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "prod", // Espace de noms pour l'environnement de production
"ServerAddresses": [ "http://nacos.example.com:8848/" ], // Adresse du serveur Nacos pour la prod
"UserName": "prod_user",
"Password": "prod_password",
"ConfigUseRpc": false,
"NamingUseRpc": false
}
}
Pour spécifier l'environnement d'exécution, configurez la variable d'environnement ASPNETCORE_ENVIRONMENT dans votre fichier launchSettings.json. Les valeurs courantes sont Development, Staging et Production.
Exemple dans launchSettings.json :
{
"profiles": {
"Development": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" // Définit l'environnement sur Développement
}
},
"Production": {
"commandName": "Project",
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production" // Définit l'environnement sur Production
}
}
}
}
En modifiant la valeur de ASPNETCORE_ENVIRONMENT, votre application chargrea la configuration appropriée depuis Nacos, en fonction de l'espace de noms défini dans le fichier `appsettings.```.json correspondant. Le contrôleur présenté précédemment récupérera automatiquement les bonnes valeurs de configuration.