2016-03-07 66 views
1

我有兩個一起工作的項目。它們分別是Java & C#。後端是Java,前端是C#。他們正在使用REST API互相交談。由於它們是兩種不同的編程語言,現在我必須爲兩個項目定義一些公共類,這對於任何方式來說都是多餘的。如何在Java和C之間共享類定義#

我在找的是一個類/結構,可以使用兩個項目。所有成員都是字符串或int。例如,

class Person 
{ 
    int age; 
    String name; 
    String grade; 
}; 

我的第一選擇是像IDL(一個文件可以在這兩個項目被編譯)。如果不可能,在編譯期間,從一種語言到另一種語言的轉換也是可以接受的,因爲轉換是免費的,可用於企業代碼庫而沒有法律影響。

非常感謝!

+0

什麼阻止你使用IDL? – curob

+0

@curob他不知道該怎麼做,這是我的猜測。 – Gendarme

回答

1

一個可能的選擇:用Java編寫類,使用IKVM工具中的ikvmc爲它們生成.NET代碼。

0

我已經在幾個Java項目上使用了IDL,以便與用C(而不是C#)編寫的其他系統組件互操作。

我做了以下內容:

  1. 下載並安裝JacORB(http://www.jacorb.org/
  2. 將IDL編譯器(idl.bat)我的路徑
  3. 創建定義IDL文件上我的共享類型。

    module com { 
    module my { 
    module package { 
        struct Person { 
         int age; 
         String name; 
         String grade; 
        }; 
    }; 
    }; 
    }; 
    
  4. 運行IDL編譯器:idl.bat -genEnhanced -d {outputDir} {path/to/myFile.idl}

這應該讓你的文件的Java版本(Java文件可以作爲任何其他Java文件,你有)。做一些快速的挖掘表明iiop-net爲C#提供了類似的編譯器功能(同樣,我沒有使用C#IDL編譯器,只是Java的編譯器)。

0

創建XSD定義並使用正確的工具(Java中的xjc,不記得.NET)在每個平臺上創建對象。雖然與處理不同數據類型(特別是集合)的方式略有差異,但支持許多平臺,但可以編寫適用於所有內容的XSD定義。即使你沒有序列化,它也會給你一個與語言無關的定義。