共用方式為


一旦建立使用期後,使用期上唯一可變更的屬性是 ILease.CurrentLeaseTime。有兩種方式可更新使用期:用戶端可直接呼叫 ILease.Renew,或可聯絡發起者並要求它更新使用期。

發起者

發起者會接聽來自主應用程式定義域的查詢,看看是否有查詢在詢問該發起者是否會擴充特定物件的存留使用期。發起者會實作 ISponsor,並會透過取得使用期的參考,然後呼叫 ILease.Register 的方式,向使用期管理員進行註冊。一般而言,每個遠端物件都有許多用戶端時,讓遠端物件將要求傳送給其中一個用戶端來更新使用期,會比讓所有用戶端將要求傳送給遠端物件更有效率。

Note注意事項

從 .NET Framework 1.1 版開始,註冊發起者以參與伺服器物件的存留期,需要伺服器應用程式定義域和發起者上都有 Full 的自動還原序列化設定。如需詳細資訊,請參閱 .NET 遠端處理中的自動還原序列化

使用發起者也可在大量用戶端間提供動態更新原則。這對於平行問題解決而言十分有效,在平行問題解決中,一或多個用戶端會同時丟一個問題給多個遠端物件解決。當其中一個遠端物件傳回方案時,發起者會收到通知,並允許所有其他遠端物件的使用期到期。

因為遠端物件會從它的目前位置聯絡用戶端,而不是由用戶端尋找它,所以這個方式對移轉遠端物件而言也十分有用。

重要的是也請注意,如果發起者位在大型網路或甚至是具有許多防火牆的網際網路上,則可能很難找到該發起者。您可建立備份發起者,或將發起者放在主應用程式定義域附近容易找到的位置,藉以克服這個問題。

主應用程式定義域的使用期管理員會維護發起者清單。需要發起者更新使用期時,會要求清單頂端的發起者更新這個時間。如果發起者未在 ILease.SponsorshipTimeout 時間範圍內回應,則會將它從清單中移除,並呼叫清單中的下個發起者。

使用發起者更新使用期

發起者參與存留使用期的方式為取得特定物件參考的使用期、將自己註冊為發起者,並等待遠端使用期管理員呼叫 ISponsor.Renewal。取得物件使用期的方式為呼叫 RemotingServices.GetLifetimeService,其會傳遞需要將使用期當做參數的物件。這個呼叫是 RemotingServices 類別的靜態方法。如果物件是應用程式定義域的區域物件,則這個呼叫的參數是物件的區域參考,而傳回的使用期是使用期的區域參考。如果是遠端物件,則會將 Proxy 當做參數傳遞。請注意,因為使用期本身是 marshal-by-reference (MBR) 物件,所以當您取得遠端物件的使用期時,會取得該使用期的 Proxy。因此,當您呼叫使用期上的方法時,是對伺服器處理序進行遠端呼叫。

然後,您可透過呼叫 Register 並傳遞發起者和選擇性 TimeSpan 物件 (如果已建立該物件),向遠端使用期管理員註冊發起者。

當這個物件的使用期到期時,使用期管理員可能會回呼您的遠端發起者。您發起者之 Renewal 實作的傳回值會變成新的使用期。

請參閱

工作

如何更新使用期

參考

<lifetime> 項目
遠端設定結構描述

概念

遠端處理範例:存留期
存留使用期
初始化使用期