.Net Remoting 技術入門之遠端物件啟用模式
阿新 • • 發佈:2019-02-17
遠端物件啟用模式是指分別在伺服器和客戶端如何建立遠端物件,主要分為伺服器啟用和客戶端啟用一、伺服器端啟用 1、服務端:使用 RemotingConfiguration類的靜態函式RegisterWellKnownServiceType()來註冊遠端物件。 函式原型 public static void RegisterWellKnownServiceType(Type type, string objectUri, WellKnownObjectMode mode); 引數: // type: // 物件 System.Type。 // // objectUri: // 物件 URI。 // // mode: // 正在被註冊的已知物件型別的啟用方式。(請參見 System.Runtime.Remoting.WellKnownObjectMode。) WellKnownObjectMode又分為: Singleton模式:每個傳入的訊息由同一個物件例項提供服務。 SingleCall模式:每個傳入的訊息由新的物件例項提供服務。 2、客戶端: 1)可使用RemotingConfiguration類的靜態函式RegisterWellKnownClientType()來註冊遠端物件,然後可用new 獲取對遠端物件例項的引用。 引數: type: 物件 System.Type。 objectUrl: 已知客戶端物件的 URL。 2)使用Activator.GetObject()可獲取對遠端物件的引用。引數同上 二、客戶端啟用: 1、服務端: 用RemotingConfiguration類的靜態函式RegisterActivatedServiceType()註冊遠端物件,用其屬性ApplicationName設定物件 URI. 2、客戶端: 1) 用RemotingConfiguration類的靜態函式RegisterActivatedClientType(Type type, string appUrl);註冊遠端物件,然後可以new獲取遠端物件例項的引用。 2) 用Activator.CreateInstanceCreateInstance(Type type, params object[] args)可以非預設遠端物件。CreateInstance有多個過載方式。三、區別 1、伺服器端啟用物件被稱為伺服器啟用的,因為當客戶端使用new,只有一個代理被建立。實際物件直到通過代理來呼叫一個方法時才被建立(啟用)。換句話說,不是客戶端決定什麼時候去建立物理上的真正物件。客戶端啟用物件在客戶端使用new時就在伺服器上建立。 2、第二個差別是客戶端啟用物件可以使用非預設建構函式(帶引數的建構函式)啟用。伺服器端啟用物件不支援非預設建構函式,因為使用new只是建立一個代理,並沒有建立對應的實際物件。客戶端啟用物件可以通過new同時建立代理和物件。 3、第三個差別是客戶端和物件是如何聯絡在一起的。當註冊伺服器啟用物件時,你可以指定啟用模式來決定為每一個請求建立一個物件例項還是建立一個物件例項來服務所有的請求。這兩中啟用模式是: WellKnownObjectMode.SingleCall:為每個請求建立一個唯一的物件例項。 WellKonwnObjectMode.Singleton:建立一個物件例項來服務所有的請求