REST следует использовать, если для вас очень важно минимизировать взаимосвязь между клиентскими и серверными компонентами в распределенном приложении.
Это может произойти, если ваш сервер будет использоваться множеством разных клиентов, над которыми вы не можете контролировать. Это также может иметь место, если вы хотите иметь возможность регулярно обновлять сервер без необходимости обновлять клиентское программное обеспечение.
Могу заверить вас, что добиться такого низкого уровня связи непросто . Для успеха крайне важно соблюдать все ограничения REST. Поддерживать соединение без гражданства сложно. Выбрать правильные медиа-типы и сжать данные в форматах непросто. Создание собственных типов мультимедиа может быть еще сложнее.
Адаптация разнообразного поведения сервера к единому HTTP-интерфейсу может сбивать с толку и иногда кажется педантичной по сравнению с относительно простым подходом RPC.
Несмотря на трудности, преимущества заключаются в том, что у вас есть сервис, который разработчик клиента должен легко понять благодаря последовательному использованию протокола HTTP. Служба должна легко обнаруживаться благодаря гипермедиа, а клиент должен быть чрезвычайно устойчивым к изменениям на сервере .
Преимущества гипермедиа и избежание состояния сеанса делают балансировку нагрузки простой и возможность разделения служб . Строгое соответствие правилам HTTP делает доступность таких инструментов, как отладчики и прокси-серверы кэширования замечательной вещью.
Обновить
Мне кажется, что REST - это еще одно «последнее слово моды» (или я могу ошибаться, потому что никогда не видел REST на практике).
Я думаю, что REST стал модным, потому что люди, пытающиеся реализовать проекты типа SOA, обнаружили, что, используя стек SOAP, они не осознают обещанных преимуществ. Люди продолжают возвращаться к Интернету как к примеру простых методологий интеграции. К сожалению, я думаю, что люди недооценивают объем планирования и предвидения, которые потребовались для создания сети, и слишком упрощают то, что необходимо сделать, чтобы позволить случайное повторное использование, которое действительно происходит в сети.
Вы говорите, что никогда не видели REST на практике, но это не может быть правдой, если вы когда-либо использовали веб-браузер. Веб-браузер - это клиент REST.
- Почему вам не нужно обновлять браузер, когда кто-то меняет какой-то html на веб-сайте?
- Почему я могу добавить полный новый набор страниц на веб-сайт, а «клиент» все еще может получить доступ к этим новым страницам без обновления?
- Почему мне не нужно предоставлять "язык-описания-службы" веб-браузеру, чтобы сообщать ему, когда он переходит на http://example.org/images/cat, что возвращаемым типом будет изображение jpeg, а когда вы перейдете для
http://example.org/description/cat
возвращаемый тип будет text / html?
- Почему я могу использовать веб-браузер для посещения сайтов, которые не существовали на момент выпуска браузера? Как клиент может узнать об этих сайтах?
Это могут показаться глупыми вопросами, но если вы знаете ответ, то можете начать понимать, что такое REST. Посмотрите на StackOverflow, чтобы узнать больше о преимуществах REST. Когда я просматриваю вопрос, я могу добавить эту страницу в закладки или отправить ссылку другу, и он увидит ту же информацию. Ему не нужно перемещаться по сайту, чтобы найти этот вопрос.
StackOverflow использует различные службы OpenId для аутентификации, gravatar.com для изображений аватаров, google-analytics и Quantserve для аналитической информации. Такой вид интеграции нескольких компаний - это то, о чем мир SOAP только мечтает . Одним из лучших примеров является тот факт, что библиотеки jQuery, которые используются для управления пользовательским интерфейсом StackOverflow, извлекаются из сети доставки контента Google. Тот факт, что SO может направить клиента (например, ваш веб-браузер) на загрузку кода со стороннего сайта для повышения производительности, свидетельствует о слабой связи между веб-клиентом и сервером.
Это примеры работы архитектуры REST.
Теперь некоторые веб-сайты / приложения нарушают правила REST, и тогда браузер не работает должным образом.
- Печально известная проблема с кнопкой «Назад»
вызвана использованием состояния сеанса на стороне сервера.
- Балансировка нагрузки может стать проблемой, когда у вас есть состояние сеанса на стороне сервера.
- Flash-приложения часто не позволяют URL-адресу конкретно идентифицировать представление.
- Другая проблема, которая ломает веб-браузеры, - это плохое соответствие стандартам мультимедийного типа. Мы все время слышим о том, как нужно убить IE6. Проблема в том, что стандарты не соблюдались должным образом или игнорировались по какой-либо причине.
- Использование сеансов входа в систему является источником многих дыр в безопасности.
ОТДЫХ везде. Это часть сети, которая заставляет его работать хорошо. Если вы хотите создавать распределенные приложения, которые могут масштабироваться, как Интернет, быть устойчивыми к изменениям, как Интернет, и способствовать повторному использованию, как это сделал Интернет, то следуйте тем же правилам, что и при создании веб-браузеров.