非同步遠端處理
遠端處理案例中的非同步程式設計,與單一應用程式定義域或內容中的非同步程式設計相同,但 .NET 遠端處理本身的組態和需求除外。如需使用 .NET 遠端處理和同步及非同步委派的完整範例,請參閱遠端處理範例:非同步遠端處理。
就像單一應用程式定義域非同步程式設計一樣,在 .NET 遠端處理案例中使用非同步程式設計,表示:
由呼叫端決定特定遠端呼叫是否為非同步。
遠端型別不必明確支援其用戶端的非同步行為。
執行階段會強制完整的型別安全。
您必須適當地使用 System.Threading 物件,等待或同步處理您的方法。
不過,在跨應用程式定義域或內容界限呼叫的應用程式中,.NET 遠端處理需要您設定 .NET 遠端處理系統,並確定用戶端程式撰寫模型也會是遠端呼叫的合格目標。原因十分簡單:如果您使用非同步呼叫,則可能會使用 .NET 遠端處理系統將從伺服器叫用的 callback 函式。例如,如果您將委派傳遞給靜態方法 (不可進行遠端處理) 或忘記將通道的連接埠設定為 "0" (讓系統代表您選取用戶端連接埠),則對伺服器的呼叫可以完成,但因為回呼用戶端的呼叫不會完成,所以沒有方法可取得結果。
用戶端本身並不需要擴充 MarshalByRefObject 或設定任何遠端型別,但在其他情況下,如果遠端型別要成為伺服器,則必須遵循相同的規則。
必須要有執行個體接收 callback 函式。
必須要有通道註冊為接聽 callback 函式。
請參閱
工作
概念
非同步呼叫遠端物件之方法的問題
遠端處理範例:非同步遠端處理
遠端應用程式組態