RMI and CORBA Differences?

2019-01-19 02:21发布

问题:

I am studying for a final and have a few questions about RMI and CORBA. These are discussion questions taken from a study guide so there is no real application context around them.

  1. Why are RMI and CORBA based on TCP? The question states to answer in terms of invocation semantics.

What I have thought of so far is that TCP is going to be more reliable than UDP and in RMI/CORBA, we want network reliability. I also read somewhere that TCP is deeply embedded in the native Java networking classes. I am not as confident in this statement since CORBA can be implemented in any language.

  1. Discuss the difference between the RMI and CORBA name service.

I am a little confused about this question because what I have read so far is that RMI and CORBA are converging technologies and RMI can access CORBA objects. How I understand it now, the name services seem to be very similar and any differences are not worth noting.

  1. Why does RMI need dynamic invocation explicitly unlike CORBA?

I havent came up with anything.

I realize I am asking three different questions, but they all seem to related.

回答1:

RMI/CORBA based on TCP: They both are essentially distributed object invocation mechanisms, and it's easier just to build this on top of a reliable transport where you don't have to worry about data being dropped. If they built it on UDP, they would have to have a lot of other mechanism to worry about retransmission and duplicates, etc.

RMI/CORBA name service: Look more deeply here. The CORBA name service is called COS Naming, and the RMI name service is JNDI. They are at different levels of architecture. JNDI is essentially a set of APIs and COS naming is both APIs (as expressed through IDL) and a wire protcocol definition.
Dynamic invocation. I'm not sure of the meaning of this question. Both technologies essentially allow you to call methods on objects remotely.

Hope this helps a little.



标签: java rmi corba