我有两个合作的项目。他们是Java&分别为C#。后端是Java,前端是C#。他们正在用REST API互相交谈。由于它们是两种不同的编程语言,现在我必须为两个项目定义一些公共类,这两个项目无论如何都是多余的。
我正在寻找的是可以用作两个项目的类/结构。所有成员都是字符串或int。例如,
class Person
{
int age;
String name;
String grade;
};
我的第一个偏好是像idl(文件可以在两个项目中编译)。如果不可能,在编译期间,从一种语言到另一种语言的转换也是可以接受的,因为转换是免费的,并且可以在企业代码库中使用而没有法律影响。
非常感谢!
答案 0 :(得分:1)
一种可能的选择:用Java编写类,使用IKVM工具中的ikvmc为它们生成.NET代码。
答案 1 :(得分:0)
我在几个Java项目中使用了IDL,以便与用C语言编写的其他系统组件(不是C#)进行互操作。
我做了以下事情:
创建一个定义我的共享类型的IDL文件。
module com {
module my {
module package {
struct Person {
int age;
String name;
String grade;
};
};
};
};
运行IDL编译器:idl.bat -genEnhanced -d {outputDir} {path/to/myFile.idl}
这应该为您提供文件的Java版本(Java文件可以用作您拥有的任何其他Java文件)。快速挖掘表明iiop-net 为C#提供了类似的编译器功能(同样,我没有使用C#IDL编译器,只使用Java编译器。)
答案 2 :(得分:0)
创建XSD定义并使用正确的工具(Java中的xjc,不记得.NET)在每个平台上创建对象。支持许多平台,尽管处理不同数据类型的方式存在一些细微的差异,尤其是集合,但是可以编写适用于所有内容的XSD定义。即使您不进行序列化,它也会为您提供与语言无关的定义。