2016-03-07 67 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定义。即使你没有序列化,它也会给你一个与语言无关的定义。