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