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

溫馨提示×

溫馨提示×

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

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

異步請求和異步調用的區別有哪些

發布時間:2021-10-19 09:24:36 來源:億速云 閱讀:148 作者:iii 欄目:web開發

這篇文章主要講解了“異步請求和異步調用的區別有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“異步請求和異步調用的區別有哪些”吧!

異步請求和異步調用的區別

上面提到的文章中有這樣兩段話來講異步請求和異步調用的區別:

區別一:異步請求用來解決并發請求對服務器造成的壓力,從而提高對請求的吞吐量;而異步調用是用來做一些非主線流程且不需要實時計算和響應的任務,比如同步日志到kafka中做日志分析等。

區別二:異步請求是會一直等待response相應的,需要返回結果給客戶端的;而異步調用往往會馬上返回給客戶端響應,完成這次整個的請求,至于異步調用的任務后臺運行就可以了,客戶端不會關心。

仔細閱讀和分析之后,文章中提到的異步請求應該指的是通過Servlet的AsyncContext對象或Spring中的Callable、DeferredResult、WebAsyncTask等方式進行業務的異步處理。而文中異步調用指的是類似在Spring中調用@Async注解的異步方法。

你看了上面的兩個概念的區別,是否覺得很有道理?感覺已經成功區分了異步請求和異步調用了嗎?

那么,是否想過一個問題,我們通常說請求一個接口和調用一個接口時難道不是一個意思嗎?怎么在這里就變成兩個截然不同的概念了?

疑問探究

帶著上面的疑問,開始用搜索引擎進行搜索。發現當搜索“異步請求和異步調用的區別”時,搜出來的內容基本上都來自上述文章及衍生文章,或者是講異步和同步的區別。這并不能說明什么,但也說明了這兩個概念的區別并沒有得到普遍的認可。

于是開始嘗試通過英文搜索引擎進行搜索。先搜了“the difference between asynchronous call and  asynchronous request”,沒有想要的結果,大多數文章還是講異步和同步的區別。

異步請求和異步調用的區別有哪些

改變關鍵字搜“the difference between asynchronous call and asynchronous  method”,結果一樣,并沒有想要的文章。但卻搜出了一個Stack Overflow上的關聯問題“Synchronous Vs Asynchronous  related to web services”。

異步請求和異步調用的區別有哪些

在該問題的下面出現了兩個詞組:Asynchronous service和Asynchronous  calls。再仔細看兩個詞組的解釋,發現正是想要的結果。

異步請求和異步調用的區別有哪些

異步調用與異步服務

其實在英文搜索的過程中已經發現了,探討異步與同步的區別時,經常會出現asynchronous request和asynchronous  call這兩個詞組,而且它們都是在講異步與同步的區別,而沒有講它們兩個的區別。所以無論異步調用還是異步請求本質上是一回事。

而《SpringBoot中異步請求和異步調用》一文中所說的異步請求和異步調用的區別,概念上也并沒有說清楚什么是異步請求,什么是異步調用。而且只有那幾篇文章這么講,所以可以認為異步請求和異步調用是同一個概念(asynchronous  call)。而作者所講的“異步調用”指的應該異步服務(Asynchronous service)。

為了進一步證明上面的結論,下面將問答中對兩個概念的解釋簡單翻譯一下。

Asynchronous service和Asynchronous calls

Asynchronous service

當你的web服務執行需要耗費大量時間,比如從文件系統中讀取一個大文件。此時,如果你使用“同步”的web服務,那么客戶端必須等待處理完成,通常會阻塞線程,對于高并發的服務,會出現性能問題。

如果將web服務設置為異步服務,那么可以把耗時服務委托給另外一個線程,或者使用非阻塞機制,在未來的某刻進行返回。還以讀取大文件為例,可以使用異步的ReadFile方法來讀取大文件。這樣便能避免線程阻塞,提高吞吐量。

Asynchronous calls

值得注意的是:你可以通過異步的方式調用一個非異步的的服務。比如在JavaScript中的Ajax的調用:

var jqxhr = $.ajax( "AnyService.svc" )     .done(function() { alert("success"); })     .fail(function() { alert("error"); })     .always(function() { alert("complete"); });  alert("Called");

執行上述示例,首先展示“Called”,然后展示“success”,因為執行的過程中并不需要等到服務返回的結果。而被調用的服務也不需要是異步的。

總之,服務實現的異步與同步特性完全獨立于客戶端調用的異步和同步特性。也就是說客戶端可以異步的去調用同步服務,而且客戶端也可以同步的去調用異步服務。

感謝各位的閱讀,以上就是“異步請求和異步調用的區別有哪些”的內容了,經過本文的學習后,相信大家對異步請求和異步調用的區別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

扎赉特旗| 上饶县| 兴宁市| 灵武市| 百色市| 嘉鱼县| 东平县| 绩溪县| 金沙县| 柞水县| 神池县| 麻栗坡县| 宜君县| 滦平县| 柏乡县| 昭苏县| 富平县| 封丘县| 南平市| 陕西省| 龙游县| 若尔盖县| 临桂县| 南涧| 博兴县| 景洪市| 鱼台县| 金塔县| 杭锦后旗| 马尔康县| 上饶市| 怀化市| 手游| 布尔津县| 丽水市| 泰安市| 蒙山县| 阳东县| 水富县| 凤山县| 乐昌市|