亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

webapi+Task并行請求不同接口實例

發布時間:2020-05-22 01:28:38 來源:網絡 閱讀:424 作者:26度出太陽 欄目:網絡安全

標題的名稱定義不知道是否準確,不過我想表達的意思就是使用Task特性來同時請求多個不同的接口,然后合并數據;我想這種場景的開發對于對接過其他公司接口的人不會陌生,本人也是列屬于之內,更多的是使用最原始的異步委托的方法去處理,今天抽空寫了一個使用4.5新特性Task來處理這種場景;各位看客有什么疑問或者好的建議及分享請博客通知,謝謝。

  A.項目結構圖

  webapi+Task并行請求不同接口實例

  B.namespace Pm.V.PM_BLL下面的BaseClass定義如下:

webapi+Task并行請求不同接口實例 View Code

  主要是在實例的時候讀取各個業務模塊的配置文件,初始化一些常用并且是公共的屬性信息;其次創建了一個虛方法_GetArticles,注意里面的參數是object這個將再后面的時候重提;

  C.下面就是請求第三方業務實現類的代碼,這里測試的時候分別使用

    1.CnblogsClass類抓取博客園首頁的博客列表信息

webapi+Task并行請求不同接口實例 View Code

    .注意這里使用 : base("")直接繼承了上面說的父類的方法,來初始化配置信息(當然這個可能不算知識點)

    .接下來就是實現的_GetArticles方法里面PublicClass._HttpGet方法封裝的HttpClient獲取博客園的數據

    .解析了返回的數據信息(這里使用的正則,可能有些同學覺得正則可能還不太熟悉,可以自行百度參考分析下)

    .記錄日志,我這里是記錄的文本日志暫時注釋了,因為怕抓取的信息多,忘記刪除占用空間

    以上幾點就是實際情況中經常遇到的步奏,這個處理步奏在從來沒有對接過第三方接口的人還是值得學習的

    2.HuJiangClass類是抓取了博客園中.Net第一頁的數據,步奏和方法和上面相同,請關注代碼部分

webapi+Task并行請求不同接口實例 View Code

  D.今天要講的主要內容來了,以上算是過度,讓人了解對接第三方接口的一些處理步奏和簡單的封裝吧;這里將看到的是Pm.Api.Controllers空間下BlogsController里面的Post方法,代碼如:

webapi+Task并行請求不同接口實例 View Code

    1.首先使用了var baseRequest = Newtonsoft.Json.JsonConvert.DeserializeObject<BaseRequest>(param); 來第一次返序列化,得到驗證的基本信息如賬號,token等

    2.常用的接口形式使用參數節點名稱來確定將要執行的方法,或者直接在節點值中標注方法的名稱,因此有了這么一句switch (baseRequest.FunName)來判斷程序的走向

    3.在此反序列得到真實調用者post給接口的數據(上面第一次反序列使用的是基類,基類里面就包含了驗證需要的屬性,為什么這里不直接使用第一次反序列的對象呢,因為這里將要傳遞給后面方法參數的值是子類里面封裝的)

    4.開始定義Task任務的數量,一般根據有幾個第三方接口第一幾個吧,Task<MoArticlesResponse>[]保證后面產生的任務量

    5.Task.Factory.StartNew<MoArticlesResponse>(dataType._GetArticles, r_GetArticles) 方法來創建任務,這里要說的是dataType._GetArticles是之前上面說的請求第三方接口定義的方法,r_GetArticles這個是需要傳遞的值是object的,這也是StartNew固定的參數類型;再通過Task<MoArticlesResponse>[]存儲創建的任務;

    6.Task.WaitAll(tasks, 1000 * 1 * 30);這個WaitAll是自帶的,意思是等待任務執行多少毫秒,也算是知識點吧,第一個參數是任務數組,是數組的形式,第二個是毫秒單位的等待時間

    7.最后通過foreach (var task in tasks) 來循環整合task.Result返回的結果

 之后是效果截圖DataType表示不同的數據來源:

 webapi+Task并行請求不同接口實例

 

  大致就是這些吧,不知道說的東西是否說明白了,這就是處理對接第三方不同接口的業務邏輯,也是使用task來并行處理的方法

  

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽州县| 株洲市| 名山县| 揭阳市| 康乐县| 德格县| 运城市| 巴林左旗| 武义县| 顺义区| 东平县| 焉耆| 东乡族自治县| 沅江市| 文化| 珲春市| 镇雄县| 娱乐| 玛纳斯县| 中阳县| 永安市| 垦利县| 集安市| 淄博市| 通河县| 邯郸市| 台中市| 毕节市| 南阳市| 保定市| 眉山市| 禹城市| 皮山县| 黑龙江省| 舟曲县| 郑州市| 延边| 福清市| 乐至县| 鹿泉市| 平顶山市|