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 patentado , 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 .
Lanzado inicialmente en febrero de 2003, [4] Ice fue influenciado por la Arquitectura de Broker de Solicitud de Objetos Comunes (CORBA) en su diseño y, de hecho, fue creado por varios desarrolladores CORBA influyentes, 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 utilizado 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 invocación remota de objetos orientada a objetos, replicación, computación grid, conmutación por error, equilibrio de carga, cruces de firewall y servicios de publicación y suscripción. Para obtener acceso a esos servicios, las aplicaciones están vinculadas a una biblioteca auxiliar o ensamblado, que se genera a partir de una sintaxis similar a IDL independiente del lenguaje llamada segmento .
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-suscripción como Rendezvous o SmartSockets de Tibco Software , el contenido del mensaje consiste en objetos de clases bien definidas en lugar de texto estructurado.
es un conjunto de marcos que proporcionan servicios de equilibrio de carga , conmutación por error , descubrimiento de objetos y registro orientados a objetos.
facilita la implementación de software basado en ICE. Por ejemplo, un usuario que desee implementar nuevas funciones y/o parches en varios servidores puede utilizar IcePatch.
es un servicio basado en proxy para permitir la comunicación a través de firewalls, lo que convierte a ICE en un motor de comunicación por Internet .
Icebox es un contenedor de arquitectura orientada a servicios de servicios ejecutables implementados en bibliotecas .dll o .so. Esta es una alternativa más ligera a crear un ejecutable completo para cada servicio.
Slice es un formato de archivo propiedad de ZeroC que los programadores siguen para editar declaraciones y definiciones independientes del lenguaje informático de clases, interfaces, estructuras y enumeraciones. Los archivos de definición de sectores se utilizan como entrada para el proceso de generación de resguardos. El stub, a su vez, está vinculado a aplicaciones y servidores que deben comunicarse entre sí en función de interfaces y clases según lo declarado/definido por las definiciones de segmento.
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 predeterminada, que es generar una vector<double>
plantilla STL.