移动networking性能:将数据从networking服务器传输到手机的最有效的数据types是什么?

问:在networking服务器(/ other?)和手机(即ios / android / other)之间传输数据时,哪种数据types是最有效/最快速的?

  • JSON?
  • XML?
  • HTML?

问:应该使用哪种服务器技术?

  • php + mysql?

问:应该使用什么样的API?

  • RESTtypes的?
  • RPC?

任何虽然?

A1。 二进制。

你看过Google Protobuffers吗? 这是一个高效的具有跨平台function的二进制格式化器(java,c#,python,objective c,PhP,甚至有一个JScript实现可以敲打,但是我不相信它!)

你看过消息框架,如AMQP? 我成功实现了一个跨平台的二进制消息传递系统,使用AMQP作为消息路由器, Protobuffers作为二进制串行器和Rabbit MQ作为C#和Java客户端。 速度非常快,可以在0.5ms内完成从客户端到服务器的往返请求/响应(包括序列化/反序列化,不包括networking时间)。

消息堆栈变成:

移动> RabbitMQ客户端> Google Protobuffers> {互联网}> RabbitMQ服务器> Google Protobuffers> Webserver

JSON是你的下一个最快的串行器,但没有什么可以比较二进制速度和有效使用带宽。

A2。 为了提高性能,Oracle将处理大部分数据,但SQL Server和MySql将取决于您打算做的事情而给出非常好的结果。

这也取决于你的数据将如何被存储。 你在存储关系数据吗? 然后使用关系数据库。 你是否存储时间序列数据? 然后使用列sorting的数据库甚至是平面文件。 PyTables是基于python的文件中心数据库的一个很好的例子,非常适合存储科学数据集和时间序列。

这个问题的答案确实是“这取决于” – 你想做什么。 我还会考虑开发一个你熟悉的服务器技术,而不是基于数字select一个,因为它们都非常相似。

A3。 未知,不是我的专业领域。

最好的祝福,

首先,高效率是什么意思? 关于移动networking的性能,我会假设你正在谈论什么是发送networking请求到接收响应的最低延迟。

如果我们正在谈论less量的数据(<〜100kByte),格式可能并不那么重要,那么RTT将比吞吐量重要得多,因此您可以在JSON,XML等之间自由select。

对于更大的数据量,你提到的文本格式的冗长可能会成为一个重要的因素,因为吞吐量将成为瓶颈,你可以考虑只是gzip它,例如JSON + gzip。 这将导致处理惩罚。

您可能可以做一些testing,看看压缩数据的好处何时超过压缩所需的处理惩罚。

A1

这不仅仅是关于如何在客户端处理它的转移,例如它是使用HTML客户端来检索的?

延迟是移动设备上真正的杀手锏,但是内存也是一个大问题 – 我会select最简单的客户端处理的格式,可能是JSON(P),但是我想更详细地看一下数据/应用程序作出真正的build议。

如果你正在编写一个本地应用程序,当然值得考虑一个像ProtoBuffers或Thrift这样的二进制协议,但是我会试图用JSON或者其他文本格式之一敲打一个原型。

A2

也许你最了解的(理性的)

A3

我会去REST的基础上,一些请求将获得。

RPCbuild议请求将是POST,并且一些浏览器将AJAX POST分成两个TCP数据包,其中第二个仅在第一个被确认时发送(在高延迟环境中不好)。

安德鲁博士说:“这取决于”。 一切取决于你正在开发什么样的应用程序。 给我们更多的解释!