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