ice操作流程?
Ice 是一種面向對象的中間件平臺,這意味著 Ice為構建面向對象的客戶-服務器應用提供了工具、API 和庫支持。要與Ice持有的對象進行通信,客戶端必須持有這個對象的代理(與CORBA的引用是相同的意思),這里的代理指的是這個對象的實例,ICE在運行時會定位到這個對象,然后尋找或激活它,再把In參數傳給遠程對象,再通過Out參數獲取返回結果。
這里提到的代理又分為直接代理和間接代理,直接代理其內部保存有某個對象的標識,以及它的服務器的運行地址;間接代理指的是其內部保存有某個對象的標識,以及對象適配器名(object adapter name),間接代理沒有包含尋址信息,為了正確地定位服務器,客戶端在運行時會使用代理內部的對象適配器名,將其傳給某個定位器服務,比如IcePack服務,然后,定位器會把適配器名當作關鍵字,在含有服務器地址的表中進行查找,把當前的服務器地址返回給客戶,客戶端 run time現在知道了怎樣聯系服務器,就會像平常一樣分派 (dispatch)客戶請求。
ICE可以保證在任何的網絡環境或者操作系統下,成功的調用只有一次,它在運行時會盡力的定位到遠程服務器,在連接失敗的情況下會做嘗試性重復性連接,確實連不上的情況會給用戶以提示。
客戶端在調用服務端的方法時,可以采取同步或異步的方式實現,同步調用就相當于調用自己本地的方法一樣,其它行為會被阻塞;異步調用是非常有用的調用方式,如服務端需要準備的數據來自于其它異步接口,這個時候客戶端就不需要等待,待服務端數據準備充份后,以消息的方式通知客戶端,服務端就可以去干其它的事情了,而客戶端也可以到服務端獲取數據了。