Các ứng dụng web trải qua một sự thay đổi mô hình tuyệt vời trong những năm qua.Giao tiếp thời gian thực dựa trên web có tương thích với mô hình REST không?
Một thập kỷ trước (và không may là ngày nay), các ứng dụng web chỉ sống ở các máy chủ nặng, xử lý mọi thứ từ dữ liệu sang định dạng bản trình bày và gửi cho khách hàng câm.
Sau đó, AJAX tham gia trò chơi và ứng dụng web bắt đầu biến thành thứ gì đó sống giữa máy chủ và trình duyệt.
Trong giai đoạn cao điểm của AJAX, logic ứng dụng web bắt đầu xuất hiện hoàn toàn trên trình duyệt. Tôi nghĩ rằng đây là khi HTTP RESTful API bắt đầu xuất hiện. Đột nhiên, mọi dịch vụ mới đều có các loại loại RESTful API của chúng tôi và các khung công tác JavaScript MV đột nhiên bắt đầu xuất hiện như bỏng ngô. Việc sử dụng các thiết bị di động cũng tăng lên rất nhiều và REST chỉ phù hợp với các loại kịch bản này. Tôi nói "loại RESTful" ở đây vì hầu như mọi API đều tuyên bố là REST, không phải. Nhưng đó là một câu chuyện hoàn toàn khác.
Thực tế, tôi đã trở thành một "nhà truyền giáo REST REST".
Khi tôi nghĩ rằng các ứng dụng web không thể phát triển nhiều hơn nữa, một kỷ nguyên mới có vẻ như đang diễn ra: Các ứng dụng web kết nối liên tục có trạng thái. Meteor là một ví dụ về khung làm việc tuyệt vời của loại ứng dụng đó. Sau đó, tôi thấy điều này video. Trong video này, Matt Debergalis nói về Meteor và cả hai đều làm một công việc tuyệt vời! Tuy nhiên, ông là loại đưa xuống API REST cho loại mục đích này ủng hộ các kết nối thời gian thực liên tục.
Tôi rất muốn có các bản cập nhật mô hình thời gian thực, ví dụ, nhưng vẫn có tất cả sự tuyệt vời của REST. Streaming API của API có vẻ như những gì tôi cần (ví dụ như firehose.io và Twitter), nhưng có rất ít thông tin về loại API mới này.
Vì vậy, câu hỏi của tôi là:
là giao tiếp thời gian thực dựa trên web không tương thích với REST mô?
(Xin lỗi vì sự văn bản giới thiệu dài, nhưng tôi nghĩ rằng câu hỏi này sẽ chỉ có ý nghĩa với một số ngữ cảnh)
REST cho chúng tôi biết rằng mỗi yêu cầu phải chứa tất cả thông tin cần thiết để máy chủ có thể không trạng thái và xử lý từng yêu cầu như nhau. Đây là tính đặc biệt quan trọng cho phép khả năng mở rộng trong các dịch vụ web REST. Không có phiên. Bạn có nghĩ rằng máy chủ vẫn có thể không trạng thái với các kết nối liên tục (ví dụ: websockets hoặc http long polling)? – miguelcobain
@miguelcobain, tôi nghĩ rằng hành động duy trì kết nối liên tục chính nó làm cho nó có trạng thái, ngay cả khi nó là hoàn toàn vì lý do hiệu suất để tránh thiết lập kết nối/teardown. Không quốc tịch đối với tôi có nghĩa là hoàn toàn không có trạng thái nào được duy trì khi phản hồi đã được gửi - không có ngoại lệ nào được cho phép. Với một kết nối liên tục, có thể có 'giữ liên tục' và các thông báo khác liên quan và máy chủ phải thực hiện một số việc giữ nhà như đóng kết nối được sử dụng ít nhất gần đây, tất cả đều không được mong đợi của máy chủ không trạng thái. Ngoài ra, máy chủ có hiệu lực trạng thái nếu chúng dựa vào cookie. –