Что вы используете для связи клиента с сервером с GWT? - PullRequest
7 голосов
/ 21 июля 2009

GWT RPC является проприетарным, но выглядит солидно, поддерживается шаблонами Google и упоминается в каждой книге и учебнике, которые я видел. Действительно ли это выбор для общения клиент / сервер GWT? Используете ли вы это, и если нет, то почему и что вы выбрали? Я предполагаю, что у меня есть общий код серверного приложения, который можно использовать для RPC, EJB, веб-сервисов / SOAP, REST и т. Д.

Бонусный вопрос: какие-либо проблемы с безопасностью GWT RPC, о которых мне нужно знать?

Ответы [ 2 ]

10 голосов
/ 21 июля 2009

Мы в основном используем три способа связи:

  1. GWT-RPC - Это наш основной и предпочтительный механизм, и то, что мы используем, когда это возможно. Это «способ GWT», и он работает очень хорошо.
  2. XMLHttpRequest с использованием RequestBuilder - Это обычно для взаимодействия с не-GWT бэкэндами, и мы используем это главным образом для извлечения статического веб-контента, который нам нужен во время выполнения (что-то вроде серверной части). Это особенно полезно, когда нам нужно интегрироваться с CMS. Мы помещаем наш код RequestBuilder в пользовательскую «панель» (которая принимает URI контента в качестве параметра конструктора и заполняет себя содержимым URI).
  3. Отправка формы с использованием FormPanel - Это также требует взаимодействия с не-GWT-сервером (пользовательский сервлет), и это то, что мы в настоящее время используем для связи между сайтами. Мы на самом деле не общаемся «между сайтами» как таковые, но нам иногда нужно отправлять данные по SSL на странице без SSL, и это единственный способ, которым мы смогли сделать это до сих пор (с некоторыми взломами ).
0 голосов
/ 21 июля 2009

Проблема в том, что вы используете веб-браузер, поэтому любой протокол, отличный от http, в значительной степени не гарантированно работает (может не пройти через прокси-сервер).

Что вы можете сделать, это изолировать GWT-RPC в одном сменном классе и удалить его как можно скорее.

Лично я бы просто полагался на передачу коллекции объектов с необходимой мне информацией, закодированной внутри коллекции - таким образом, очень мало RPC-кода, потому что весь ваш RPC-код когда-либо делает, это "Collection commands = getCollection ()" , но было бы миллион других возможностей.

Или просто используйте GWT-RPC, как это было задумано, я не думаю, что он пойдет куда-либо.

...