.NET Core API閘道器Ocelot(一)【概覽,開始】
概覽
Ocelot
的目標是使用.NET
執行面向微服務/面向服務的架構,需要統一的入口點進入他們的系統。
特別是與IdentityServer
引用和承載令牌輕鬆整合。
Ocelot是一組按特定順序排列的中介軟體。
Ocelot
將HttpRequest
物件操作到其配置指定的狀態,直到它到達請求構建器中介軟體,在該中介軟體中,它建立一個HttpRequestMessage
物件,該物件用於向下遊服務發出請求。發出請求的中介軟體是Ocelot
管道中的最後一件事。它不會呼叫下一個中介軟體。來自下游服務的響應儲存在每個請求範圍的儲存庫中,並在請求返回Ocelot
管道時進行檢索。有一箇中介軟體將HttpResponseMessage
對映到HttpResponse
物件並返回給客戶端。基本上它具有許多其他功能。
開始
Ocelot僅適用於.NET Core
,目前是為netstandard2.0
構建的。 如果Ocelot
適合您,那麼這個文件可能會有用。
.NET Core 2.1
使用nuget安裝Ocelot
及其依賴項。 您需要建立一個netstandard2.0專案並將其打包到其中。 然後按照下面的“啟動”和“配置”部分啟動並執行。
Install-Package Ocelot
配置
以下是一個非常基本的ocelot.json
。 它不會做任何事情,但應該讓Ocelot啟動。
{
"ReRoutes": [],
"GlobalConfiguration": {
"BaseUrl": "https://api.mybusiness.com"
}
}
這裡要注意的最重要的是BaseUrl
。 Ocelot
需要知道它正在執行的URL
,以便進行Header
查詢和替換以及某些管理配置。 設定此URL
時,它應該是客戶端將看到執行Ocelot
的外部URL
,例如 如果您正在執行容器,Ocelot
可能會在網址http://123.12.1.1:6543
上執行,但在https://api.mybusiness.com
上響應之前有類似nginx
的內容。 在這種情況下,Ocelot基本網址應為https://api.mybusiness.com
。
如果您正在使用容器並要求Ocelot
在http://123.12.1.1:6543
響應客戶端,那麼您可以執行此操作,但是如果您要部署多個Ocelot
,您可能希望在某種型別指令碼的命令列上傳遞它。希望您使用的任何排程程式都可以通過IP。
Program
然後在您的Program.cs
中,您將需要以下內容。 需要注意的主要事項是 AddOcelot()
(新增ocelot服務),UseOcelot().Wait()
(設定所有Ocelot中介軟體)。
public class Program
{
public static void Main(string[] args)
{
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true, true)
.AddJsonFile("ocelot.json")
.AddEnvironmentVariables();
})
.ConfigureServices(s => {
s.AddOcelot();
})
.ConfigureLogging((hostingContext, logging) =>
{
//add your logging
})
.UseIISIntegration()
.Configure(app =>
{
app.UseOcelot().Wait();
})
.Build()
.Run();
}
}
.NET Core 1.0
配置
{
"ReRoutes": [],
"GlobalConfiguration": {}
}
Program
public class Program
{
public static void Main(string[] args)
{
IWebHostBuilder builder = new WebHostBuilder();
builder.ConfigureServices(s => {
});
builder.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>();
var host = builder.Build();
host.Run();
}
}
Startup
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("ocelot.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot(Configuration);
}
public void Configure(IApplicationBuilder app)
{
app.UseOcelot().Wait();
}
}
相關文章
- .NET Core 微服務—API閘道器(Ocelot) 教程 [一]微服務API
- .NET Core 微服務—API閘道器(Ocelot) 教程 [四]微服務API
- [Hei-Ocelot-Gateway ].Net Core Api閘道器Ocelot的開箱即用版本GatewayAPI
- .NET Core微服務開發閘道器篇-ocelot微服務
- Ocelot一個優秀的.NET API閘道器框架API框架
- .Net Core微服務——閘道器(2):ocelot整合consul微服務
- .Net Core微服務入門全紀錄(五)——Ocelot-API閘道器(下)微服務API
- .Net Core微服務入門全紀錄(四)——Ocelot-API閘道器(上)微服務API
- Asp.Net Core + Ocelot 閘道器搭建:路由簡單配置ASP.NET路由
- .Net Core微服務——閘道器(1):ocelot整合及介紹微服務
- Ocelot API閘道器的實現剖析API
- Asp.Net Core + Ocelot 閘道器搭建:負載均衡的配置ASP.NET負載
- Ocelot閘道器(二)
- Ocelot閘道器(三)
- 開放API閘道器實踐(一) ——設計一個API閘道器API
- 基於.NET CORE微服務框架 -Api閘道器服務管理微服務框架API
- .net core自定義高效能的Web API服務閘道器WebAPI
- 基於.NET CORE微服務框架 -談談surging API閘道器微服務框架API
- Ocelot整合Consul實現api閘道器與服務發現API
- Ocelot閘道器+IdentityServer4實現API許可權認證IDEServerAPI
- API 閘道器 KongAPI
- 開啟API閘道器設計的一扇窗API
- API閘道器,企業級閘道器可擴充套件API套件
- 開放API閘道器實踐(三) —— 限流API
- 高效能API閘道器(1)、微服務API閘道器架構設計API微服務架構
- 重新整理 .net core 實踐篇————閘道器[三十六]
- API 閘道器策略二三事API
- 微服務閘道器Ocelot加入IdentityServer4鑑權-.NetCore(.NET5)中使用微服務IDEServerNetCore
- 用友雲開放平臺之API閘道器API
- kong 一個高效能的 API 閘道器API
- Zilla:一個事件驅動的API閘道器事件API
- 使用 Node.js 搭建一個 API 閘道器Node.jsAPI
- 容器、服務網格和API閘道器:它始於邊緣API
- 如何開發一個開源閘道器?
- Api閘道器Kong整合Consul做服務發現及在Asp.Net Core中的使用APIASP.NET
- .NETCore微服務探尋(一) - 閘道器NetCore微服務
- API閘道器:第8層網路API
- Spring Boot整合Zuul API閘道器Spring BootZuulAPI