0

我正在尝试创建一个客户端/服务器网络应用程序。客户端软件使用 Objective-C (Mac) 编写,服务器软件使用 Python (Linux) 编写。我想在任一端封装对象数据,并通过互联网将其发送到另一端。这将包括标准类型,如字符串、双精度和数据结构(数组、字典)以及二进制文件。

我的问题是,你会如何建议我这样做?什么技术有利于在两种不同的编程语言之间发送封装的数据,然后再进行转换?特别是Objective-C和Python?

Python 有 pickle/cPickle,它允许你获取 Python 对象并将它们封装到一个文件中,但是取消腌制它们会给你留下 Python 对象而不是 Obj-C 对象。我也见过 XML 和 JSON,尽管我仍然会遇到将对象转换的问题,例如将 Python 字典转换为 Obj-C NSDictionary,反之亦然。

从我收集到的信息来看,XML/JSON 可能很难与二进制数据一起使用,需要在封装之前先将其转换为文本。我可能会发送大量二进制数据(每个请求 50-100MB),因此文本转换会显着增加文件的大小,这是我想避免的。

谢谢你的帮助!

4

3 回答 3

2

如果您谈论的是基于传统浏览器的 Web 应用程序,那么我可能会坚持使用 JSON 或 XML 序列化。

对于其他任何我建议的鼓声请...

Google 协议缓冲区

体积小、速度快,并且有一套针对不同语言的不错的提供程序。

于 2009-11-06T20:15:59.067 回答
1

可能会检查一项名为 Thrift 的技术。它是一个基于 apache 的服务,专为不同语言之间的通信而构建。

编辑 -链接

于 2009-11-06T20:18:55.800 回答
1

您可以在客户端使用PyObjC和某种基于 python 的序列化。PyObjC 中有用于嵌入现有 Cocoa 应用程序和与 Python 运行时通信的工具。

于 2009-11-06T20:30:17.330 回答