Question

We have to perform a semester project with distributed computing using CORBA or ICE. It is a single-person project and we have a couple of months of time.

For the programming language I'd like to focus on c# for it may be any other like C++.

I don't want to write the one millionth prime generator, maybe there is something much more interesting which I didn't think of yet..

Was it helpful?

Solution

If I were you, ....what I would do is go to your prof and ask to work outside the lines. Ask to be released from the CORBA or ICE requirement.

Ask if you can use something that is NOT Corba. Ask if you can use REST, or XML Web services, or even protobufs.

CORBA is not irrelevant, as far as the principles go, but it is nearly irrelevant in commercial appeal. Do something that will teach you some more current skills.

To me, it would be like studying vacuum tubes. Interesting academically and scientifically, but...

Rather than a prime number generator, why not get a little more interesting?

  • a distributed hash table, something like the new BitTorrent design.

  • a work distribution system for a compute farm. How would you build a distributed map/reduce across that farm? you could do encryption, compression, video ripping. Build a general purpose distributed work management system that would be appropriate for any of those jobs, with a modular architecture. How would you detect failures (host offline or non-responsive)? How would you deal with rescusitated hosts?

  • a SETI-@Home type of network. or protein folding. or climate trend analysis (using Public Domain databases - http://en.wikipedia.org/wiki/Public_Domain_Resource ) Something where you're doing something more practical than computing prime numbers.

  • OR - actually do the prime number problem, but apply it to cryptography, breaking keys.

  • a network of agents, where you actually distribute code to the nodes to execute. Something like JavaSpaces.

  • a poker bot.

just some ideas.

OTHER TIPS

Not sure if the focus of the project is on the distributed processing portion or the actual task you decide upon.

CORBA is more prevalent than ICE in the real world, though hardly something you would want to hang a career around. It's still used in various embedded projects and it is still fairly popular in certain military applications.

ICE is easier to work with but doesn't have nearly the industry penetration (to my knowledge) of CORBA. But if your goal is to complete a project and learn distributed principles then I would go with it. It will be much less painful to learn and work with than CORBA. In fact ICE was developed by former CORBA engineers who wanted to correct some of the mistakes they saw in CORBA.

I've found that fault tolerance makes distributed computing projects a little more interesting. The task itself can be relatively simple, but ensuring that it can handle unavailable systems or faulty data adds a nice additional requirement.

If your project is asking you use CORBA or ICE. I would say try both and see which one you make progress on first, then go with that one. They both seem to have C# interfaces (from google searches).

Otherwise you could look into using .Net Remoting. It wasn't too tough to get the rudiments working for me the one time I was asked to do it... ~2 years ago now.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top