博主是第一次写技术文档,一是对这两年工作以来的一些技术和经验进行整理,二也是希望能和大家多多分享交流,如有写的不对的地方望大家多多指正。进入正题


Ocelot 概念就不说了,大家自行百度,今天做一个Ocelot实例

1.VS新建空白解决方案

2.右键解决方案新建项目Service1,Service2选择Api项目模板

右键解决方案添加项目Gateway选择空项目模板

建立完成后解决方案如下

3.右键解决方案=>设置启动项目

打开Service1 launchSettings.json文件,修改"applicationUrl": "http://localhost:7001" ,"launchBrowser": false,

打开Service2 launchSettings.json文件,修改"applicationUrl": "http://localhost:7002" ,"launchBrowser": false,

打开Gateway launchSettings.json文件,修改"applicationUrl": "http://localhost:7000" ,"launchBrowser": false,

4.打开Service1 中 ValuesController改为如下:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; namespace Service1.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<string> Get()
{
return "这是 Service1 ";
} }
}

打开Service2 中 ValuesController改为如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; namespace Service2.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<string> Get()
{
return "这是 Service2 ";
}
}
}

5. VS =>调试=>开始执行

打开postman api测试工具 请求 http://localhost:7001/api/values

请求 http://localhost:7002/api/values

service准备完毕,接下来接入Ocelot

6.Gateway项目安装nuget包 Install-Package Ocelot

Gateway项目下添加ocelot.json文件,右键属性,如果较新则复制,并进行如下配置

{
"ReRoutes": [
{
//Upstream表示上游请求,即客户端请求到API Gateway的请求
"UpstreamPathTemplate": "/Service1/{url}", //请求路径模板
"UpstreamHttpMethod": [ "Get", "Post" ], //请求方法数组 "UseServiceDiscovery": false, //启用服务发现 //Downstream表示下游请求,即API Gateway转发的目标服务地址
"DownstreamPathTemplate": "/api/{url}", //下游请求地址模板
"DownstreamScheme": "http", //请求协议,支持http,https,ws
"DownstreamHostAndPorts": [ //请求服务地址
{
"Host": "localhost",
"Port":
}
]
},
{
"UpstreamPathTemplate": "/Service2/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ], "UseServiceDiscovery": false, "DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port":
}
]
}
],
"GlobalConfiguration": {
//"ServiceDiscoveryProvider": {
// "Host": "127.0.0.1",
// "Port": 8500,
// "Type": "PollConsul"
//}
}
}

打开Program.cs,修改如下:

public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, builder) =>
{
builder.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("ocelot.json", false, true);
})
.UseStartup<Startup>();
}

打开Startup.cs文件,进行如下配置:

public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot();//添加Ocelot服务
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseOcelot().Wait();//使用Ocelot服务
}

Ocelot配置完毕,VS=>调试=>开始执行

打开postman工具进行测试

请求 http://localhost:7000/Service1/values

请求 http://localhost:7000/Service2/values

OK!打完收工

Ocelot入门实践的更多相关文章

  1. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  2. sass、less和stylus的安装使用和入门实践

    刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...

  3. Django入门实践(三)

    Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...

  4. Django入门实践(二)

    Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...

  5. Django入门实践(一)

    Django入门实践(一) Django编程思路+入门 认识Django有一个多月了,我觉得学习Django应该先理清它的编程思路.它是典型的MVC框架(在Django里也称MTV),我觉得Djang ...

  6. 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

    [前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butt ...

  7. 全文搜索引擎Elasticsearch入门实践

    全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...

  8. 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

    操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...

  9. Cookie快速入门实践

    第一个servlet[比如是CookieDemo01]中的代码如下: import javax.servlet.http.Cookie; //--------省略若干代码----------- pro ...

随机推荐

  1. Linux 开启定时计划任务

    1.crontab 编辑“crontab -e # m h dom mon dow command30 18 * * * lynx -dump http://admin.koala.xxx 30 18 ...

  2. sim卡联系人name为空的问题。

    1,之前的版本出现Bug:新建name为空的sim卡联系人,无法删除. 解决: 2,而后的版本出现新Bug:新建name不为空,Num不为空的sim卡联系人,然后编辑sim卡联系人,将Name清空,无 ...

  3. java JNI 实现原理 (二) Linux 下如何 load JNILibrary

    在博客java JNI (一)虚拟机中classloader的JNILibrary 中讨论了java中的Library 是由classloader 来load的,那我们来看看 classloader是 ...

  4. 检测鼠标是否在UI上unity

    public static bool IsCursorOnUI(int inputID=-1){ EventSystem eventSystem = EventSystem.current; retu ...

  5. 假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)

    题目一:传送门 思路:动态规划,从每一行来看,每次更新求出这一点的最大值,dp[i]=MAX(dp[i-1],dp[i]+dp[i-2]),不会出现 两个数字相邻的情况:先对行进行更新,再对列进行更新 ...

  6. 学习devexpresschartControl控件

    devexpress官网chart:https://documentation.devexpress.com/WindowsForms/8117/Controls-and-Libraries/Char ...

  7. excel中vba将excel中数字和图表输出到word中

    参考:https://wenku.baidu.com/view/6c60420ecc175527072208af.html 比如将选区变为图片保存到桌面: Sub 将选区转为图片存到桌面() Dim ...

  8. idea使用git提交代码到远程,这里是没有冲突的演示

    首先在项目鼠标右键,找到Git,然后在Git选项里找到Add,点击: 添加到暂存区后,再次找到Git,找到Commit Directory,点击: 然后弹出这个界面: 选中你自己修改的记录,一些不必要 ...

  9. oracle死锁解决方法

    select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME,      AO.OBJECT_NAME, LO.LOCKED_M ...

  10. Java利用MethodHandle实现反射时调用super的method

    一:实现 1.Base类的实现 package me.silentdoer.reflecsuper; /** * @author silentdoer * @version 1.0 * @descri ...