Ocelot入门实践
博主是第一次写技术文档,一是对这两年工作以来的一些技术和经验进行整理,二也是希望能和大家多多分享交流,如有写的不对的地方望大家多多指正。进入正题
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入门实践的更多相关文章
- 分布式学习系列【dubbo入门实践】
分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...
- sass、less和stylus的安装使用和入门实践
刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...
- Django入门实践(三)
Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...
- Django入门实践(二)
Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...
- Django入门实践(一)
Django入门实践(一) Django编程思路+入门 认识Django有一个多月了,我觉得学习Django应该先理清它的编程思路.它是典型的MVC框架(在Django里也称MTV),我觉得Djang ...
- 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
[前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butt ...
- 全文搜索引擎Elasticsearch入门实践
全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- Cookie快速入门实践
第一个servlet[比如是CookieDemo01]中的代码如下: import javax.servlet.http.Cookie; //--------省略若干代码----------- pro ...
随机推荐
- 第一个spring boot 程序
安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...
- javase高级技术 - 反射
在说反射之前,必须得先说说java的类加载器,类加载器的定义:将.class文件加载到内在中,并为之生成对应的Class对象. 一般有三种 1 Bootstrap ClassLoader 根类加载器也 ...
- How to Create Triggers in MySQL
https://www.sitepoint.com/how-to-create-mysql-triggers/ I created two tables: CREATE TABLE `sw_user` ...
- centos6.5 yum安装postgresql9.3
rpm -ivh http://download.postgresql.org/pub/repos/yum/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-2.n ...
- Alpha 冲刺 (2/10)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前端界面的开发 搭建测试用服务器的环境 完成 ...
- 2019.01.02 洛谷P4512 【模板】多项式除法
传送门 解析 代码: #include<bits/stdc++.h> #define ri register int using namespace std; typedef long l ...
- NETCLR via C#第四版(文摘)
第1部分 CLR基础 第1章 CLR的执行模型 第2章 生成,打包,部署和管理应用程序及类型 第3章 共享程序集和强命名程序集 第2部分 设计类型 第4章 类型 第5章 基元类型 引用类型和值类型 第 ...
- matlab 设定坐标比例
figure() u=-0.1:0.005:0.1; v=-0.1:0.005:0.1; [x,y]=meshgrid(u,v); z=sin(x-y)./abs(x)+abs(y); surf(x, ...
- PHP时间范围:本周、本月、下月等简写
在阅读TP5.1源码,发现其在时间范围上的写法很特别,个人第一次见,做一次记录 $timeRule = [ 'today' => ['today', 'tomorrow'], 'yesterda ...
- Java,数据库中的数据导入到Excel
private static void executeMethod(JobExecutionContext arg0) throws Exception{ try { TContrastService ...