原創(chuàng)|其它|編輯:郝浩|2009-07-08 09:33:32.000|閱讀 328 次
概述:Remoting編程基本原理:當客戶端創(chuàng)建遠程RemotableClass的一個實例,.NET框架在客戶端應(yīng)用程序域中產(chǎn)生一個代理。該代理看起來就像實際對象。代理收到調(diào)用后,通過通道連接到遠程的對象。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
程序范例:
五、Activator.GetObject和Activator.CreateInstance方法 Clock clock =(Clock) Activator.GetObject(typeof(Clock,”tcp://localhost:1234/Clock”); 激活客戶端對象時: 六、對象生存期和租用期
new操作符并不是激活遠程對象的唯一方法。.NET框架提供了其他的激活方法:GetObject和CreateInstance。它們都是System.Activator類的成員。GetObject被用來激活在服務(wù)器端激活的對象,而CreateInstance被用來激活在客戶端激活的對象。
當使用GetObject或者CreateInstance來激活遠程對象時,不再需要調(diào)用RegisterActivatedClientType或者RegisterWellKnownClientType來注冊服務(wù)器上可遠程化的類。例如:激活在服務(wù)器端激活的對象時:
RemotingConfiguration.RegisterWellKnownClientType(typeof(Clock),”tcp://localhost:1234/Clock”);
Clock clock = new Clock();
可以使用下面的方法代:
RemotingConfiguration.RegisterActivatedClientType(typeof(Stopwatch),”tcp://localhost:1234”);
Stopwatch sw = new StopWatch();
可以這樣的方式:
object[] url ={new UrlAttribute(“tcp://localhost:1234”)};
Stopwatch sw =(Stopwatch) Activator.CreateInstance(typeof(Stopwatch),null,url);
為什么要使用它們來代替new呢?因為在你僅知道URL和接口時,GetObject和CreateInstance可以仍使用。假設(shè)改變Clock類,它實現(xiàn)一個IClock接口。
使用GetObject時:
一個single-call服務(wù)器端激活對象只在方法調(diào)用期間生存。之后,被垃圾回收器標記為刪除。Singleton 服務(wù)器激活對象和客戶端激活對象不一樣,他們的生存期被租用控制。租用是一個對象,它實現(xiàn)了定義在System.Runtime.Remoting.Lifetime名稱空間的Ilease接口。
Singleton 服務(wù)器端激活對象和客戶端激活對象缺省的租用對象有一個5分鐘的InitialLeaseTime,2分鐘的RenewOnCallTime,5分鐘的CurrentLeaseTime。如果對象沒有方法被調(diào)用,當CurrentLeaseTime為0時它被清除,也就是5分鐘后被清除。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:自互聯(lián)網(wǎng)