ICE是什么
首先澄清下ICE不適真正的“冰”,他是“Internet Communication Engine"的縮寫,是zeroC公司的力作,也是前CORBA專家開發(fā)的開源的、面向?qū)ο蟮?、分布式通信協(xié)議中間件。
ICE能做什么
- 跨語言通信,目前支持C、C++、.NET、.Java、Ruby、Python、JS、VB
- 高性能RPC調(diào)用,主要產(chǎn)品有skype
- 文件分發(fā)(IcePatch2)
- 服務管理(IceBox)
- 注冊管理(Registry)
- 負載均衡(IceGrid)
- 版本控制(IceFacet)
- 持久化 (freeze)
ICE調(diào)用模式(TCP、UDP、SSL)
- Oneway
- Twoway
- Datagram
- BatchOneway
- BatchDatagram
ICE是如何工作的
ICE提供了面向?qū)ο蟮目蛻簦盏腁PI、工具和庫支持,要與ICE持有的對象通信,必須持有對象的代理,其實就是對象的實例。ICE在運行時會定位到這個對象,隨后尋找和激活她。再把IN參數(shù)傳遞給他,再通過OUT參數(shù)獲取返回結(jié)果。
代理:直接代理 、 間接代理
直接代理
本身保存了對象的標識和服務器的運行地址-
間接代理
本身保存了對象的標識和對象適配器名間接代理沒有保存對象的尋址信息,為了能正確定位服務器,客戶端會用代理內(nèi)部的對象適配器名,把它傳給某個定位器服務,定位器會把適配器名當作關(guān)鍵字,在含有服務器地址的表中尋找,之后把服務器的地址返回給客戶端,客戶端(RunTime)現(xiàn)在就知道了如何聯(lián)系服務器,像平常一樣分發(fā)(dispatch)客戶端的請求。
ICE保證在任何網(wǎng)絡或操作系統(tǒng)下,在RunTIme獲取服務器成功調(diào)用一次,如果調(diào)用失敗,ICE會嘗試重試;重試不成功會提示客戶端失敗。
ICE提供同步和異步調(diào)用