ICE采用的网络协议有TCP、UDP以及SSL三种。ICE 是中间件平台。
Oneway(单向调用):客户端只需将调用注册到本地传输缓冲区(Local Transport Buffers)后就立即返回,不会等待调用结果的返回,不对调用结果负责。
Twoway(双向调用):最通用的模式,同步方法调用模式,只能用TCP或SSL协议。
Datagram(数据报):类似于Oneway调用,不同的是Datagram调用只能采用UDP协议而且只能调用无返回值和无输出参数的方法。
BatchOneway(批量单向调用):先将调用存在调用缓冲区里面,到达一定限额后自动批量发送所有请求(也可手动刷除缓冲区)。
BatchDatagram(批量数据报):与上类似
不同的调用模式其实对应着不动的业务,对于大部分的有返回值的或需要实时响应的方法,我们可能都采用Twoway方式调用,对于一些无需返回值或者不依赖返回值的业务,我们可以用Oneway或者BatchOneway方式,例如消息通知;剩下的Datagram和BatchDatagram方式一般用在无返回值且不做可靠性检查的业务上,例如日志。
1个关键的概念:数据的序列化和反序列化。
ICE的核心部份,提供了客户端与服务端的网络连接等核心通信功能,以及其它的网络通信功能的实现及可能的问题的处理,让我们在编写应用代码的时候不必要去关注这一块,而专注于应用功能的实现。
ICE主要就是各种语言之间的转换。
ice协议主要有两部分:一个是编码规则,另一个是状态机。双向连接的特性使得ice能穿越防火墙,NAT边界,还支持压缩,在低带宽链接上很有用
ICE的几个有用组件:
Glacier是Ice防火墙服务:它能让客户与服务器通过防火墙安全地进行
通信,且又不牺牲安全性。客户-服务器之间的通信数据使用公钥证书进
行了完全的加密,并且是双向的。Glacier支持相互认证,以及安全的会话
管理
IcePatch是一种软件修补服务。你可以用它来轻松地把软件更新分发给
客户。客户可以简单地连接到IcePatch,请求获得特定应用的更新。这个服
务会自动检查客户的软件的版本,并以一种压缩形式下载任何更新过的应
用组件,从而节省带宽。你可以用Glacier服务来保护软件补丁,只让得到
授权的客户下载软件补丁。
IceStrom类似于组播。
IceStorm是一种发布-订阅服务,能够解除客户与服务器的耦合。在本
质上,IceStorm充当的是事件分发交换机。发布者把事件发给这个服务,
由它发给订阅者。这样,发布者发布的单个事件就可以发送给多个订阅
者。事件按照主题进行分类,订阅者会指定它们感兴趣的主题。只有那些
与订阅者感兴趣的主题相吻合的主题才会发给这个订阅者。这个服务允许
你指定服务质量标准,让应用在可靠性和性能之间进行适当的折衷。
如果你需要把信息分发给大量应用组件,IceStorm就会特别有用(一个
典型的例子是,拥有大量订阅者的证券报价应用)。IceStorm能解除信息的
发布者与订阅者的耦合,并负责重新分发已发布的信息。此外,IceStorm
还可以作为联盟(federated)服务运行,也就是说,服务的多个实例可以
在不同的机器上运行,使处理负载分摊到许多CPU上。
IceBox是一种简单的应用服务器,可用于协调许多应用组件的启动和停
止。应用组件可以作为动态库、而不是进程进行部署。例如,你可以在单
个Java虚拟机中运行若干应用组件,而无需使用多个拥有自己的虚拟机的
进程,从而减轻整个系统的负担。
Ice只有1个层次最深的对象,其他都是对象上的facts,使用标识符来标识该对象。