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