Здесь мало мыслей.Во-первых, как я уже отмечал в похожих вопросах, сравнивать REST и RPC не имеет смысла.REST - это набор ограничений, которые могут быть наложены на интерфейс для достижения определенного набора целей, и интерфейсы RPC могут фактически быть RESTful.См. это сообщение в блоге для получения дополнительной информации.
Отвечая на вторую часть вашего вопроса, вы правы в том, что в пользовательском интерфейсе RPC клиент должен знать, какие методы он вызывает, какиеозначает, что API-изменения, вносящие изменения в представленные процедуры, усложняют развертывание новой версии службы (тогда как в интерфейсе RESTful все правовые действия обычно контролируются сервером).Сообщение в блоге, на которое я ссылался, также рассказывает об этом довольно подробно.
Один из подходов к одновременному развертыванию нескольких версий службы заключается в развертывании версий службы в производственном мультитенанте и отправке запросов вправильная версия сервиса на основе произвольных клиентских метаданных.Например, если ваша служба предоставляет веб-API RPC через сервлет, вы можете:
- Загружать несколько версий службы RPC рядом в Tomcat с Class Loader разделением.
- Пусть ваш клиент передаст некоторую контекстную информацию (например, в строке запроса) о ожидаемой версии службы RPC.
- Создайте Servlet Mapping , которая направляет кправильная версия вашей службы, основанная на параметре.
В большинстве сценариев клиент / сервер несколько версий клиента могут существовать в любое время в дикой природе, поэтому без сервера, контролирующего законные действия, лучшее решениеозначает параллельное выполнение нескольких версий на сервере, тогда как устаревшая версия клиента устарела.