異步調用

我們知道,常見的方法調用都是同步調用,這種調用方式是一種阻塞式的調用方式,即客戶端(主調用方)代碼一直阻塞等待直到被服務端(被調用方)返回 爲止。這種調用方式相對比較直觀,也是大部分編程語言直接支持的一種調用方式。但是,如果我們面對是基於粗粒度的服務組件,面對的是一些需要比較長時間才 能有響應的應用場景,那麼我們就需要一種非阻塞式調用方式,即異步調用方式。

SCA編程模式提供了三種方式的異步調用,它們分別是:

1. 單向調用方式。

2. 延遲響應方式。

3. 請求回調方式。

單向調用

單向調用方式是最爲簡單的異步調用方式,在這種調用方式中,客戶端發出請求之後就不再關心服務端的情況,包括是否執行成功,返回值是什麼等等。我們可以用下面的圖 4示來描述這種單向調用方式:


圖 4: 單向調用 
圖 4: 單向調用

單向調用方式是一種不管調用結果的方式,但是在很多情況下我們是需要知道調用結果的。我們需要知道調用是否成功,需要知道調用的結果,就算調用失敗我們也希望知道錯誤代碼等信息。在這種情況下,延遲響應和請求回調就是兩種能夠讓我們知道調用結果的方式。

延遲響應方式

延遲響應方式是指客戶端在發出調用請求之後繼續執行,但是經過一段時間之後,客戶端再調用相應的方法去檢索返回結果,並通過參數指定如何根據調用的 結果而執行進一步動作。由於是異步調用方式,因此,在第一次發出調用請求的時候,服務端需要返回一個稱爲票據(Ticket)的對象。這個對象會作爲第二 次發出檢索結果請求時的一個參數。顯然,這個Ticket對象的作用與WEB編程的SessionID非常類似。我們可以用圖 5 來表示延遲相應調用方式:


圖 5:延遲響應調用方式 
圖 5:延遲響應調用方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章