asp.net core 搭建WebAPI微服务-----cosnul服务

Posted MaxBruce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net core 搭建WebAPI微服务-----cosnul服务相关的知识,希望对你有一定的参考价值。

参考网址: https://blog.csdn.net/weixin_42084199/article/details/108643555

在此之前需要准备的是:

vs2019,以往版本不支持dotnet core3.x版本;

安装.net core 开发环境,可以百度;

微服务整体框架:

1、consul(github):是一个服务管理,更多信息可以百度;

2、服务网关:用于访问所有微服务用的;

3:服务:可以将业务模块拆分成多个服务,如关于用户的业务放在一个服务里,订单业务放在一个服务里;

客户端访问微服务大体流程:

客户端→网关→服务→数据库

开始搭建

下载consul,可以去github下载或官网去下载;得到consul.exe执行文件,然后在执行文件的目录下打开命令行执行一下命令:consul.exe agent -dev,开启完之后输入http://localhost:8500/进入网页表明开启成功

 

 

 

创建asp.net core web应用程序选额api模板

 

 

 

 

 

 

再Controllers文件夹里添加名叫HeartController的api控制器,并将Route特性参数改为如下

 

 

 

再HeartController里添加一个方法也只能一个否则会报错因为添加ApiController特性,名字随便,返回OK();主要是用来做心跳包的;

 

 

 

在appsettings.json里添加如下:

 

 

 

再创建一个名叫Util 的.net core dll 类库

 

 

 

 

Nuget包管理添加如下包

 

 

 

添加一个名叫consulManager的静态类,里面写配置微服务的代码,如下:

using Consul;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;

namespace Util
{
public static class ConsulManager
{
public static void UssConsul(this IApplicationBuilder app, IConfiguration configuration, IConsulClient consulClient)
{
RegServer(configuration, consulClient);
}

/// <summary>
/// 注册微服务
/// </summary>
/// <param name="configuration"></param>
/// <param name="consul"></param>
private static void RegServer(IConfiguration configuration, IConsulClient consul)
{
string consulGroup = configuration["ConsulGroup"];//获取appsettings.json文件里的ConsulGroup节点数据;
string urlPath = configuration["UrlPath"];//获取appsettings.json文件里的UrlPath节点数据;
string ip = string.IsNullOrWhiteSpace(configuration["ip"]) ? "127.0.0.1" : configuration["ip"];//ip值是在启动服务时传入的参数
int port = Convert.ToInt32(configuration["port"]) == 0 ? 80 : Convert.ToInt32(configuration["port"]);//port值是在启动服务时传入的参数
string serviceId = $"{consulGroup}_{ip}_{port}_{urlPath}";

//设置心跳包
var check = new AgentServiceCheck()
{
Interval = TimeSpan.FromSeconds(6),
HTTP = $"http://{ip}:{port}/{urlPath}/heart",
Timeout = TimeSpan.FromSeconds(2),
DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(2)
};
//配置微服务信息
var regist = new AgentServiceRegistration
{
Check = check,
Address = ip,
Port = port,
Name = consulGroup,
ID = serviceId,
};
consul.Agent.ServiceRegister(regist);//注册微服务!
}
}
}
回到webapi项目,添加Util类库,在Startup.cs 里的ConfigureServices方法里注入单例如下:

 

 

 

Configure方法里添加一下参数

 

 

之后再添加一下代码:

 

 

 

之后再进入项目bin→debug→netcoreapp3.1目录下

 

 

 

打开命令行执行:dotnet userservice.dll --urls="http://*:1010" --ip="127.0.0.1" --port=1010

(ip和port自定义)

 

 

 

再打开consul服务发现的网页 http://localhost:8500 出现如下:

 

 

 

表示服务已经成功被发现了,也可以换个端口号继续打开同一个服务,达到负载均衡,会在后面网关访问进行轮询访问;
————————————————
版权声明:本文为CSDN博主「可爱的肥皂」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42084199/article/details/108643555

以上是关于asp.net core 搭建WebAPI微服务-----cosnul服务的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT)

从 ASP.NET MVC 项目调用 .NET CORE 5 Web API 微服务时无法检索 BadRequest 错误

[目录] ASP.Net Core 微服务搭建网站

在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

ASP.NET Core gRPC 打通前端世界的尝试

ASP.NET Core gRPC 打通前端世界的尝试