複製鏈接
請複製以下鏈接發送給好友

回調

鎖定
回調(huí diào 外文名 Callback),是指回調函數,編程術語。
中文名
回調
外文名
Callback

目錄

回調編程回調

軟件模塊之間總是存在着一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是説,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客户方(即調用客户方的接口)。回調和異步調用的關係非常緊密,通常我們使用回調來實現異步消息的註冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎,因此,下面我們着重討論回調機制在不同軟件架構中的實現。
對於不同類型的語言(如結構化語言和對象語言)、平台(Win32、JDK)或構架(CORBA、DCOM、WebService),客户和服務的交互除了同步方式以外,都需要具備一定的異步通知機制,讓服務方(或接口提供方)在某些情況下能夠主動通知客户,而回調是實現異步的一個最簡捷的途徑。
對於一般的結構化語言,可以通過回調函數來實現回調。回調函數也是一個函數或過程,不過它是一個由調用方自己實現,供被調用方使用的特殊函數。
面向對象的語言中,回調則是通過接口或抽象類來實現的,我們把實現這種接口的類稱為回調類,回調類的對象稱為回調對象。對於像C++或Object Pascal這些兼容了過程特性的對象語言,不僅提供了回調對象、回調方法等特性,也能兼容過程語言的回調函數機制。
Windows平台的消息機制也可以看作是回調的一種應用,我們通過系統提供的接口註冊消息處理函數(即回調函數),從而實現接收、處理消息的目的。由於Windows平台的API是用C語言來構建的,我們可以認為它也是回調函數的一個特例。
對於分佈式組件代理體系CORBA,異步處理有多種方式,如回調、事件服務、通知服務等。事件服務和通知服務是CORBA用來處理異步消息的標準服務,他們主要負責消息的處理、派發、維護等工作。對一些簡單的異步處理過程,我們可以通過回調機制來實現。