参考《Ice分布式程序设计》 马维达 译
一、简介
Ice是一种针对客户端和服务器进行通信的面相对象的中间件平台,Ice为构建面向对象的客户-服务器应用提供了工具、API和库支持,客户和服务器通信双方可以用不同的编程语言编写,目前最新的版本支持语言包括c++、.NET、Java、Python、Objective-C、Ruby、PHP and ActionScript,客户端和服务器可以分别部署,可以运行在不同的操作系统和机器架构上。
Ice核心为远地通信提供了客户端和服务器运行时支持,其中的大量代码所涉及的是网络通信、线程、字节序、以及其他许多余网络有关的问题,我们的应用代码应该与这些问题隔离开来。
Ice提供了一种RPC协议,既可以把TCP/IP、也可以把UDP用做底层传输机制,客户端和服务器代码都不需要了解底层的传输机制(你可以通过一个配置参数选择所需的传输机制 )。
Ice还允许你把SSL用做传输机制,让客户与服务器之间所有通信都进行加密,通过SSL强密,可以使客户和服务器完全完全地进行通信,这样,应用可以使用不安全的网络安全进行通信。
Ice提供了同步和异步的操作调用和分派。
客户端采用异步方法调用,可以不需要等到服务器做出答复,在Ice run time等待答复的同时,客户端发出调用的线程不会阻塞,发出调用的线程可以继续进行各种活动,当答复最终到达时,Ice run time会通知应用。
服务器可以采取用异步方法分配,一个服务器在同一时刻所能支持的同步请求受到Ice run time的服务器线程池的尺寸限制,如果所有线程都忙于分派长时间运行的操作,那么就没有线程可用于处理客户端发送过来的新的请求,客户端就会出现不可接受的无响应状态。
在使用异步方法分配时,服务器可以接受一个请求,然后先将此请求放入任务池中,让其他的线程处理,以尽快释放分派线程,当处理结果已得出时,服务器要使用Ice run time提供的回调对象,显式地发送相应到客户端,告知客户端请求处理的结果。
二、Ice服务
Ice核心为分布式应用开发提供一个完善的客户-服务器平台,但现实应用需要的常常不止是远地通信能力;你通常还需要拥有这样的能力