更新租用期
本主題專門說明一項為了在現有應用程式中提供回溯相容性而保留的舊有技術,不建議用於新的開發工作。分散式應用程式應使用 Windows Communication Foundation (WCF) 進行開發。
一旦建立了租用期 (Lease),租用期上可以更動的唯一屬性就是 ILease.CurrentLeaseTime。更新租用期的方式有兩種:用戶端可以直接呼叫 ILease.Renew,或者連絡贊助者並要求更新租用期。
贊助者
贊助者會接聽來自主機應用程式定義域的要求,以延長特定物件的租用期。贊助者會實作 ISponsor 並取得租用期的參考然後呼叫 ILease.Register,以註冊到租用管理員上。一般來說,當每個遠端物件都隸屬許多用戶端時,讓某個遠端物件將其要求傳送至其中一個用戶端上便已足夠更新租用期,不需要讓所有用戶端都將要求傳送至遠端物件上。
注意: |
---|
從 .NET Framework 版本 1.1 開始,註冊贊助者來參與伺服器物件的存留期需要同時在伺服器應用程式定義域與贊助者上執行 Full 自動還原序列化設定。如需詳細資訊,請參閱 .NET 遠端處理中的自動還原序列化。 |
使用贊助者同時可在一大群用戶端中提供動態更新原則。當一或多個用戶端都為多個遠端物件製造需要解決的問題時,這個方法可讓您同時解決一些問題。當遠端物件傳回解決方案,贊助者會收到通知,並允許其他所有遠端物件租用期到期。
由於遠端物件會從其目前位置連絡用戶端 (用戶端不用特地尋找),因此您也可以使用這個方法將遠端物件移轉到其他電腦上。
如果贊助者位於大型網路中,甚至位於具有許多防火牆的網際網路上時,可能會很難找到贊助者,這點請您要同時注意。您可以使用備份贊助者,或是將贊助者放置在主機應用程式定義域的附近以方便您找到它們,來解決這個問題。
主機應用程式定義域的租用管理員會負責維護一份贊助者清單。更新租用期的時間時如果需要用到贊助者,則會要求位於清單上層的贊助者來更新時間。如果贊助者未能於 ILease.SponsorshipTimeout 時間範圍內回應,就會從清單中移除並呼叫清單中下一個贊助者。
使用贊助者來更新租用期
贊助者可以藉由取得特定物件參考的租用期來參與存留期租用期、將這些租用期註冊為贊助者,並等候遠端租用管理員呼叫 ISponsor.Renewal。您可以呼叫 RemotingServices.GetLifetimeService 以將租用期當成必要參數的物件包含在內,來取得物件租用期。此呼叫是 RemotingServices 類別的靜態方法。如果此物件是應用程式定義域的本機物件,則此呼叫的參數將為物件的本機參考,而傳回的租用期則為租用期的本機參考。如果此物件是遠端物件,則會將 Proxy 當成參數傳遞出去。請注意,租用期本身是一種傳址封送處理 (MBR) 物件,因此當您取得遠端物件的租用期時,會同時取得租用期的 Proxy。因此,當您對租用期上的方法進行呼叫時,即是對伺服器處理序進行遠端呼叫。
接著,您可以呼叫 Register 並將贊助者與選擇性的 TimeSpan 物件 (如果剛建立此物件) 傳遞出去,將贊助者註冊到遠端租用管理員中。
當此物件的租用期到期時,租用管理員可能會回呼您的遠端贊助者。您的贊助者在實作 Renewal 時所傳回的值,會成為新的租用期時間。