参考网址: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. [zebra源码]分片语句ShardPreparedStatement执行过程

    主要过程包括: 分库分表的路由定位 sql语句的 ast 抽象语法树的解析 通过自定义 SQLASTVisitor (MySQLSelectASTVisitor) 遍历sql ast,解析出逻辑表名 ...

  2. PYTHON 连接SQL2008 导出到EXCEL

    #import pymssql from datetime import datetime import pyodbc import os current_dir = os.path.abspath( ...

  3. IDEA工具-快捷键整理

    在使用IDEA编辑器的过程中如果能够熟练的使用快捷键将大大的提高工作的效率,以下列为IDEA编辑器使用频率比较高的快捷键 Ctrl+E:显示最近编辑的文件列表 Ctrl+P:显示方法的参数信息 Ctr ...

  4. 【动画消消乐】HTML+CSS 自定义加载动画 062

    效果展示 Demo代码 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  5. 【技巧】使用PPT更换背景色

    主要记述使用PPT来更换图片某一部分的背景色 把想要更改的图片粘贴到PPT里. 依次选择[格式][颜色][设置透明色],然后点击需要更改背景的地方 将自己的目标颜色复制一下,填充上去,选择[置于底层]

  6. 两台Linux系统之间传输文件的几种方法

    两台Linux系统之间传输文件的几种方法:参考https://www.cnblogs.com/bignode/articles/9241333.html

  7. 第三篇 -- IDEA 创建Springboot Web项目并用Jmeter测试

    上一节使用Django写的一个接口程序,这一节讲用IDEA配合Springboot创建web项目.一个是python,一个是java. 参考链接:http://www.uxys.com/html/Ja ...

  8. Axure RP 9 Enterprise/Pro/Team for Mac/Windows安装破解版激活教程

    Axure RP 9.0 是一款功能强大的.操作方便.专业可靠的快速原型设计工具.一款能够在这里体验最简单的设计方式,这里有着全新的升级的软件界面,更加的时尚,更加的丰富,专为每一个用户提供了便捷的设 ...

  9. 项目去O实践

    现状(自下而上) 1.Oracle数据库,表,序列,存储过程,视图 2.ibatis框架,映射xml中的sql语句 3.应用中通过指定字符串的形式获取查询结果   目标 1.置换数据库为PG数据库,迁 ...

  10. IDEA创建Mapper.xml文件识别不成功的问题

    在IDEA的maven项目中,创建一个EmpMapper.xml的文件识别不成功,图标显示为文本文档类型,在写代码时也不会弹出提示 解决方法: 在文件->设置->编辑器->文件类型中 ...