判斷模擬行為的兩個要素是:客戶端透過模擬層級明確授與伺服器的權限,以及伺服器在代表客戶端進行呼叫時隱藏自己身分的能力。 後者的功能稱為 遮蓋。 遮蓋必須與伺服器進行呼叫的安全性身分識別相關聯。
當伺服器模擬用戶端時,它會直接存取用戶端的安全性認證。 在特定的本地情境中,伺服器線程會采用客戶端的身份。 但是,當伺服器在其進程外進行呼叫時,客戶端身分識別不一定會顯示為呼叫所依據的身分識別。
啟用遮蓋時,伺服器模擬用戶端的呼叫可以在用戶端的身分識別下進行。 停用遮蓋時,伺服器會根據伺服器的身分識別進行呼叫。
此外,還有兩種形式的遮蓋,靜態遮蓋 和 動態遮蓋,可描述如下:
- 使用靜態隱匿進行偽裝。 使用 coSetProxyBlanket呼叫時,可以將原始用戶端身分識別(視為伺服器線程令牌)呈現給下游伺服器一次,並在 Proxy 上設定原始用戶端身分識別一次,並在後續的方法呼叫上使用該線程令牌。
- 使用動態隱蔽進行偽裝。 在呼叫下游伺服器的每個方法時,原始用戶端身分會被辨識為伺服器執行緒的令牌。 實際上,所呈現的身份可以動態確定。 執行此作業所需的額外負荷可能要高得多。
針對 COM+ 應用程式,預設組態適用於動態遮蓋功能。 這可以透過程序設計方式和系統管理方式進行變更。 雖然動態隱蔽可能會帶來性能開銷,但它提供了因需要進行模擬而通常必需的彈性。
有關匿蹤及可能行為精確描述的更多細節,請參閱 COM 文件中的 Cloaking。
相關主題