I know very little about CORBA. As I understand it it is a mechanism by which objects can talk to each other regardless of the language they were written in. Does it always refer to 'remote' objects, or is it also used to connect objects on a single workstation? How is it similar to .NET and COM? How is it different?
CORBA and COM. From the reading and the discussions with friends working on CORBA and my personal working experience in COM the two can be compared in the following manner. COM is a component object model and deals with invoking objects on the same machine. It doesn't involve creation of Stubs and Skeletons for the parsing of information. But DCOM extends the capabillities of COM and makes it possible to use the model across the network. Here the creation of the stub and skeleton is taken care of by the RPCserver.DLL provided by microsoft. So it is Microsoft specific. Whereas in CORBA which deals with distributed computing and integrating objects coded in different languages the creation of the stub and skeleton is to be done by the programmer and this is not specific to any technology. But to implement the propreitery CORBA server is essential which will take care of parsing the information across the networks and across objects coded in different languages. Sorry I wont be able to comment on .NET as I could not get enough information to read about .NET. Hope the above information is relevant to u.
Does it always refer to 'remote' objects, or is it also used to connect objects on a single workstation? yes . CORBA can also be used to connect objects on a single workstation. But any body should prefer it if 2 objects are written in different languages and both languages are supported by CORBA. How is it similar to .NET and COM? COM V/S CORBA (1) COM is technology/specification of Microsoft CORBA is specification made by group of more then 700 companies known as OMG (Object Management Group). (2) COM and DCOM only works on Windows. CORBA works on many platforms. (3) COM/ DCOM is implemented by Microsoft For CORBA u will get many vendors. (4) COM/DCOM supports language available with Visual Studio.(ignoring .NET) DCOM supports many languages (c,C++,java,COBOL,...2/3 more)
(5) COM/DCOM generates dll where CORBA relies on Stub and skeletons. (6) CORBA can work across networks and across OS but not COM/DCOM. (7) COM/DCOM generates unique GUID. Where as CORBA relies on registry/serialized objects. (8) CORBA uses it language known as IDL. and there is mapping from IDL to languages, supported by CORBA. (9) If u want to know in more detail visit following links. Good links on this subject: http://www.cs.wustl.edu/~schmidt/submit/Paper.html I hope this much should clear basic difference between 2 competitive technologies. Thanks Nakul
Joined: Jul 11, 2001
Nakul, Some of your information is out of date. As I understand it .NET allows sharing of objects written in different languages. That's why I want to know how CORBA compares to it. (point #4) COM/DCOM implementations do exist ($$$$) for non-windows platforms. I don't know how well they actually work. Therefore DCOM does work to some degree across networks and OS boundaries. (point #6) COM also uses IDL - although likely Microsoft has added proprietary extensions :-) (point #8) I agree with the concept of using a more open technology like CORBA. I also understand that Java is not the only langage inthe wolrd and some languages may be more suitable for a particular problem. So communication between objects written in different languages is an important feature. What I am really after are the limitations and benefits of CORBA as compared to the Microsoft alternative of .NET (is .NET based on DCOM?). Also, For a java solution what is the disadvantage/advatage of using CORBA over RMI? Given that RMI is Java only and that is good enough for a particular problem, would there be any other reason to use CORBA instead? It seems like it would just be more work in that case. Would it make sense to focus only on CORBA and in some sense avoid RMI simply because it isn't as open (java only)? Or is there a significant advatage that RMI has when using only java may be acceptable? Thanks to both of you for your input.