Я розробляю API REST для трирівневої системи на зразок: Client application-> Front-end API cloud server-> user's home API server (Home).
Homeце домашній пристрій, і він повинен підтримувати зв’язок Front-endчерез Websocket або тривалий опитування (це перше місце, де ми порушуємо REST. Згодом стає ще гірше) . Front-endв основному тунелі Clientзапитують на Homeз'єднання та обробляють деякі дзвінки самі. Іноді Homeнадсилає сповіщення на адресу Client.
Front-endі Homeмають в основному той же API; Clientможливо підключення Homeбезпосередньо до локальної мережі. У цьому випадку Homeпотрібно зареєструвати деякі Clientдії на Front-endсебе.
Плюси для REST в цій системі:
- REST читається людиною;
- REST має чітко визначене відображення дієслів (наприклад, CRUD), іменників та кодів відповідей до об'єктів протоколу;
- Він працює через HTTP і передає всі можливі проксі;
Протипоказаннями REST є:
- Нам потрібен не лише стиль спілкування на відповідь на запит, але й публікація-підписка;
- Коди помилок HTTP можуть бути недостатніми для обробки трирівневих помилок зв'язку;
Front-endВи можете повернутися202 Acceptedдо якогось виклику асинхронізації лише для того, щоб дізнатись, що необхіднеHomeз'єднання розірвано і воно повинно було бути503; Homeпотрібно надсилати повідомленняClient.Clientдоведеться опитуватиFront-endабо підтримувати зв’язок.
Ми розглядаємо WAMP / Autobahn через Websocket, щоб отримати функцію публікації / підписки, коли мені здалося, що це вже схоже на чергу повідомлень.
Чи варто оцінювати якусь чергу повідомлень як транспорт?
Схоже, протилежні черги повідомлень:
- Мені потрібно визначити CRUD дієслова та коди помилок на рівні повідомлення.
- Я читав щось про "більш високу вартість обслуговування", але що це означає?
наскільки серйозні ці міркування?
@Jimmy Hoffaдійсний бал, спасибі Правильно, але не повністю. Це загальна база даних, сховище тощо. @Javierдякую, це хороша частина відповіді.
@Mike Brownточно. Будь ласка.