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).
Homelà một thiết bị gia đình và được cho là duy trì kết nối Front-endthô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-endchủ yếu là các đường hầm Clientyêu cầu Homekết nối và xử lý một số cuộc gọi. Đôi khi Homegửi thông báo đến Client.
Front-endvà Homevề cơ bản có cùng API; Clientcó thể được kết nối Hometrực tiếp, qua mạng LAN. Trong trường hợp này, Homecần phải đăng ký một số Clienthành động trên Front-endchí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-endcó thể quay lại202 Acceptedmột số cuộc gọi không đồng bộ chỉ để biết rằngHomekết nối cần thiết đã bị hỏng và đáng lẽ phải có503; Homecần gửi tin nhắn đếnClient.Clientsẽ phải bỏ phiếuFront-endhoặ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. @Javiercảm ơn bạn, đó là một phần tốt của một câu trả lời.
@Mike Brownchính xác. Vui lòng làm.