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 ...
随机推荐
- CDN相关知识及CDN绕过
#什么是CDN? 内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络.CDN应用广泛,支持多种行业 ...
- DHCP部署与安全
1.DHCP作用 (Dynamic Host Configure Protocol)自动分配ip地址 2.DHCP相关概念 地址池/作用域:(IP.子网掩码.网关.DNS.租期),DHCP协议端口是U ...
- JAVA程序系统测试感受
JAVA课程才刚刚开始,就仿佛经历了一场劫难,让我们叫苦连天,苦不堪言.暑假学的一些皮毛java知识,到了真正需要写一个相对完整的软件系统,就如同废材一样,实在是用不上来.我看着小民哥布置的考试内容, ...
- P5350 序列
P5350 序列 题意 维护一个序列,支持区间求和.赋值.加值.复制.交换.翻转操作,其中交换和复制操作保证两段区间长度相等且不交.答案对 \(1e9+7\) 取模. 思路 对于区间求和.赋值.加值. ...
- [SHOI2014]概率充电器 题解
注意到本题的贡献是不带权的,所以期望其实就是每个点的概率之和. 本题正着做好像不是很好做,要考虑 \(P(A+B)=P(A)+P(B)-P(A)P(B)\) 的容斥(因为这是两个条件至少满足一个,所以 ...
- SpringBoot 无法注入 service 的 bean
错误信息 Description: Field areaService in com.imooc.demo.web.AreaController required a bean of type 'co ...
- javascript学习笔记-(三)
ES6标准新增了一种新的函数:Arrow Function(箭头函数) 案例: 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: ...
- 如何反编译Python写的exe到py
参考链接: https://blog.csdn.net/qq_44198436/article/details/97314626?depth_1-utm_source=distribute.pc_re ...
- C++五十一篇 -- VS2017开发人员新闻无法联网
参考链接:https://blog.csdn.net/zz1589275782/article/details/88364983 这几天玩了下以前的电脑,本来想更新一下Visual Studio In ...
- 前端构建第1篇之---引入elementUI
张艳涛 写于2021-1-19 HOW:如何引入elementui? 在项目根目录package.json引入,在重新执行npm install "dependencies": { ...