Использование GWT-RPC и RequestFactory для передачи больших массивов

Я создаю приложение, которое извлекает данные и анализирует их в объект двумерного массива перед отправкой обратно клиенту. Затем приложение использует данные для создания изображения на холсте HTML5. Массив содержит несколько тысяч записей, и когда я собирал приложение с помощью GWT-RPC, оно работало исправно, но передача массива клиенту занимала слишком много времени (несколько минут).

Я обнаружил эту проблему при поиске решений: http://code.google.com/p/google-web-toolkit/issues/detail?id=860

Последний ответ был получен пару месяцев назад, но, похоже, нет исчерпывающего ответа на лучший способ передачи больших массивов с сервера на клиент. Поскольку deRPC устарел (мне еще предстоит попробовать его использовать), является ли использование requestfactory единственным выбором? Вроде как requestFactory должен быть для доступа к БД, а не для выполнения вычислений и возврата больших результатов, и я не нашел примера, где делается запрос на вычисление и результат передается обратно. Должен ли я создать объект JSON вместо массива в моей текущей реализации и сохранить RPC, или я что-то упускаю, когда дело доходит до requestFactory?


person aelnaiem    schedule 22.08.2011    source источник


Ответы (1)


Проблема, на которую вы ссылаетесь, связана с медленной скоростью десериализации на клиенте, а не со скоростью передачи данных. Вы должны сначала измерить скорость передачи с помощью Firebug или аналогичного инструмента, а затем вычесть это время из общего времени вызова RPC, чтобы узнать, сколько времени тратится на десериализацию. Грубо говоря, расставание происходит так:

Общее время RPC = время, проведенное на сервере + время выхода из сети + время десериализации

Вы должны сначала выяснить, какая часть является реальным узким местом, если это окажется скоростью передачи данных, вам, вероятно, придется переосмыслить свой дизайн. См. мой ответ на соответствующий вопрос.

ИЗМЕНИТЬ:

ИМО, пока вы не рассчитали вышеуказанный разрыв во времени, вы должны отложить вопрос о том, подходит ли вам JSON или другой подход.

person Tahir Akhtar    schedule 23.08.2011