Я розробляю 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
точно. Будь ласка.