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. Переглядаючи питання, я можу зробити закладку на цій сторінці або надіслати URL-адресу другові, і він може побачити ту саму інформацію. Щоб знайти це питання, йому не потрібно переходити через сайт.
StackOverflow використовує різні сервіси OpenId для аутентифікації, gravatar.com для зображень аватарів, google-analytics та Quantserve для аналітичної інформації. Така різнорівнева інтеграція компаній є типом речі, про який мріє світ SOAP . Одним з найкращих прикладів є той факт, що бібліотеки jQuery, які використовуються для керування інтерфейсом StackOverflow, отримують із мережі доставки вмісту Google. Те, що SO може направити клієнта (тобто вашого веб-браузера) на завантаження коду з сторонніх сайтів для підвищення продуктивності, свідчить про низьку зв’язок між веб-клієнтом та сервером.
Це приклади архітектури REST на роботі.
Зараз деякі веб-сайти / програми порушують правила REST, і тоді браузер не працює, як очікувалося.
- Сумнівна проблема з кнопкою повернення
викликана використанням стану сеансу на стороні сервера.
- Балансування навантаження може стати болем, коли у вас є стан сеансу на стороні сервера.
- Флеш-програми часто заважають URL-адресу конкретно ідентифікувати представлення.
- Інша проблема, яка порушує веб-браузери - це погана відповідність стандартам медіа-типу. Ми постійно чуємо про те, як потрібно вбити IE6. Проблема полягає в тому, що стандарти не дотримувалися належним чином або були ігноровані з будь-якої причини.
- Використання сеансів входу є джерелом багатьох пробілів у безпеці.
REST скрізь. Саме робота в Інтернеті змушує її добре працювати. Якщо ви хочете створити розповсюджені програми, які можуть масштабуватись як веб, будьте стійкі до змін, як Інтернет, та сприяти повторному використанню, як це робилося в Інтернеті, то дотримуйтесь тих самих правил, що і при створенні веб-браузерів.