一、前言

开工后的第一篇文章,聊聊Nacos与.NET Core如何集成。本文参考Nacos官方快速开始文档,在Windows本机单节点环境下部署Nacos服务,仅用于测试验证,不适用于生产环境。

Nacos是阿里开源的服务发现与配置管理平台,社区活跃,官方文档也相当完善。关于项目本身,可以直接去GitHub和官网了解,这里不展开。

二、Nacos安装

安装过程直接参考官方文档即可,这里不赘述。安装完成后,因为是单机快速开发,默认没有开启鉴权,但我们可以手动开启。找到如图所示的文件:

.net core如何使用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服务:

.net core如何使用Nacos注册中心

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

.net core如何使用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项目来模拟多个服务。项目结构如下:

.net core如何使用Nacos注册中心

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

第二步:在 ysq.nacos.common 类库中添加NuGet包:

.net core如何使用Nacos注册中心

然后在三个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服务端为每个服务新建配置信息(通过配置中心提供),如下图所示:

.net core如何使用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,查看服务是否成功注册:

.net core如何使用Nacos注册中心

.net core如何使用Nacos注册中心

.net core如何使用Nacos注册中心

.net core如何使用Nacos注册中心

.net core如何使用Nacos注册中心

本文转载于:https://www.jb51.net/aspnet/335161lx4.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。