views:

322

answers:

4

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..

+2  A: 

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.

Kaleb Brasee
I don't understand what you mean exactly. You call corba methods like any other method. When the service is not available or any argument has an invalid value, and exception will be thrown like in any other code?
codymanix
You have to handle nodes failing, i.e. not giving the results of their tasks. Faulty data is a bit trickier, it could be a valid value and yet a completely wrong result.
Georg Fritzsche
The goal is that you never have that exception thrown, that the redundant back end and, perhaps, error correction, prevent the client from failing.
Will Hartung
A: 

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.

Jason D
+2  A: 

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.

Duck
A: 

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%5FDomain%5FResource ) 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.

Cheeso
Don't just dismiss lower-level RPC mechanisms because you don't see them as popular. REST and all the web services are nice for certain areas, but definitely not for everything.
Georg Fritzsche
I guess you got me. I'm dismissive of CORBA specifically *because* I don't see it, and because that tells me that it's not an optimal investment career-wise. Advising that I shouldn't dismiss it because I don't see it -- well that seems backwards to me. CORBA was the wrong choice in 1996 when Java came on the stage. CORBA has been the wrong choice for most people, since then. There is no CORBA industry. No company makes any money in it. I am amazed that it is still being discussed.
Cheeso
It's not if clear OP wants an optimal career investment or to learn about DP, in which case CORBA is not a bad choice at all. Since RPC reinvents itself every decade its not certain that current fashions are optimal either. As gf notes, web services, etc., are not appropriate for a big swath of applications in telecom, software radio, embedded, etc., and even though they may not be as high profile as the latest web thingie they do exist and people get paid to code them.
Duck
While CORBA has real technical flaws - a testament to Design By Committee - no company makes money on it part because no one owns it and no one big company really pushed it. See MS's multiple stabs at various RPC technologies to kill it. Thing is, old things become new again and OP could do worse than delving into some of the issues.
Duck
If no company is making money on a technology, it is dying or dead, regardless of whether it is "owned" by a community or "owned" by a single entity. Consider Linux: it was primarily of academic interest until large companies, led by IBM and Oracle, started finding ways to make money on it. If aggregate revenue earned on a technology is in a long-term decline as with CORBA, it's not a good sign. Not where I would want to invest *my* time, and not where I would advise others to invest either.
Cheeso
I'm sorry but I see that as a terrible attitude to advocate to CS students. By that standard no one should bother to study Lisp or Prolog because there is no money in it and everyone should be coding in Java and C#. Vendors may not be making money on CORBA but that does not mean companies *using* it aren't and it doesn't negate the value in studying the underlying principles.
Duck
I see your point. There are things to learn from Lisp, Prolog, and CORBA. On the other hand, when I was in school, I was working towards getting a job, to make money. It was not an academic pursuit. It was professional training. Sure, it's nice background to know Lisp, to be able to "think in Lisp." It's also nice to know Shakespeare. But how practical is it? Given finite personal time and resources, how much of myself should I allocate to something that is of mostly historical interest, in CS terms?
Cheeso
Educational value aside, your web-service-oriented technologies simply don't fit everywhere, e.g. distributed computing with possibly heavy datasets, ... REST et al build on a very specific set of architectural choices and will die with them. Btw, its not about CORBA specifically, there are other technologies too it stands for.
Georg Fritzsche
I'm clear that REST doesn't solve every problem. While I agree with your comment, it is completely beside the point. What's relevant is this: CORBA is dead. It's silly to spend time learning it. Sure, it's still in limited use. But it is shrinking. No career-savvy professional is out there today saying to himself "Gee, I should really polish my CORBA skills." Forget about REST. Even in the absence of REST, CORBA is still a sinkhole, into which no more investment should be poured. Certainly not personal time of an individual programmer.
Cheeso