This forum has been archived. Please start a new discussion on GitHub.

ICE and the Actor Model

kwaclaw Oshawa, Canada

Having been away from ZeroC ICE for a few years, I was reminded of it when I came across the now popular implementations of the Actor model, like Akka, Orleans, ServiceFabric, .... Somehow it looks to me that the same can be done with ICE.

So the question is: Is ICE indeed an early framework for the Actor model?
If yes, could it then be advertised as such?


  • My 2 cents:
    ICE is a general purpose distributed system communication frame which provides various communication patterns. But it seems ICE does not limit itself to a specific application architecture, such as actor model. Based on my understanding, you can definitely implement actor model using ICE. But compared to other actor frame work , you may have to implement some features yourself.
  • I'd concur with Peter,

    ICE maybe doesn't supply features touted by actor frameworks ( such as supervision hierarchies etc), but I think it's got a lot going for it that many actor systems lack. Specifically I recently played with Akka and was dismayed at the lack of type safety in the implementation of receiving a message ... it really defeats the purpose of using a strongly typed language like Scala :-( . I'm aware there's a 'typed actors' implementation in the works but I have to say I find a nice, clearly defined, slice definition of a callback interface much more appealing than an arbitrary 'receive' method in an actor system that may or may-not type-check with the message received....

    I can't really think of anything I could do with an Actor model that I couldn't do better with a combination of AMI+AMD in ICE :-) The main point is to prefer asynchronous APIs over synchronous, which ICE has done for a long time and has adapted to quite well now that the supported languages have finally caught up in supporting asynchronous concepts :-)

    Also I'd say ICE has a much better cross platform story than most actor frameworks. Akka ties you to the JVM largely, Erlang to the Erlang VM etc. With ICE you can mix and match between the most popular languages + runtimes.