参考网址: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服务的更多相关文章

  1. 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持

    HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...

  2. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  3. BeetleX和Asp.net Core之webapi基础性能对比

    本文主要针对BeetleX和Asp.net Core在基础WebApi功能性能对比 测试环境描述 硬件配置:E1230V2 16G内存 10Gb带宽 操作系统:Windows server 2008 ...

  4. ASP.NET Core MVC/WebAPi 模型绑定探索 转载https://www.cnblogs.com/CreateMyself/p/6246977.html

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  5. 【转】ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  6. ASP.NET Core MVC/WebAPi如何构建路由?

    前言 本节我们来讲讲ASP.NET Core中的路由,在讲路由之前我们首先回顾下之前所讲在ASP.NET Core中的模型绑定这其中有一个问题是我在项目当中遇见的,我们下面首先来看看这个问题. 回顾A ...

  7. 在 asp.net core 中使用类似 Application 的服务

    在 asp.net core 中使用类似 Application 的服务 Intro 在 asp.net 中,我们可以借助 Application 来保存一些服务器端全局变量,比如说服务器端同时在线的 ...

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

    本项目采用ASP.Net Core微服务技术,搭建博客和Saas平台. 全文将围绕(1)设计模式  (2)敏捷开发 目的: 结构足够合理,代码足够优美,扩展性.可读性.易维护性做到最优. 以下目录仅为 ...

  9. Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

随机推荐

  1. vue3 script setup 定稿

    vue script setup 已经官宣定稿.本文主要翻译了来自 0040-script-setup 的内容. 摘要 在单文件组件(SFC)中引入一个新的 <script> 类型 set ...

  2. XML技术

    XML是一种可扩展标记语言,用来标记数据.定义数据类型,1998年由W3W发布1.0.版本,与HTML语言相比,可以自定义可扩展标签格式,但是语法严格. XML可以用来存储数据,可移植性强,主要充当配 ...

  3. Django 基础05篇 上下文管理和前端代码复用

    一.上下文管理器 在views中重复使用的代码,可以通过上下文管理器(在setting.py文件中的TEMPLATES中配置)中实现,减少代码冗余 上下文管理器的处理流程如下: 1.先走完views里 ...

  4. Pandas高级教程之:自定义选项

    目录 简介 常用选项 get/set 选项 经常使用的选项 最大展示行数 超出数据展示 最大列的宽度 显示精度 零转换的门槛 列头的对齐方向 简介 pandas有一个option系统可以控制panda ...

  5. Python多线程爬取某网站表情包

    # 爬取网络图片import requestsfrom lxml import etreefrom urllib import requestfrom queue import Queue # 导入队 ...

  6. Leetcode:1305. 两棵二叉搜索树中的所有元素

    Leetcode:1305. 两棵二叉搜索树中的所有元素 Leetcode:1305. 两棵二叉搜索树中的所有元素 思路 BST树中序历遍有序. 利用双指针法可以在\(O(n)\)的复杂度内完成排序. ...

  7. (python函数03)zip()函数

    (python函数03)zip()函数 zip是用来压缩的,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组(tuple),然后返回有这些tuples组成的对象,可强制转化为列表和 ...

  8. (JAVA1)学习,复习的好帮手

    学习准备:博客 博客,英文名Blog,它的正式名称为网络日记. 为什么要写博客 我们学习任何东西都需要总结和思考.有时候我们一直在赶路,却忘了放慢脚步 提升文笔组织能力 提升学习总结能力 提升逻辑思维 ...

  9. Tom_No_01 IDEA tomcat 源码环境搭建

    1.下载源码 apache-tomcat-8.5.50-src 2.下载源码 放D盘,解压后根目录新建pom.xml和catalina-home pom.xml文件中内容为 <?xml vers ...

  10. @ControllerAdvice全局异常处理不起作用原因及解决办法

    这段时间使用springboot搭建基础框架,作为springboot新手,各种问题都有. 当把前端框架搭建进来时,针对所有controller层的请求,所发生的异常,需要有一个统一的异常处理,然后返 ...