1. 程式人生 > >ajax 同步請求和非同步請求的區別

ajax 同步請求和非同步請求的區別

先解釋一下同步和非同步的概念

同步是指:傳送方發出資料後,等接收方發回響應以後才發下一個數據包的通訊方式。  
非同步是指:傳送方發出資料後,不等接收方發回響應,接著傳送下個數據包的通訊方式。

同步通訊方式與非同步通訊的概念

同步通訊方式要求通訊雙方以相同的時鐘頻率進行,而且準確協調,通過共享一個單個時鐘或定時脈衝源保證傳送方和接收方的準確同步,效率較高;
非同步通訊方式不要求雙方同步,收發方可採用各自的時鐘源,雙方遵循非同步的通訊協議,以字元為資料傳輸單位,傳送方傳送字元的時間間隔不確定,傳送效率比同步傳送效率低。

使用者用於呼叫WEB服務的通訊選擇:同步或非同步。

使用者可以同步或非同步實現服務呼叫。從使用者的觀點來看,這兩種方式的不同之處在於:

  • 同步——使用者通過單個執行緒呼叫服務;該執行緒傳送請求,在服務執行時阻塞,並且等待響應。
  • 非同步——使用者通過兩個執行緒呼叫服務;一個執行緒傳送請求,而另一個單獨的執行緒接收響應。

術語同步 和非同步 經常與順序 和併發 混淆了。後面的這兩個術語與執行單獨的任務必須遵循的順序有關,而同步非同步 與執行緒執行單個任務(如呼叫單個服務)的方式有關。理解同步和非同步呼叫之間的不同的一種很好的方法是考慮崩潰恢復的後果:

  • 同步——如果使用者在服務執行的過程中阻塞時崩潰了,當它重新啟動時,將無法重新連線到正在進行的呼叫,所以響應丟失了。使用者必須重複呼叫過程,並且期望這次不會崩潰。
  • 非同步——如果使用者在傳送了請求之後等待響應時崩潰了,當它重新啟動時,可以繼續等待響應,所以響應不會丟失。

崩潰恢復不是同步和非同步呼叫之間的唯一不同,但是如果您嘗試確定某個呼叫採用哪一種方式,請考慮每一種呼叫如何處理崩潰恢復,這通常可以給您一個很好的答案.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

在 Java Web 開發中使用 Ajax 時,重要的是完整理解同步 和非同步 通訊模型的區別(請參閱 參考資料)。對非同步通訊模型支援的缺乏,會對客戶端開發、與 Web 框架的整合、標記庫的使用、IDE 的使用以及執行緒的行為有影響。

在同步請求/響應通訊模型中,總是瀏覽器(與 Web 伺服器、應用伺服器或 Web 應用程式相對)發起請求(通過 Web 使用者)。接著,Web 伺服器、應用伺服器或 Web 應用程式響應進入的請求。在處理同步請求/響應對期間,使用者不能繼續使用瀏覽器。

在非同步請求/響應通訊模型中,瀏覽器(通過 Web 使用者)到 Web 伺服器、應用伺服器或 Web 應用程式的通訊(以及反過來)是解耦的。在非同步請求/響應對的處理中,Web 使用者在當前非同步請求被處理時還可以繼續使用瀏覽器。一旦非同步請求處理完成,非同步響應就被通訊(從 Web 伺服器、應用伺服器或 Web 應用程式)回客戶機頁面。典型情況下,在這個過程中,呼叫對 Web 使用者沒有影響;他們不需要等候響應。