在哪里存储GWT应用程序的数据 - GAE数据存储或XML文件

时间:2011-05-06 01:14:59

标签: java xml google-app-engine gwt google-cloud-datastore

我有一个部署在GAE上的GWT应用程序。我的应用程序的一部分依赖于静态数据,该数据当前存储在XML文件中。应用程序将此数据读入POJO集合。使用GWT-RPC将数据发送到客户端。根据用户所做的选择,它将过滤器应用于集合以获取特定对象(过滤在客户端完成)。

数据最多可包含3000条记录,XML文件总大小约为1MB。应用程序端没有这些数据的更新(它是只读的),但我可能经常在最初的几个月内添加新记录或更新/修复现有记录(随着应用程序的发展)。数据与应用程序中的任何其他数据无关。

我在获取性能方面的主要考虑因素之一。我尝试使用Apache Digester来解析XML,但是注意到即使解析600条记录并将它们发送到客户端也有点慢。

鉴于以下哪些要求会更好以及为什么 - 1.将数据保存在XML文件中,或者2.将数据存储在应用引擎数据存储中?

感谢。

2 个答案:

答案 0 :(得分:4)

一种替代方法是直接通过GWT加载XML文件(不使用GWT-RPC和服务器解析):

  1. 使用RequestBUilder从服务器获取数据。用法示例:http://www.gwtapps.com/doc/html/com.google.gwt.http.client.html

  2. 然后使用XMLParser解析回复。示例:http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsXML.html#parsing

  3. 以下是结合两者的示例:http://www.roseindia.net/tutorials/gwt/retrieving-xml-data.shtml

    唯一的缺点是你必须通过DOM手动解析XML,其中GWT-RPC直接生成对象。

    <强>更新

    基于我建议的评论:

    1. 使用JAXB解析XML文件以创建对象:http://jaxb.java.net/guide/_XmlRootElement_and_unmarshalling.html

    2. 将这些内容保存到内存缓存:http://code.google.com/appengine/docs/java/memcache/overview.html

    3. 在RPC请求中,检查内存缓存,如果数据不在那里,请转到1。

答案 1 :(得分:0)

我看待事物的方式,有两个瓶颈,虽然是相互关联的。一个是加载数据(从XML读取,解析)。另一个是发送给客户端。 您可以考虑批量发送,而不是发送整个群体。

通常我更喜欢在WEB-INF下存储这些文件。