2012-10-18 64 views
1

我有android库存应用程序。此时,应用正通过https与服务器进行通信。我已经启用了gzip并且正在工作。当用户扫描条形码时,应用程序将该代码以及电话ID发送到服务器。我通过XML来完成。然后服务器响应xml女巫包含一些数据。如每个仓库中的金额是,价格,产品名称。然后用户确认金额和应用程序再次发送到服务器和消息响应(好,或不好)。尽量减少应用程序的上传和下载速度

当库存通过WiFi时,这不是问题,速度很好,延迟较低。但是,当库存通过移动网络进行时,通信会带来延迟。我需要为通信创建二进制格式吗?而且XML数据有很大的开销(像标签等不需要的数据)。或者有一些通信中的数据量最小化的标准或最佳实践?

回答

1

如果您主要关心的是减少有效负载的大小,那么您一定希望查看与XML不同的格式。一个受欢迎的选项是来自Google的protobuf

+0

我希望减少延迟... – Guntis

+1

“延迟”是什么意思?什么之间的延迟?网络延迟显然不在您的控制之下。您可以控制的是您在客户端和服务器之间来回切换多少次,有效负载的大小以及服务器运行的代码的性能。 – kabuko

1

您无法从应用程序调整延迟。你可以减小你的有效负载来加速传输,但这就是它。看看JSON。它比XML更轻量,几乎所有语言都是本地的。

0

如果客户端向您的服务器发送的请求过多,则可以考虑更改服务器API。例如,在获取库存时,您可以使用单独的API来获取产品类别,然后在获取类别后,分别调用以获取每个类别的产品,每种产品都有一个API来获取详细信息。为了尽量减少请求的数量,您可以创建一个单一的API,为您提供所有类别,每个类别下的所有产品以及这些产品的详细信息。这种方法将减少您的客户端和服务器之间的请求数量。

如果有效负载的大小真的很大,可以尝试更轻量级的JSON。