最近因工做須要,開始學習Ocelot。首先簡單介紹一下,Ocelot是一個基於.net core的開源webapi 服務網關項目,目前已經支持了IdentityServer認證。根據 做者介紹,Ocelot本質上是一堆中間件的集合,當HttpRequest請求到達後由一堆中間件進行處理,處理完畢,請求根據配置轉發給下游服務。而後接受下游服務的返回信息在轉發給客戶端,詳細信息請參考做者給出的文檔。git
GitHub地址:https://github.com/TomPallister/Ocelotgithub
先簡單介紹下,如何搭建一個Ocelot項目。web
首先,新建一個基於.net core的webapi項目, core版本要高於或等於1.1,由於目前Ocelot是基於.net core1.1json
而後能夠經過nuget安裝Ocelot api
Install-Package Ocelot
至此,項目搭建完畢。下面,在項目中添加 configuration.json 配置文件。Ocelot主要功能都是經過配置項來實現的。首先,咱們來實現最簡單的服務轉發功能。配置文件中有兩個配置項,一個是ReRoutes主要的服務路由配置,都配置在此配置項中。一個GlobalConfiguration,全局配置項,一些可應用與全局的配置可放在此配置項中。學習
"ReRoutes": [ { "DownstreamPathTemplate": "/api/values", "DownstreamScheme": "http", "DownstreamPort": 8052, "DownstreamHost": "localhost", "UpstreamPathTemplate": "/api/values", "UpstreamHttpMethod": [ "Get" ], "QoSOptions": { "ExceptionsAllowedBeforeBreaking": 3, "DurationOfBreak": 10, "TimeoutValue": 5000 } }, { "DownstreamPathTemplate": "/api/product", "DownstreamScheme": "http", "DownstreamPort": 8053, "DownstreamHost": "localhost", "UpstreamPathTemplate": "/api/product", "UpstreamHttpMethod": [ "Get" ], "QoSOptions": { "ExceptionsAllowedBeforeBreaking": 3, "DurationOfBreak": 10, "TimeoutValue": 5000 } } ], "GlobalConfiguration": { }
配置項完畢後,如今須要修改Startup中的代碼spa
將剛新建的json文件,添加到系統配置項中。而後簡單修改一下ConfigureServices和Configure,主要就是將Ocelot做爲中間件註冊。固然你能夠按照本身的需求,作更多的擴展。.net
Program.cs 類文件代碼code
至此,所有工做已經完成。而後咱們新建兩個api服務,對應configuration.json文件中的下游服務。中間件
而後依次啓動 apinoe,apitwo,和ServcesGateWay,便可看到結果