我们将移动一些数据,这些数据将具有一些标准字段以及一些键值对,这些键值对会因数据项而异。显然,我们可以用 JSON 或 XML 编写代码来执行此操作并编写我们自己的编组/解组代码,但是我希望有一个基于标准的解决方案,它具有以下部分或全部:
- SharePoint 列表/.Net 的编组/解组
- Java的编组/解组
- 跨集成边界对数据进行操作的服务定义和语义
- 安全语义
我们将移动一些数据,这些数据将具有一些标准字段以及一些键值对,这些键值对会因数据项而异。显然,我们可以用 JSON 或 XML 编写代码来执行此操作并编写我们自己的编组/解组代码,但是我希望有一个基于标准的解决方案,它具有以下部分或全部:
我们目前正在研究执行此任务的 OData 协议:http ://www.odata.org/
大概你很久以前就已经做出了决定,但对于任何最终来到这里的人,并且可能对比 OData 更低级别的东西感兴趣,这就是我用于 C# 到 Java 数据交换的内容:
Google 协议缓冲区作为交换格式: https ://developers.google.com/protocol-buffers/
Marc Gravell 在 C# 端的 protobuf-net: http ://code.google.com/p/protobuf-net/
在 Java 端称为 protostuff 的程序: http ://code.google.com/p/protostuff/
(由于 Google 的实现是基于 Java 对象不可变的,所以我更喜欢 protostuff 而不是协议缓冲区的官方 Google Java 实现。)
实际上,我没有使用纯协议缓冲区作为交换格式——我在数据前面加上正在传输的(最外层)类的名称。这使得数据可以自我识别,以便在另一端进行反序列化。