Где хранить данные для приложения GWT - хранилище данных GAE или файл XML - PullRequest
1 голос
/ 06 мая 2011

У меня есть приложение GWT, которое развернуто в GAE. Одна часть моего приложения основана на статических данных, которые в настоящее время хранятся в файле XML. Приложение считывает эти данные в коллекцию POJO. Данные отправляются клиенту с помощью GWT-RPC. Основываясь на выборках, сделанных пользователем, он применяет фильтры к коллекции для получения определенных объектов (фильтрация выполняется на стороне клиента).

Данные могут содержать до 3000 записей, а общий размер файла XML будет около 1 МБ. Не будет обновлений этих данных со стороны приложения (это только для чтения), но я могу часто добавлять новые записи или обновлять / исправлять существующие записи в течение первых нескольких месяцев (по мере развития приложения). Данные не связаны с другими данными в приложении.

Одно из моих главных соображений по производительности при загрузке. Я попытался использовать Apache Digester для анализа XML, но заметил, что даже анализ 600 записей и их отправка клиенту были немного медленными.

Учитывая эти требования, что из следующего будет лучше и почему: 1. Храните данные в файле XML или 2. Сохраняете данные в хранилище данных ядра приложения?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

Одной из альтернатив будет загрузка XML-файла напрямую с помощью GWT (без 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

Вот пример, объединяющий оба: http://www.roseindia.net/tutorials/gwt/retrieving-xml-data.shtml

Единственным недостатком является то, что вам нужно вручную анализировать XML через DOM, где GWT-RPC напрямую создает объекты.

Обновление:

основываясь на комментариях, я бы порекомендовал это:

  1. Анализ XML-файла с JAXB для создания ваших объектов: http://jaxb.java.net/guide/_XmlRootElement_and_unmarshalling.html

  2. Сохраните их в memcache: http://code.google.com/appengine/docs/java/memcache/overview.html

  3. По запросу RPC, проверьте memcache, если данные отсутствуют, перейдите к 1.

0 голосов
/ 06 мая 2011

Как я смотрю на вещи, есть две бутылочные горлышки, хотя и взаимосвязанные. Одним из них является загрузка данных (чтение из XML, анализ). Другой отправляет это клиенту. Вместо отправки всей связки, вы можете рассмотреть пакетную отправку, например, пагинацию.

Обычно я предпочитаю хранить такие файлы в WEB-INF.

...