最近因工作需要,開始學習Ocelot。首先簡單介紹一下,Ocelot是一個基於.net core的開源webapi 服務網關項目,目前已經支持了IdentityServer認證。根據 作者介紹,Ocelot本質上是一堆中間件的集合,當HttpRequest請求到達后由一堆中間件進行處理,處理完畢,請求根據配置轉發給下游服務。然后接受下游服務的返回信息在轉發給客戶端,詳細信息請參考作者給出的文檔。
GitHub地址:https://github.com/TomPallister/Ocelot
先簡單介紹下,如何搭建一個Ocelot項目。
首先,新建一個基於.net core的webapi項目, core版本要高於或等於1.1,因為目前Ocelot是基於.net core1.1
然后可以通過nuget安裝Ocelot
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中的代碼
將剛新建的json文件,添加到系統配置項中。然后簡單修改一下ConfigureServices和Configure,主要就是將Ocelot作為中間件注冊。當然你可以按照自己的需求,做更多的擴展。
Program.cs 類文件代碼
至此,全部工作已經完成。然后我們新建兩個api服務,對應configuration.json文件中的下游服務。
然后依次啟動 apinoe,apitwo,和ServcesGateWay,即可看到結果