Client application
-> Front-end API cloud server
-> 와 같은 3 계층 시스템을위한 REST API를 설계하고 user's home API server (Home)
있습니다.
Home
는 가정용 기기이며 Front-end
Websocket 또는 긴 설문 조사 를 통해 연결을 유지해야합니다 (이것은 우리가 REST를 위반하는 첫 번째 장소입니다. 나중에 더 악화됩니다) . Front-end
대부분 연결 Client
요청을 터널링 Home
하고 일부 호출 자체를 처리합니다. 때때로에 Home
알림을 보냅니다 Client
.
Front-end
와 Home
기본적으로 동일한 API를 가지고; LAN을 통해 직접 Client
연결되었을 수 있습니다 Home
. 이 경우 자체 에 Home
일부 Client
작업 을 등록해야 Front-end
합니다.
이 시스템에서 REST의 장점은 다음과 같습니다.
- REST는 사람이 읽을 수 있습니다.
- REST에는 CRUD와 같은 동사, 명사 및 응답 코드가 프로토콜 오브젝트에 올바르게 정의되어 있습니다.
- HTTP를 통해 작동하며 가능한 모든 프록시를 전달합니다.
REST 대조는 다음과 같습니다.
- 요청-응답 커뮤니케이션 스타일뿐만 아니라 발행-구독도 필요합니다.
- 3 계층 통신 오류를 처리하기에는 HTTP 오류 코드가 충분하지 않을 수 있습니다. 필요한 연결이 끊어 졌어 야한다는 것을 알기 위해 비동기 호출로
Front-end
돌아갈 수 있습니다 .202 Accepted
Home
503
Home
에 메시지를 보내야합니다Client
.Client
폴링Front-end
하거나 연결을 유지해야합니다.
Websocket을 통한 WAMP / Autobahn 을 고려 하여 발행 / 구독 기능을 얻을 수 있습니다. 이미 메시지 대기열처럼 보입니다.
일종의 메시징 큐를 전송으로 평가할 가치가 있습니까?
메시지 대기열 대조는 다음과 같습니다.
- 메시지 수준에서 CRUD 동사와 오류 코드를 직접 정의해야합니다.
- "높은 유지 보수 비용"에 대한 내용을 읽었지만 그 의미는 무엇입니까?
이러한 고려 사항은 얼마나 심각합니까?
@Jimmy Hoffa
유효한 포인트, 감사합니다. 맞습니다 만 완전히는 아닙니다. 일반적인 데이터베이스, 스토리지 등입니다. @Javier
감사합니다. 대답의 좋은 부분입니다.
@Mike Brown
바로 그거죠. 제발.