一、前言
开工后的第一篇文章,聊聊Nacos与.NET Core如何集成。本文参考Nacos官方快速开始文档,在Windows本机单节点环境下部署Nacos服务,仅用于测试验证,不适用于生产环境。
Nacos是阿里开源的服务发现与配置管理平台,社区活跃,官方文档也相当完善。关于项目本身,可以直接去GitHub和官网了解,这里不展开。
二、Nacos安装
安装过程直接参考官方文档即可,这里不赘述。安装完成后,因为是单机快速开发,默认没有开启鉴权,但我们可以手动开启。找到如图所示的文件:

修改以下四项配置:
nacos.core.auth.enabled=true #开启鉴权
nacos.core.auth.server.identity.key=nacos #默认用户名
nacos.core.auth.server.identity.value=nacos #默认密码
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg= #Base64编码后的字符串
然后启动本地Nacos服务:

运行成功后,浏览器访问 http://127.0.0.1:8848/nacos/index.html,默认账户密码均为 nacos。登录后能看到Nacos管理界面:

需要注意一点:虽然配置了用户角色,但默认没有分配权限,后续集成.NET Core时可能会遇到问题。所以建议提前给角色分配相应权限,避免踩坑。
三、Nacos集成.net core
服务端准备就绪后,接下来在ASP.NET Core中集成Nacos。由于Nacos基于Ja va开发,.NET生态中需要借助社区开源库 nacos-sdk-csharp,项目地址:https://github.com/nacos-group/nacos-sdk-csharp。
第一步:在Visual Studio中创建一个解决方案,并添加几个ASP.NET Core WebApi项目来模拟多个服务。项目结构如下:

其中包含一个控制台应用程序(ysq.client.test)作为测试客户端,一个类库项目(ysq.nacos.common)用于定义服务接口契约,三个WebApi项目作为实际微服务。
第二步:在 ysq.nacos.common 类库中添加NuGet包:

然后在三个WebApi项目中分别引用该类库。
第三步:添加配置并编写代码。ASP.NET Core引入组件的标配步骤:添加配置、注入服务、启用中间件。三个项目的配置方式基本一致。
1. 在 appsettings.json 中添加如下配置:
"NacosConfig": {
"Listeners": [
{
"Optional": false,
"DataId": "NacosServiceA",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "",
"ServerAddresses": [ "http://192.168.10.246:8848/" ],
"UserName": "nacos",
"Password": "nacos",
"EndPoint": "",
"ConfigUseRpc": false,
"NamingUseRpc": false
}
其中 NacosConfig 是Nacos配置的根节点,主要字段包括 DataId(用于寻找服务配置文件)、Group(分组)、Namespace(命名空间)、ServiceAddresses(服务注册到的Nacos服务端地址,支持集群模式)。
2. 在Nacos服务端为每个服务新建配置信息(通过配置中心提供),如下图所示:

{
"nacos": {
"EndPoint": "",
"ServerAddresses": [ "http://192.168.10.246:8848" ],
"DefaultTimeOut": 15000,
"Namespace": "public",
"ListenInterval": 1000,
"ServiceName": "nacosservicea",
"GroupName": "DEFAULT_GROUP",
"ClusterName": "DEFAULT",
"Ip": "",
"PreferredNetworks": "",
"Port": 0,
"Weight": 100,
"RegisterEnabled": true,
"InstanceEnabled": true,
"Ephemeral": true,
"Secure": false,
"AccessKey": "",
"SecretKey": "",
"UserName": "nacos",
"Password": "nacos",
"ConfigUseRpc": true,
"NamingUseRpc": true,
"NamingLoadCacheAtStart": "",
"LBStrategy": "WeightRandom",
"Metadata": {
"aa": "bbb",
"cc": "ddd"
}
}
}
每个服务对应一个配置文件,内容包含注册中心地址、服务名称、权重、元数据等。
3. 在项目代码中注册配置中心和注册中心的服务,并启用中间件。示例代码如下:
using Nacos.AspNetCore.V2;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// 配置中心
builder.Configuration.AddNacosV2Configuration(builder.Configuration.GetSection("NacosConfig"));
// 服务注册
builder.Services.AddNacosAspNet(builder.Configuration);
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run();
完成上述操作后,启动三个WebApi项目。在浏览器中访问 http://127.0.0.1:8848/nacos/index.html,查看服务是否成功注册:




