ICE是什么
首先澄清下ICE不适真正的“冰”,他是“Internet Communication Engine"的缩写,是zeroC公司的力作,也是前CORBA专家开发的开源的、面向对象的、分布式通信协议中间件。
ICE能做什么
- 跨语言通信,目前支持C、C++、.NET、.Java、Ruby、Python、JS、VB
- 高性能RPC调用,主要产品有skype
- 文件分发(IcePatch2)
- 服务管理(IceBox)
- 注册管理(Registry)
- 负载均衡(IceGrid)
- 版本控制(IceFacet)
- 持久化 (freeze)
ICE调用模式(TCP、UDP、SSL)
- Oneway
- Twoway
- Datagram
- BatchOneway
- BatchDatagram
ICE是如何工作的
ICE提供了面向对象的客户-服务的API、工具和库支持,要与ICE持有的对象通信,必须持有对象的代理,其实就是对象的实例。ICE在运行时会定位到这个对象,随后寻找和激活她。再把IN参数传递给他,再通过OUT参数获取返回结果。
代理:直接代理 、 间接代理
直接代理
本身保存了对象的标识和服务器的运行地址-
间接代理
本身保存了对象的标识和对象适配器名间接代理没有保存对象的寻址信息,为了能正确定位服务器,客户端会用代理内部的对象适配器名,把它传给某个定位器服务,定位器会把适配器名当作关键字,在含有服务器地址的表中寻找,之后把服务器的地址返回给客户端,客户端(RunTime)现在就知道了如何联系服务器,像平常一样分发(dispatch)客户端的请求。
ICE保证在任何网络或操作系统下,在RunTIme获取服务器成功调用一次,如果调用失败,ICE会尝试重试;重试不成功会提示客户端失败。
ICE提供同步和异步调用