閱讀英文

共用方式為


Proxy

Proxy 位於呼叫進程的位址空間中,並做為遠端物件的代理。 從呼叫對象的觀點來看,Proxy 是物件。 一般而言,Proxy 的角色是封裝介面參數,以呼叫其物件介面中的方法。 Proxy 會將參數封裝到訊息緩衝區,並將緩衝區傳遞至通道,以處理進程之間的傳輸。 Proxy 會實作為匯總或復合物件。 它包含系統提供的管理員元件,稱為 Proxy 管理員,以及一或多個稱為介面 Proxy 的介面特定元件。 介面 Proxy 的數目等於已公開給該特定客戶端的物件介面數目。 對符合元件物件模型的用戶端,Proxy 似乎是真正的物件。

注意

透過自定義封送處理,Proxy 可以類似實作,也可以直接與對象通訊,而不使用存根。

 

每個介面 Proxy 都是一個元件物件,可實作其中一個物件介面的封送處理程式代碼。 Proxy 代表它提供封送處理程式碼的物件。 每個 Proxy 也會實作 IRpcProxyBuffer 介面。 雖然 Proxy 所代表的物件介面是公用的, 但 IRpcProxyBuffer 實作是私用的,而且會在 Proxy 內部使用。 Proxy 管理員會追蹤介面 Proxy,也包含匯總之 控制 IUnknown 介面的公用實作。 當支援介面的介面具體化至用戶端時,每個介面 Proxy 可以存在於個別的 DLL 中。

Proxy 的結構

下圖顯示 Proxy 的結構,其支援兩個介面之參數的標準封送處理:IA1 和 IA2。 每個介面 Proxy 都會實作 IRpcProxyBuffer ,以在匯總片段之間進行內部通訊。 當 Proxy 準備好跨進程界限傳遞其封送處理參數時,它會在通道實作的 IRpcChannelBuffer 介面中呼叫方法。 通道會轉送對 RPC 執行時間連結庫的呼叫,使其可以到達物件中的目的地。

Diagram that shows the structure of the proxy.

通道

對象間通訊

封送處理詳細數據

Microsoft RPC

Stub