Google 云端点的数据传输优化
Data transport optimization with Google cloud endpoints
我正在通过 google 云端点从 google 应用引擎 (java) 向 java 脚本发送一个 List<Item>
。
Item
:
public class Item implements Serializable {
private String item1;
private Integer item2;
private String item3;
//(...) item (4-39)
private String item40;
//Constructor, Getters, setters, +functions
}
在 java 脚本中,我收到的每个项目的数据结构如下:
{item1:"v1",item2:"v2"}
同样在每个对象的末尾,我收到了很多我不明白为什么要发送的数据。
'?'数据不是我定义的函数。我认为它是可序列化对象函数,但我不明白为什么发送。
我需要以这种格式发送数据:{"v1","v2"}
而不是 {item1:"v1",item2:"v2", a lot of functions}
以减少数据的大小。
我想解决发送java的List<String>
中的数据的问题。
但是有点复杂"ugly"因为例如Item
对象的一些属性是结构化对象。
是否有google云端点中描述的方法以这种方式发送数据?
有什么方法可以设置端点只发送 "necessary" 数据吗?
首先,我认为这不是个好主意,但您可以使用转换器来控制对象的序列化方式。但是,如果您使用生成的客户端库,您将丢失所有信息——它们只会将事物视为字符串列表。端点应该自动为你 gzip 东西,这应该有助于节省大量带宽。您应该进行测量,比较两个完整的 5000 列表并查看到底节省了多少带宽。请记住,端点也不会传输空属性,因此如果许多属性未全部设置,您会自动节省带宽。
有关如何使用转换器的详细信息,请参阅 this page。基本上,您需要带有相关注释的 class ItemTransformer implements Transformer<Item, List<String>>
。
我正在通过 google 云端点从 google 应用引擎 (java) 向 java 脚本发送一个 List<Item>
。
Item
:
public class Item implements Serializable {
private String item1;
private Integer item2;
private String item3;
//(...) item (4-39)
private String item40;
//Constructor, Getters, setters, +functions
}
在 java 脚本中,我收到的每个项目的数据结构如下:
{item1:"v1",item2:"v2"}
同样在每个对象的末尾,我收到了很多我不明白为什么要发送的数据。
'?'数据不是我定义的函数。我认为它是可序列化对象函数,但我不明白为什么发送。
我需要以这种格式发送数据:{"v1","v2"}
而不是 {item1:"v1",item2:"v2", a lot of functions}
以减少数据的大小。
我想解决发送java的List<String>
中的数据的问题。
但是有点复杂"ugly"因为例如Item
对象的一些属性是结构化对象。
是否有google云端点中描述的方法以这种方式发送数据?
有什么方法可以设置端点只发送 "necessary" 数据吗?
首先,我认为这不是个好主意,但您可以使用转换器来控制对象的序列化方式。但是,如果您使用生成的客户端库,您将丢失所有信息——它们只会将事物视为字符串列表。端点应该自动为你 gzip 东西,这应该有助于节省大量带宽。您应该进行测量,比较两个完整的 5000 列表并查看到底节省了多少带宽。请记住,端点也不会传输空属性,因此如果许多属性未全部设置,您会自动节省带宽。
有关如何使用转换器的详细信息,请参阅 this page。基本上,您需要带有相关注释的 class ItemTransformer implements Transformer<Item, List<String>>
。