Internet Communications Engine , o Ice , es un marco RPC de código abierto desarrollado por ZeroC . Proporciona SDK para C++ , C# , Java , JavaScript , MATLAB , Objective-C , PHP , Python , Ruby y Swift , y puede ejecutarse en varios sistemas operativos, incluidos Linux , Windows , macOS , iOS y Android . [1]
Ice implementa un protocolo de comunicaciones de capa de aplicación propietario , llamado protocolo Ice, que puede ejecutarse sobre TCP , TLS , UDP , WebSocket y Bluetooth . [2] [3] Como su nombre lo indica, Ice puede ser adecuado para aplicaciones que se comunican a través de Internet, e incluye funcionalidad para atravesar firewalls .
Inicialmente lanzado en febrero de 2003, [4] Ice estuvo influenciado por la Common Object Request Broker Architecture (CORBA) en su diseño, y de hecho fue creado por varios desarrolladores influyentes de CORBA, incluido Michi Henning.
Sin embargo, según ZeroC, era más pequeño y menos complejo que CORBA porque fue diseñado por un pequeño grupo de desarrolladores experimentados, en lugar de sufrir un diseño por comité . [5]
En 2004, se informó que un juego llamado "Wish" de una empresa llamada Mutable Realms usaba Ice. [6] En 2008, se informó que Big Bear Solar Observatory había usado el software desde 2005. [7] El repositorio de código fuente de Ice está en GitHub desde mayo de 2015. [8]
Los componentes de Ice incluyen servicios de invocación remota de objetos, replicación, computación en red, conmutación por error, equilibrio de carga, cruces de cortafuegos y publicación-suscripción orientados a objetos. Para obtener acceso a esos servicios, las aplicaciones se vinculan a una biblioteca o ensamblaje de código auxiliar, que se genera a partir de una sintaxis similar a IDL independiente del lenguaje denominada slice .
es un marco de publicación y suscripción orientado a objetos que también admite la federación y la calidad del servicio. A diferencia de otros marcos de publicación y suscripción, como Rendezvous o SmartSockets de Tibco Software , el contenido del mensaje consta de objetos de clases bien definidas en lugar de texto estructurado.
Es un conjunto de marcos que proporcionan equilibrio de carga orientado a objetos , conmutación por error , descubrimiento de objetos y servicios de registro.
Facilita la implementación de software basado en ICE. Por ejemplo, un usuario que desee implementar nuevas funcionalidades y/o parches en varios servidores puede utilizar IcePatch.
es un servicio basado en proxy que permite la comunicación a través de firewalls, convirtiendo así a ICE en un motor de comunicación de Internet .
Icebox es un contenedor de servicios ejecutables con arquitectura orientada a servicios implementados en bibliotecas .dll o .so. Es una alternativa más liviana a la creación de un ejecutable completo para cada servicio.
Slice es un formato de archivo propiedad de ZeroC que los programadores siguen para editar declaraciones y definiciones de clases, interfaces, estructuras y enumeraciones independientes del lenguaje de programación. Los archivos de definición de Slice se utilizan como entrada para el proceso de generación de stubs. A su vez, los stubs están vinculados a aplicaciones y servidores que deberían comunicarse entre sí en función de las interfaces y clases declaradas o definidas por las definiciones de Slice.
Además de CORBA, las clases e interfaces admiten herencia y clases abstractas. Además, Slice proporciona opciones de configuración en forma de macros y atributos para dirigir el proceso de generación de código. Un ejemplo es la directiva para generar una determinada plantilla STL list<double>
en lugar de la opción predeterminada, que es generar una vector<double>
plantilla STL.