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

Which solution is better when programming with ICE?

Hi ,
After reading the ICE reference manual 3.1.0 completely, I want to take the knowledge into practice----Develop a small application to know more details about ICE.

the attachment is the architecture of my distributed application.

Description: There are six subsystems distributed at different remote host. The digit next to each rectangle shows the servant number the SERVER should provide for that subsystem.

As a freshman of ICE, I know three ways to meet the specification mentioned above.

Solution 1: SERVER uses a single ICE::communicator which contains a single ICE::ObjectAdapter. And the adapter contains all the servants needed the SERVER to provide. In other words, the adapter contains 5 + 4 + 6 + 4 + 5 + 6 = 30 servants.

Solution 2: SERVER uses a single ICE::communicator which contains six adapters(the subsystem number). Each adapter services for a specified subsystem.

Solution 3: SERVER uses more than one ICE::communicator ??

May you tell me which solution is better ?
And what’s your solution to meet my specification?
I appreciate your help very much.:D


  • benoit
    benoit Rennes, France

    You should use a single communicator. Whether or not you use several object adapters depends on the network endpoints you want to expose for each sub-system, for example: you might want each subsystem to only be accessible on a given network interface. If all the subsystems should be accessible through the same endpoints, using a single object adapter is simpler.

  • thanks :):)

    i got some hints from you reply.:D

    Another question is :
    Does ICE run time has the ability to hand the following situation:

    At a very very short time interval (1seconds, suppose), each subsystem sends more than 2000 requests to the server, will all the requests be responded in time?

    And does this situation have anything to do with the adapter number?

    thanks again.

  • benoit
    benoit Rennes, France
    Sorry, it's impossible to say whether or not your system will be able to handle this load without more information such as the kind of hardware you're using, network environment, the implementation of your server, etc. I suggest that you simply give it a try :). You might also want to run the latency demo (located in the demo/Ice/latency directory of your Ice distribution) to give you an idea of how many "ping" requests Ice can handle on your hardware and network environment.

    I wouldn't expect the performances to be affected by the number of object adapters. The perfomances might be affected by the number of threads in the server thread pool though -- especially if you are running your server on a multi-CPU machine and if your server can take advantage of multiple CPUs (see the Ice documentation for more information on how to configure the Ice thread pool).