Introduction
Since the mid-nineties, the computing industry has been using object-oriented middleware platforms, such as DCOM and CORBA. Object-oriented middleware was an important step forward toward making distributed computing available to application developers. For the first time, it was possible to build distributed applications without having to be a networking guru: the middleware platform took care of the majority of networking chores, such as marshaling and unmarshalling (encoding and decoding data for transmission), mapping logical object addresses to physical transport endpoints, changing the representation of data according to the native machine architecture of client and server, and automatically starting servers on demand.
Yet, neither DCOM nor CORBA succeeded in capturing a majority of the distributed computing market, for a number of reasons.
DCOM was superseded by the Microsoft .NET platform in 2002. While .NET offers more powerful distributed computing support than DCOM, it is still a Microsoft-only solution and therefore not an option for heterogeneous environments. On the other hand, CORBA has been stagnating in recent history and a number of vendors have left the market, leaving the customer with a platform that is no longer widely supported; the interest of the few remaining vendors in further standardization has waned, with the result that many defects in the CORBA specifications are not addressed, or addressed only years after they are first reported.
It is against this unpleasant background of choices that ZeroC, Inc. decided to develop the Internet Communications Engine, or Ice for short The main design goals of Ice are:
- Provide an object-oriented middleware platform suitable for use in heterogeneous environments.
- Provide a full set of features that support development of realistic distributed applications for a wide variety of domains.
- Avoid unnecessary complexity, making the platform easy to learn and to use.
- Provide an implementation that is efficient in network bandwidth, memory use, and CPU overhead.
- Provide an implementation that has built-in security, making it suitable for use over insecure public networks.
To be more simplistic, the Ice design goals could be stated as "Let's build a middleware platform that is as powerful as CORBA, without making all of CORBA's mistakes."
The acronym ?Ice? is pronounced as a single syllable, like the word for frozen water.