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 Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- BeetleX和Asp.net Core之webapi基础性能对比
本文主要针对BeetleX和Asp.net Core在基础WebApi功能性能对比 测试环境描述 硬件配置:E1230V2 16G内存 10Gb带宽 操作系统:Windows server 2008 ...
- ASP.NET Core MVC/WebAPi 模型绑定探索 转载https://www.cnblogs.com/CreateMyself/p/6246977.html
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- 【转】ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- ASP.NET Core MVC/WebAPi如何构建路由?
前言 本节我们来讲讲ASP.NET Core中的路由,在讲路由之前我们首先回顾下之前所讲在ASP.NET Core中的模型绑定这其中有一个问题是我在项目当中遇见的,我们下面首先来看看这个问题. 回顾A ...
- 在 asp.net core 中使用类似 Application 的服务
在 asp.net core 中使用类似 Application 的服务 Intro 在 asp.net 中,我们可以借助 Application 来保存一些服务器端全局变量,比如说服务器端同时在线的 ...
- [目录] ASP.Net Core 搭建微服务网站
本项目采用ASP.Net Core微服务技术,搭建博客和Saas平台. 全文将围绕(1)设计模式 (2)敏捷开发 目的: 结构足够合理,代码足够优美,扩展性.可读性.易维护性做到最优. 以下目录仅为 ...
- Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
随机推荐
- Python基础4--数据类型
一.数据类型是什么鬼? 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- Twain Capabilities
Paper Handling 纸操作 CAP_AUTOFEED MSG_SET为TRUE,启用Twain源的自动进纸. CAP_CLEARPAGE MSG_SET为TRUE,退出当前页面并清空数据. ...
- Http协议知识点回顾
OSI七层协议: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 完整的Http协议请求流程: 协议:客户端和服务器双方都能听的懂得语言(约定) 不需要关注底层的网络层或传输层协议 TCP ...
- python -- 模块与类库
一.模块 模块(Module)是由一组类.函数和变量组成的,模块文件的扩展名是.py或.pyc 在使用模块之前,需要先使用import语句导入这个模块. 语法格式如下: import 模块名 from ...
- P1447能量采集
P1447能量采集 定义:(i,j)表示处于(i,j)的植物的贡献 我们发现,点(i,j)与(0,0)的连线所过整点的数目为\(\gcd(i,j)\) 发现要是想记录每个点的答案并不好算.那么怎么好算 ...
- Android系统编程入门系列之界面Activity响应多元的属性动画
在响应丝滑动画一篇文章中,分别介绍了作用于普通视图.绘制视图的绘制对象.和界面这三种对象的动画效果,但是都有一些使用的局限性.比如这些动画都只是以屏幕上绘制更新的方式绘制动画,并没有真实改变作用对象的 ...
- Mysql分区表使用
一.什么是分区表 分区表就是按一定规则将一张表分割成多个部分,达到和物理分表同样的效果,但操作起来更 简单,不同于物理分表那样使用时还需要指定使用的数据表.对于使用者来说和操作普通表无差别. 二.优势 ...
- 【阅读笔记】Java核心技术卷一 #3.Chapter5
5 继承 5.1 类.超类和子类 5.1.1 定义子类 超类(superclass)和子类(subclass), 基类(base class)和派生类(derived class), 父类(paren ...
- mysql中的with rollup得到group by的汇总信息
使用mysql中的with rollup可以得到每个分组的汇总级别的数据: 表如下: CREATE TABLE `test3` ( `id` int(5) unsigned NOT NULL AUT ...
- 计算距离2020年圣诞节还有x天x时x分x秒
//计算两者相差毫秒数 //创建当前时间和圣诞节时间的Date对象 var d1=new Date(); var d2=new Date('2020/12/25'); //计算相差的毫秒 var d= ...