热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ocelot和nginx比较_Ocelot一个优秀的.NETAPI网关框架

1什么是Ocelot?Ocelot是一个用.NETCore实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务

1 什么是Ocelot?

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

2 如何使用Ocelot?

首先,创建2个WebApi项目,WebApi01和WebApi02,地址分别https://localhost:44313和https://localhost:44390,其中WebApi01当作网关,WebApi02当作具体的微服务Api。dotnet addpackage AutoMapperdotnet addpackage AutoMapper.Extensions.Microsoft.DependencyInjection

然后,将Ocelot的NuGet软件包安装到WebApi01项目中。Ocelot

注意我这里安装的是17.0.0版本,配置方面会有点不一样。

接着,在Startup.ConfigureServices中增加services.AddOcelot;publicvoidConfigureServices(IServiceCollection services){

services.AddControllers();

services.AddSwaggerGen(c =>{

c.SwaggerDoc("v1", newOpenApiInfo { Title = "Autofac.WebApi", Version = "v1"});

});

services.AddOcelot();

}

接着,在Startup.Configure中增加app.UseOcelot().Wait();publicvoidConfigure(IApplicationBuilder app, IWebHostEnvironment env)

{

if(env.IsDevelopment())

{

app.UseDeveloperExceptionPage();

app.UseSwagger();

app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Ocelot.WebApi01 v1"));

}

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>

{

endpoints.MapControllers();

});

app.UseOcelot().Wait();

}

接着,创建ocelot.json文件{

"Routes": [ //路由配置(注16.1版本将ReRoutes换成Routes){

"DownstreamPathTemplate": "/{url}", // 下游(服务提供方)服务路由模板"DownstreamScheme": "https", // 下游Uri方案,http、https"DownstreamHostAndPorts": [ // 服务地址和端口,如果是集群就设置多个{

"Host": "localhost",

"Port": 44390}

],

"UpstreamPathTemplate": "/api/{url}", // 上游(客户端,服务消费方)请求路由模板"UpstreamHttpMethod": [ "GET"] // 允许的上游HTTP请求方法,可以写多个}

],

"GlobalConfiguration": { //全局配置"BaseUrl": "https://localhost:44313"//网关对外地址}

}

最后,在Program.CreateHostBuilder中增加AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);publicstaticIHostBuilder CreateHostBuilder(string[] args) =>

Host.CreateDefaultBuilder(args)

.ConfigureAppConfiguration((hostingContext, builder) =>{

builder.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);

})

.ConfigureWebHostDefaults(webBuilder =>{

webBuilder.UseStartup();

});



推荐阅读
author-avatar
笑看天下
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有