2013-03-04 41 views
1

我清楚地知道CORBA和RMI之間的區別,除了存在in,out,inout的問題。CORBA和RMI的區別

CORBA使用IDL語言來描述接口,並且所定義的方法中的參數具有關鍵字:in,out,inout。它們的含義如下:

  • in:該參數從操作的調用者傳遞給對象。
  • out:參數從對象傳遞給調用者。
  • inout:參數在雙向傳遞。

我的問題:爲什麼是必要的,但CORBA沒有必要在JAVA/RMI的關鍵字(inoutinout)。

+1

RMI中只有參數。 – DwB 2013-03-04 18:12:16

+0

* Java中只有'in'參數。* – EJP 2013-03-05 00:41:03

回答

0

這僅僅是一個設計決定。他們設計的主要區別在於,CORBA被設計爲獨立於平臺和編程語言,但是RMI專爲Java編程語言而設計。

許多編程語言都有自己的方式來表示in,outinout參數方向,其中語言CORBA IDL具有其直接的等價性。在其他語言(例如Java)中,這些結構必須用複雜的包裝結構來實現。

Java編程語言沒有outinout參數(儘管它可以通過創建一個簡單的數值包裝類來實現),所有參數都通過了價值in(值類型)或引用(引用類型) 。而且由於Java本身不支持語言級別的參數指示,所以在RMI中也沒有必要這樣做。

0

但在JAVA/RMI中不是必需的。

它們在Java中不可用,更不用說Java RMI。設計師們決定通過價值傳遞一切。

+0

這些關鍵字在IDL中不是可選的。如果在具有參數的IDL接口中編寫函數,則必須指定in,out或inout。 – 2013-03-07 01:40:27

+0

@BrianNeal感謝您的糾正。 – EJP 2013-03-08 22:22:25