Projektuję interfejs API REST dla trójwarstwowego systemu, takiego jak: Client application
-> Front-end API cloud server
-> user's home API server (Home)
.
Home
jest urządzeniem domowym i ma utrzymywać połączenie Front-end
przez Websocket lub długą ankietę (jest to pierwsze miejsce, w którym naruszamy REST. Później staje się jeszcze gorzej) . Front-end
głównie tuneluje Client
żądania Home
połączenia i obsługuje niektóre połączenia. Czasami Home
wysyła powiadomienia do Client
.
Front-end
i Home
mają w zasadzie ten sam interfejs API; Client
może łączyć się Home
bezpośrednio przez sieć LAN. W takim przypadku Home
musi zarejestrować niektóre Client
działania na Front-end
sobie.
Plusy dla REST w tym systemie to:
- REST jest czytelny dla człowieka;
- REST ma dobrze zdefiniowane odwzorowanie czasowników (takich jak CRUD), rzeczowników i kodów odpowiedzi na obiekty protokołu;
- Działa przez HTTP i przekazuje wszystkie możliwe proxy;
Kontrole REST to:
- Potrzebujemy nie tylko stylu komunikacji żądanie-odpowiedź, ale także subskrypcji publikowania;
- Kody błędów HTTP mogą być niewystarczające do obsługi błędów komunikacji trójwarstwowej;
Front-end
może powrócić202 Accepted
do jakiegoś wywołania asynchronicznego, aby dowiedzieć się, że konieczneHome
połączenie zostało zerwane i powinno być503
; Home
musi wysłać wiadomości doClient
.Client
będzie musiał odpytaćFront-end
lub utrzymać połączenie.
Rozważamy WAMP / Autobahn przez Websocket, aby uzyskać funkcjonalność publikowania / subskrybowania, kiedy uderzyło mnie, że już wygląda jak kolejka wiadomości.
Czy warto oceniać rodzaj kolejki przesyłania komunikatów jako transportu?
Wygląda na to, że kontrole kolejki wiadomości to:
- Będę musiał sam zdefiniować czasowniki CRUD i kody błędów na poziomie komunikatu.
- Przeczytałem coś o „wyższych kosztach utrzymania”, ale co to znaczy?
jak poważne są te względy?
@Jimmy Hoffa
ważny punkt, dzięki. Zgadza się, ale nie do końca. To wspólna baza danych, pamięć masowa i tak dalej. @Javier
dziękuję, to dobra część odpowiedzi.
@Mike Brown
dokładnie. Proszę zrób.