輕量型用戶端處理程式可讓您建立任何大小的一般客戶端處理程式,以協助您執行任何類型的標準工作。 做為處理程式,這些可供多個用戶端使用。 它們與 OLE 處理程式不同,因為無法在伺服器啟動之前建立,而且其生存期與 Proxy 管理員的生存期相關聯,以防止處理程式可能因競爭條件而過早釋放。
Proxy 管理員是實作 IMarshal 介面的系統建立物件。 如果您使用標準封送處理,當您呼叫 CoGetStandardMarshal 時,系統會為您建立它(或 CoGetStdMarshalEx,以建立輕量型處理程式的匯總封送處理器),也會在 對象上實作 IClientSecurity 和 IMultiQI 介面。 在伺服器端,有一個對應的系統物件也會實作 IMarshal。 這些物件會以透明方式為您處理封送處理。
您可能要實作的這些處理程式有兩種一般類型:
- 執行不需要伺服器額外數據的服務的處理程式
- 使用伺服器額外數據的處理程式
伺服器所提供數據流中額外數據的一些可能用途如下:
- 來自伺服器的靜態數據。 不論要封送處理的特定介面為何,伺服器都會將相同的資料寫入資料流。
- 來自伺服器的個別介面數據。 根據正在封送的特定介面,伺服器可能會將不同的資料寫入資料流。
- 個別介面協助程式。 每個介面 COM 元件被匯總到客戶端處理器並委派給標準 Proxy。 例如,若要改善網路效能,IStream 的 COM 元件可以執行用戶端快取資料、預先讀取、後寫入、作業鎖定等等。
- 介面的網路版本。 介面的網路版本與客戶端和伺服器應用程式程式代碼所公開的介面不同。 例如,可以透過相同的網路介面 INetAB 將公開介面 IA 和 IB 多工化,這與內嵌伺服器處理程式的執行方式相同。 例如,可以將數據傳輸介面轉換成使用管道進行有效率數據傳輸的網路介面。
較舊版本的用戶端可能無法處理具有自定義處理程式的介面,原因有兩個:首先,當伺服器的處理程式被匯總且物件需要處理程式時,它們可能無法識別自定義封送資料包中使用的 CLSID。 其次,若處理代碼需要 COM 的新功能來建立匯總的標準封送處理器並執行遠端 QueryInterface 呼叫,則此程式代碼甚至可能無法在用戶端上執行。
相關主題