GWT RPC Альтернатива - PullRequest
       16

GWT RPC Альтернатива

2 голосов
/ 02 декабря 2011

У нас кошмар IE8 со службами RPC, возвращающими список с (более или менее) 60 объектами по 5 свойств в каждом. Хотя современные браузеры справляются со своей задачей, IE8 просто недостаточно отзывчив. Об этом даже есть открытый выпуск .

Мы планируем изменить RPC для служб, которым требуется отправлять большие списки объектов, но мы хотим изменить минимальный объем кода, возможный как на сервере, так и на клиенте.

Первый вопрос : Десериализация JSON будет работать быстрее в IE8 для этого сценария?

Мы любим простой сервис RPC. У нас есть наша реализация CustomRemoteService, наша реализация CustomAsyncCallback, наша реализация CustomRPCException и так далее. RF - это довольно большое изменение для нас.

Второй вопрос : Может ли использовать службу RPC, которая возвращает одну строку JSON, а затем десериализовать ее на стороне клиента, эту работу?

Или вы можете порекомендовать другой подход?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 03 декабря 2011

Первый вопрос : будет ли десериализация JSON работать быстрее в IE8 для этого сценария?

Это должно работать быстрее, потому что IE8 поддерживает нативныйРазбор JSON (а в IE6 и 7 вы можете использовать eval(), который все равно должен работать быстрее, чем разбор строки вручную )
Но это сильно зависит от того, что вы делаете с проанализированными объектами: есливы обрабатываете его, чтобы восстановить из него POJO, вы, вероятно, потеряете все преимущества JSON;Оверлеи JS, с другой стороны, имеют нулевые накладные расходы, но требуют изменения всех ваших массивов или списков, например, на JsArray s, а даты не могут быть легко закодированы в JSON, они требуют дополнительного маршаллинга / демаршаллинга.

Второй вопрос : Может ли использовать службу RPC, которая возвращает единственную строку JSON, а затем десериализовать ее на стороне клиента, эту работу?

Если обработка JSON является более легкойчем десериализация RPC, то да.Разбор ответа на стороне клиента - это простой eval() (да, странно, он не использует собственный JSON, когда он доступен), а затем ищет в разобранном объекте;что стоит больше всего при десериализации RPC, так это интерпретировать значения для реконструкции объектов;получение строки - это просто поиск в массиве, поэтому оно зависит от того, что вы будете делать с этой строкой позже.

1 голос
/ 03 декабря 2011

Я чувствую твою боль в IE8. У нас была такая же проблема. Наше решение состояло в том, чтобы сериализовать все на стороне клиента JSON, а затем отправить обратно только один объект JSON и обработать тяжелую работу на стороне сервера. IE8 все еще не справлялся с десериализацией так быстро, как мы надеялись, но он определенно ускорил процесс (примерно в три раза). Другим вариантом может быть ленивый вызов RPC, если это возможно в вашей ситуации.

Проблема в том, что IE8 является , а не идеальным браузером, если у вас есть значительное количество одновременных вызовов RPC. Надеюсь скоро увидеть эту ошибку.

...