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

Slice, IceBox and IceStorm questions

Good Morning,

Ice looks very nice :), but I am surprised how unknown this masterpiece actually is. I have read the comparison between CORBA vs. ICE and the performance of ICE vs. TAO. From my perspective, it would be very interesting to see how ICE is stacking up against other middleware such as SmartSockets(TIBCO), SonicMQ (JMS), MSMQ, etc -- Pros and Cons. Anyway, allow me to fire off some questions:

regarding ICEPack:
 How do objects communicate when they reside in the same ICEBox, but in different services?
 How do objects communicate when they reside in different ICEBoxe’s but on the same machine?
The reason for these questions is that I want to reduce latency as much as possible when it is possible. That is, avoiding the latency of Ethernet.

regarding ICEStorm:
 Is it difficult to enhance IceStorm server to store the latest published message for each topic; (similarly to the capability of ‘SmartSockets ‘(TIBCO)) so that a new subscriber can get hold of the latest published messages?
 Is it possible to run several ICEStorm servers to increase availability and throughput?

regarding Slice
 What are the most suitable data types for carrying XML and serialized data such as serialized C# and Java objects?
 Slice is a much better IDL, I agree, but organizations want to write their interfaces in UML to generate XMI in order to make their modeling work implementation/product independent. An XMI to Slice mapped would be very useful. Is there any such work underway?

Thank you for considering my questions.



  • benoit
    benoit Rennes, France
    Welcome to the forums and thanks for the compliments :).

    Regarding IcePack and IceBox services, by default the IceBox server is configured to run the services within a same IceBox without collocation optimization enabled. This is the safest setting as collocation optimization can have some unexpected side effects (see the Ice manual for more information on collocation optimization). You can turn on collocation optimization for some services by setting the property IceBox.UseSharedCommunicator.<service name> to a non zero value for each of your services. Communications between servers on the same machine are going through the loopback interface.

    We have plans to add message persistency to IceStorm. However, we're currently not planning on adding some functionality to allow new subscribers to receive previous messages. You could do this with a dedicated subscriber that would log every messages received on the topic. Of course, if you have a commercial need for such a feature, we could look into it.

    IceStorm supports federation, you can use federation to increase availability and throughput (see the IceStorm section in the manual for more information!).

    I would use sequence<byte> to transfer C# or Java serialized data and you could use string (UTF-8 encoded) for XML. We currently have no plans for a XMI to Slice translator. But again, if you have a commercial need for this, we could think about it. If that's the case, please contact us at!

    Let us know if you have more questions :)!