Веб-сервис REST с клиентом Android и RPC - PullRequest
0 голосов
/ 18 января 2012

Мы все еще пытаемся выбрать между реализацией REST webservice и RPC. Плагин Googles eclipse позволяет очень легко создать службу RPC, которая является главной привлекательностью для способа RPC. Тем не менее, кажется, что услугу REST проще модифицировать, ИМХО, и она также позволит будущему клиенту iOS подключаться практически без переделки. Одна из проблем, с которой я столкнулся, и, возможно, это проблема с RPC, а также с любой моделью клиент-сервер, заключается в том, как вы модифицируете свою существующую службу и позволяете старым клиентам продолжать работать, одновременно позволяя новым клиентам использовать новые функции. Я имею в виду, можете ли вы указать мне на то, на что мы должны обращать внимание при изменении веб-службы, чтобы не сломать существующих клиентов и не заставить их выполнить обновление. Будем благодарны за любые ссылки, которые у вас есть, которые будут охватывать это

1 Ответ

0 голосов
/ 14 декабря 2012

Здесь мало мыслей.Во-первых, как я уже отмечал в похожих вопросах, сравнивать REST и RPC не имеет смысла.REST - это набор ограничений, которые могут быть наложены на интерфейс для достижения определенного набора целей, и интерфейсы RPC могут фактически быть RESTful.См. это сообщение в блоге для получения дополнительной информации.

Отвечая на вторую часть вашего вопроса, вы правы в том, что в пользовательском интерфейсе RPC клиент должен знать, какие методы он вызывает, какиеозначает, что API-изменения, вносящие изменения в представленные процедуры, усложняют развертывание новой версии службы (тогда как в интерфейсе RESTful все правовые действия обычно контролируются сервером).Сообщение в блоге, на которое я ссылался, также рассказывает об этом довольно подробно.

Один из подходов к одновременному развертыванию нескольких версий службы заключается в развертывании версий службы в производственном мультитенанте и отправке запросов вправильная версия сервиса на основе произвольных клиентских метаданных.Например, если ваша служба предоставляет веб-API RPC через сервлет, вы можете:

  1. Загружать несколько версий службы RPC рядом в Tomcat с Class Loader разделением.
  2. Пусть ваш клиент передаст некоторую контекстную информацию (например, в строке запроса) о ожидаемой версии службы RPC.
  3. Создайте Servlet Mapping , которая направляет кправильная версия вашей службы, основанная на параметре.

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

...