Need help with nacos-sdk-csharp?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

catcherwong
151 Stars 25 Forks MIT License 82 Commits 1 Opened issues

Description

🌹 nacos csharp sdk

Services available

!
?

Need anything else?

Contributors list

# 24,510
HTML
C#
Redis
SQLite
73 commits

nacos-sdk-csharp             中文

Unofficial csharp(dotnet core) implementation of nacos OpenAPI.

This project was moved to https://github.com/nacos-group/nacos-sdk-csharp

CI Build Status

| Platform | Build Server | Master Status | |--------- |------------- |---------| | Github Action | Linux/Windows |nacos-sdk-csharp CI

Installation

dotnet add package nacos-sdk-csharp-unofficial

Features

  • Basic OpenApi Usages
  • Integrate ASP.NET Core Configuration System
  • Service Registration and Discovery With ASP.NET Core
  • Integrate With Aliyun ACM
  • ...

Basic Usage

Simple Configuration Usage

  1. Configure in
    Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, builder) =>
        {
            var c = builder.Build();

        // read configuration from config files
        builder.AddNacosConfiguration(c.GetSection("NacosConfig"));
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<startup>();
    })

  1. Modify
    appsettings.json
{
  "NacosConfig": {
    "Optional": false,
    "DataId": "msconfigapp",
    "Group": "",
    "Tenant": "f47e0ae1-982a-4a64-aea3-52506492a3d4",
    "ServerAddresses": [ "http://localhost:8848/" ],
    "UserName": "test2",
    "Password": "123456",
    "AccessKey": "",
    "SecretKey": "",
    "EndPoint": "acm.aliyun.com"
  }
}
  1. Use via .NET Core's Way
[ApiController]
[Route("api/[controller]")]
public class ConfigController : ControllerBase
{
    private readonly IConfiguration _configuration;
    private readonly AppSettings _settings;
    private readonly AppSettings _sSettings;
    private readonly AppSettings _mSettings;

public ConfigController(
    IConfiguration configuration,
    IOptions<appsettings> options,
    IOptionsSnapshot<appsettings> sOptions,
    IOptionsMonitor<appsettings> _mOptions
    )
{
    _logger = logger;
    _configuration = configuration;
    _settings = options.Value;
    _sSettings = sOptions.Value;
    _mSettings = _mOptions.CurrentValue;
}

[HttpGet]
public string Get()
{
    // ....

    return "ok";
}

}

Service Registration and Discovery

  1. Service Registration

Configure in

Program.cs
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddNacosAspNetCore(Configuration);
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
}

}

Modify

appsettings.json
"nacos": {
    "ServerAddresses": [ "http://localhost:8848" ],
    "DefaultTimeOut": 15000,
    "Namespace": "",
    "ListenInterval": 1000,
    "ServiceName": "App1"
  }
  1. Service Discovery
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private readonly INacosServerManager _serverManager;

public ValuesController(INacosServerManager serverManager)
{
    _serverManager = serverManager;
}

[HttpGet("test")]
public async Task<iactionresult> Test()
{        
    // need to know the service name.
    // at this time only support random way.
    var baseUrl = await _serverManager.GetServerAsync("App2");

    if(string.IsNullOrWhiteSpace(baseUrl))
    {
        return "empty";
    }

    var url = $"{baseUrl}/api/values";

    using (HttpClient client = new HttpClient())
    {
        var result = await client.GetAsync(url);
        return await result.Content.ReadAsStringAsync();
    }
}

}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.