Tôi đang thiết kế API REST cho hệ thống ba lớp như: Client application
-> Front-end API cloud server
-> user's home API server (Home)
.
Home
là một thiết bị gia đình và được cho là duy trì kết nối Front-end
thông qua Websocket hoặc một cuộc thăm dò dài (đây là nơi đầu tiên chúng tôi vi phạm REST. Nó thậm chí còn tồi tệ hơn về sau) . Front-end
chủ yếu là các đường hầm Client
yêu cầu Home
kết nối và xử lý một số cuộc gọi. Đôi khi Home
gửi thông báo đến Client
.
Front-end
và Home
về cơ bản có cùng API; Client
có thể được kết nối Home
trực tiếp, qua mạng LAN. Trong trường hợp này, Home
cần phải đăng ký một số Client
hành động trên Front-end
chính nó.
Ưu điểm cho REST trong hệ thống này là:
- REST là con người có thể đọc được;
- REST có một ánh xạ được xác định rõ các động từ (như CRUD), danh từ và mã phản hồi cho các đối tượng giao thức;
- Nó hoạt động trên HTTP và vượt qua tất cả các proxy có thể;
Các phương thức REST là:
- Chúng tôi không chỉ cần một phong cách giao tiếp đáp ứng yêu cầu, mà còn cần một đăng ký xuất bản;
- Mã lỗi HTTP có thể không đủ để xử lý lỗi giao tiếp ba lớp;
Front-end
có thể quay lại202 Accepted
một số cuộc gọi không đồng bộ chỉ để biết rằngHome
kết nối cần thiết đã bị hỏng và đáng lẽ phải có503
; Home
cần gửi tin nhắn đếnClient
.Client
sẽ phải bỏ phiếuFront-end
hoặc để duy trì kết nối.
Chúng tôi đang xem xét WAMP / Autobahn qua Websocket để có được chức năng xuất bản / đăng ký, khi tôi nhận ra rằng nó trông giống như một hàng đợi tin nhắn.
Có đáng để đánh giá một loại hàng đợi nhắn tin như một phương tiện giao thông không?
Có vẻ như các hàng đợi tin nhắn là:
- Tôi sẽ cần tự xác định động từ CRUD và mã lỗi ở cấp độ tin nhắn.
- Tôi đã đọc một cái gì đó về "chi phí bảo trì cao hơn", nhưng nó có nghĩa là gì?
Những cân nhắc này nghiêm trọng như thế nào?
@Jimmy Hoffa
điểm hợp lệ, cảm ơn. Điều đó đúng, nhưng không hoàn toàn. Đó là một cơ sở dữ liệu chung, lưu trữ và như vậy. @Javier
cảm ơn bạn, đó là một phần tốt của một câu trả lời.
@Mike Brown
chính xác. Vui lòng làm.