• Ice 产品概述:

         互联网通信引擎(ICE)是一个现代化的面向对象的工具包,使你能够以 小的努力构建分布式应用程序。Ice可以让你专注于你的应用程序逻辑,并照顾所有的相互作用与低级别的网络编程接口。用Ice,也无需担心细节,例如打开网络连接,序列化和反序列化的数据网络传输,或重试失败的连接尝试(仅举例几十个这样的低级别细节)。

         你可以选择来实现不同的编程语言(如C客户端和和Java服务器)的客户端和服务器,并在你的Ice首选平台(Linux,Windows,Mac OS X,等)上运行这些应用程序,跨语言、跨平台的通信只是简单的在相同系统间的通信。

    产品优点:

    操作系统和编程语言

      Ice是一个通用的分布式计算平台。它可以在大量的操作系统运行,并提供了C,Java,C#(及其他 .NET语言), Objective-C,Python和Ruby,PHP,和脚本语言映射。(Ice-E应用程序必须用C语言编写)。

    现代和灵活的接口定义语言

      Slice(Ice规范语言)提供了一套丰富的数据类型,清晰地映射到所有支持语言。用户定义的类型包括枚举,结构,序列和字典,以及类和异常继承。类支持指针语义,所以对象的任意复杂图形(包括循环图),可以通过网络传递。

      运行时多态性保存在地址空间的界限,所以更多派生类型可以取代哪里的基类型。

      Reopenable模块和支持防止系统中的某一部分轻微的变化迫使整个系统重新编译。

    易于使用的语言映射

      Ice提供语言映射,整合自然和优雅的各语言及其库的特点。例如,Slice字典自然映射到C++地图,Java地图和.NET字典,所以程序员可以使用他们已经熟悉的语言结构。语言映射是类型安全,线程安全,安全异常,从而防止许多错误到以往到代码库。对于C++,Ice坚如磐石和全自动内存管理,使得它不可能泄漏或损内存。

    RPC特点:

    同步和异步调用和调度

      Ice同时支持同步(阻塞)和异步(非阻塞)调用。异步调用允许调用者重新控制线程,而RPC是在服务器方面取得的进展,并异步通知RPC结果时完成的。

      在服务器端,Ice提供同步和异步调度。异步调度允许服务器服务的任意数量的并发请求从客户端不用绑定为每个请求的处理线程。(Ice-E不支持异步调度。)

    动态调用和调度

      除了静态调用和调度,这依赖于编译层定义,Ice支持动态调用和调度,延迟决定哪些类型是用于通信直到运行时间为止。此功能允许您创建应用程序(如路由器和协议桥),在编译时未知时必须处理Slice类型。(Ice-E不支持这些功能。 )

    单向,数据,和批量处理

      Ice支持单向(TCP和SSL)和数据报(UDP)调用。这种调用服务器不返回答复,以便客户可以用它来实现“火灾和忘记”语义。

      单向和数据报调用可以进行批处理:而不是为每个调用在网络上发送一个单独的消息,运行时批处理调用被缓冲在客户端,一旦客户端决定发送一个批处理,被发送到单一的网络消息的主服务器上。批处理的调用是更有效的,特别是,如果客户端需要调用“设置”操作传输数据(但不返回)。

    请求转发

      Ice允许应用程序接收一个不透明的blob数据(称为blobject)请求,并将请求转发到一个新的目标。这使得创建一个非常有效的消息路由器,如IceStorm或Glacier2,因为信息可以转发,而不需要解组和重新编组数据。(Ice-E不支持blobjects)。

    线程

      Ice运行时间是全线程和线程安全的。你不需要为了保护在运行时的数据结构而获取关键区域, 的关键区域是那些你需要保护的应用程序特定数据竞争条件。

      Ice允许如何使用线程运行时间的复杂控制。您可以分配和控制多线程池去分开问题,并确保在一个系统的一部分的活动都不能消耗保持不同于该系统的线程。

      Ice为C + +提供了一个便携式的线程库,使得很容易地创建与Linux和Windows源代码兼容的线程应用程序。

    传输特点

      您可以选择TCP,SSL和UDP作为传输协议。Ice同时支持IPv4和IPv6 。(Ice - E不支持UDP和IPv6)。连接管理器是完全透明的:Ice运行时打开和关闭连接需要。但是,也可以明确控制连接的建立,例如,保留特定调用一个单独的连接。一台服务器可以同时传输和服务,客户可以自由使用在用不同传输服务器里实现的对象。

      Ice协议采用了紧凑的二进制编码,节省带宽和非常有效的去编组和解组。对于有限带宽的通信(如通过卫星频道), Ice提供协议压缩,这样减少调用绝对 低限度的大小。在运行时压缩可以启用和禁用不需要修改任何代码。

    版本

      一旦部署分布式系统,需要进行维护,以适应错误修复和改进。与传统技术相比,它是很难做到这一点,因为接口或数据类型的变化打破现有的客户端和服务器之间的上线合同,迫使所有系统组件进行升级一次。

      Ice提供两种处理这个问题的解决方案。使用可选的值,数据成员和操作参数可以添加和删除,而不会突破上线合同。使用方面,您可以添加新的功能,或改变现有的功能,以一个优雅的和非侵入性的方式。你可以很容易地进行修改,使得它们保持向后兼容,因此,逐渐升级分布式系统。