- Internet Communications Engine
The Internet Communications Engine, or Ice, is an object-oriented middleware that provides object-oriented
Remote Procedure Call ,grid computing , andPublish/subscribe functionality developed byZeroC and dual-licensed under theGNU GPL and a proprietary license. It aims to be useful for real-world systems without being overly complex, and also being highly efficient and scalable. It's supported on a very large number of environments, includingC++ , Java, .NET,Visual Basic , Python, Ruby andPHP .ICE and CORBA
It's influenced by
CORBA in its design, and indeed was created by several influential CORBA developers, includingMichi Henning , however, it is much smaller and less complex than CORBA. According to ZeroC's webpages, this is partly a result of being designed by a small group of experienced developers, instead of suffering fromdesign by committee .ICE Components
ICE is a set of CORBA like components that include object-oriented remote-object-invocation, replication, grid-computing, failover, load-balancing, firewall-traversals, and publish-subscribe services. To gain access to those services, applications are linked to a stub library or assembly, which is generated from a language independent IDL like syntax called "slice".
IceStorm
is an object-oriented publish-and-subscribe framework that also supports federation and quality-of-service. Unlike other publish-subscribe frameworks such as TIBCOs’ Rendezvous or SmartSockets, message content consist of objects of well defined classes rather than of structured text.
IceGrid
is a suite of frameworks that provide object-oriented load-balancing, failover, object-discovery and registry services.
IcePatch
facilitates the deployment of ICE based software. For example, a user who wish to deploy new functionality and/or patches to several servers may use IcePatch.
Glacier
is a proxy based service to enable communication through firewalls, thus making ICE an internet communication engine.
IceBox
is a SOA like container of executable services implemented in .dll or .so libraries. This is a lighter alternative to building entire executable for every service.
lice
Slice is a Zeroc-proprietary file format that programmers follow to edit computer-language independent declarations and definitions of classes, interfaces, structures and enumerations. Slice definition files are used as input to the stub generating process. The stub in turn is linked to applications and servers that should communicate with one another based on interfaces and classes as declared/defined by the slice defintions.
Apart from CORBA, classes and interfaces support inheritance and abstract classes. In addition, slice provides configuration options in form of macros and attributes to direct the code generation process. An example is the directive to generate a certain STL list
template instead of the default, which is to generate a STL vector template. Comparisons to other middleware
SOAP
Ice also compares favorably to
SOAP , the main advantages being that it's more object oriented, and offers vastly superior performance in terms of both bandwidth and processor load, because SOAP is based on HTTP and XML, which needs to be parsed, while Ice uses a binary protocol designed for high performance and low verbosity.External links
* http://zeroc.com/ice.html
* [http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=115&page=1 ACM Queue article on using ICE in game development]
Wikimedia Foundation. 2010.