Archived

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

Thesis - ICE versus Corba. Architecture questions

Hello,

At the moment I am writing my thesis about a comparison between Corba and ICE. The evaluation is finished and ICE fulfils my conditions better than Corba. In the next part of my thesis I have to implement a distributed system with several objects in Java which should communicate over the Ice middleware.
The distributed system consists of four different classes which should simulate an aerial surveillance system:

1. Plain: A plain has a geographical position. Its position can be asked over its method over the given time:

PlainPosition plain.getPlainPosition(long positionTime)

2. Sensor: Every sensor is a thread and asks in an interval of for example 30 seconds the actual position of every plain and sends it to all DataCenters which subscribed at a sensor:

public class Sensor extens Thread {

...

run() {

PlainPosition p1 = plaint1.getPlainPosition(long positonTime);
PlainPosition p2 = plain2.getPlainPosition(long positonTime);

dataCenter1.publishPlainPosition(p1 );
dataCenter2.publishPlainPosition(p1);

And so on
}

3. A DataCenter object collects all plain positions and sends them to a GUI which shows these positions on a map.

dataCenter1.publishPlainPosition(Plainposition p){

gui1.publishPlainPosition(p);
}

4. Finally all plain postitions will be shown on a map.

Now all classes are written to test their communications without a middleware and it works fine. Now ICE should be used for the communication between the objects.

In order to avoid architecture failures I would ask you if this architecture is correct:

1. All needed methods will be written as interfaces and my classes inherit from the abstract class which Ice created.

2. For example, a sensor must know all available plains. In addition to that a datacenter must know all sensors and have to subscribe/unsubscribe at them. A sensor calls the method of every datacenter object which has subscribed at the sensor.

Is the easist way to implement this demand with IceGrid as location service and IceStorm to implement the publiser/subsriber pattern?

Thanks,

Maverik888

Comments

  • matthew
    matthew NL, Canada
    Its hard to give concrete device when you don't really know all of your architectural goals. Its not clear to me why the data center has to know all sensors. You can publish the data events & the event source on a single IceStorm channel, which would remove that restriction.
  • Hello Matthew,

    Thank you for your comment. First of all a sensor collects all plain positions with their absolute latitude and longitude value and creates a relative plain position. The relative plain position depends on the position of the sensor itself and contains the azimuth, elevation and the distance between the sensor and the plain.

    Firstly a data center gets the relative plain position. Secondly the data center creates from the position of the sensor and the given relative plain positions an absolute plain position again.

    This is only a simulation system, but I have to contain these different objects. I know that normaly there must be only a connection between a gui and some plain objects. But this simulation system is a copy of a real system and I have to include this components in my distributed system.

    Thanks,

    Maverik888
  • This weekend I have read the chapters of the ice manual and I think I know what I have to do ;)!