Использование GWT-RPC против RequestFactory для передачи больших массивов - PullRequest
0 голосов
/ 22 августа 2011

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

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

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

1 Ответ

4 голосов
/ 23 августа 2011

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

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

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

EDIT:

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

...