共用方式為


搭配 .NET Framework 遠端處理來使用事件與委派

本主題專門說明一項為了在現有應用程式中提供回溯相容性而保留的舊有技術,不建議用於新的開發工作。分散式應用程式應使用 Windows Communication Foundation (WCF) 進行開發。

雖然您可以搭配 .NET Framework 遠端處理來使用事件與委派,要成功使用它們必須先滿足兩項要件。特別是,只有當您在 IpcChannel 上使用驗證時,才需要使用它們。

使用委派

遠端委派會產生必須解決的安全性問題。如果用戶端將委派傳遞給伺服器 (大部分是當用戶端將事件處理常式附加到遠端事件上時完成),附加的委派可能會參考未經授權且包含相同簽章的方法,如同服務所適用的方法一樣。由於不適用與適用的方法簽章相符,服務可以叫用不適用的方法,即使方法為靜態 (因此無法在遠端物件上呼叫) 也是一樣。

為了減輕這個情況的影響,伺服器應該使用自訂參數型別來定義委派,而包含這些型別的組件則應該具有強式名稱。此外,針對此類通訊您應該一律驗證 (甚至加密)。如果您不確定該型別是否適用,則請勿還原序列化伺服器上的型別。

使用事件

因為委派有一些安全性問題,因此不建議您使用事件。反之,當服務必須與用戶端通訊時,請定義會發行方法以供服務呼叫的用戶端回呼服務。如果您決定使用包含已驗證 IpcChannel (而且已經宣告委派,如先前所述) 的遠端事件,您應該讓自己的用戶端事件處理常式方法成為單向呼叫。這是因為在引發事件時,伺服器會叫用事件引動過程清單中的委派。事件系統會封鎖該引動過程,直到用戶端回傳或逾時為止。因此,未能接聽的用戶端會大幅降低簡單事件的輸送量,除非事件處理常式為單向方法。

另請參閱

概念

遠端處理中的安全性