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 错误