Java <-> Java/C#/Objective-C 之间的通信

Posted

技术标签:

【中文标题】Java <-> Java/C#/Objective-C 之间的通信【英文标题】:Communicating between Java <-> Java/C#/Objective-C 【发布时间】:2013-04-22 17:32:09 【问题描述】:

在 Java Java/C#/Objective-C 之间进行通信的最佳方式是什么?

我们有 Java 作为服务器组件,Andorid、Windows Phone、ios 作为客户端。目前我们使用 json 作为通信媒介,我们使用库进行反序列化,它们很好。速度还可以。易于调试。但是每当我们向现有对象添加新对象或新字段时,都需要花费一些精力来更新映射并在所有平台上进行更改。

我们一直在研究 protobuf 和 thrift,protobuf 看起来不错,但似乎没有官方支持 Objective-c 并且它是二进制的?难以调试?另一方面,thrift 不支持我们确实需要的多态性。

对此最好的策略是什么?有没有我可以利用的现有技术?大家是怎么做到的?

提前致谢

【问题讨论】:

您使用哪个库来反序列化/序列化?我认为在 JSON 通信中,新的变化很容易适应 我们在java中使用jackson来反序列化。我们可以在 android 中轻松地重用该对象。但是在 C# 和 Objective-C 中,每次服务器添加一个字段或对象时,我们都必须添加一个新字段或对象。 我认为 XML 或 JSON 是合理的选择。 但是使用的库和/或您的架构应该允许兼容的更改,而无需重新部署客户端。添加字段不应破坏客户端。 【参考方案1】:

在objective-c中,可以使用JSONKit,很简单

这样使用:

NSDictionary *dic = [recieveStr objectFromJSONString];

NSString *str = [arr JSONString];

【讨论】:

我觉得问题是But whenever we add a new object or a new field to an existing object, it will take some effort to update the mapping and make changes in all platform “向现有对象添加新对象或新字段”不会影响客户端,我认为,如果客户端不需要使用添加的新字段。

以上是关于Java <-> Java/C#/Objective-C 之间的通信的主要内容,如果未能解决你的问题,请参考以下文章

Java <-> Java/C#/Objective-C 之间的通信

java 泛型

ob_start()ob_end_flush和ob_end_clean()多级缓冲

java 手工实现ArrayList版本2

数组多重排序

多线程线程切换问题