Cả SOAP ( Giao thức truy cập đối tượng đơn giản ) và REST ( Chuyển trạng thái đại diện ) đều đẹp theo cách của chúng. Vì vậy, tôi không so sánh chúng. Thay vào đó, tôi đang cố gắng miêu tả bức tranh, khi tôi thích sử dụng REST và khi SOAP.
Tải trọng là gì?
Khi dữ liệu được gửi qua Internet, mỗi đơn vị được truyền bao gồm cả thông tin tiêu đề và dữ liệu thực tế được gửi. Tiêu đề xác định nguồn và đích của gói, trong khi dữ liệu thực tế được gọi là tải trọng . Nói chung, tải trọng là dữ liệu được mang thay mặt cho một ứng dụng và dữ liệu được nhận bởi hệ thống đích.
Bây giờ, ví dụ, tôi phải gửi một Telegram và tất cả chúng ta đều biết rằng chi phí của telegram sẽ phụ thuộc vào một số từ.
Vì vậy, hãy cho tôi biết trong số dưới đây đã đề cập đến hai tin nhắn này, cái nào rẻ hơn để gửi?
<name>Arin</name>
hoặc là
"name": "Arin"
Tôi biết câu trả lời của bạn sẽ là câu thứ hai mặc dù cả hai đại diện cho cùng một thông điệp thứ hai rẻ hơn về chi phí.
Vì vậy, tôi đang cố gắng nói rằng, gửi dữ liệu qua mạng ở định dạng JSON rẻ hơn so với gửi dữ liệu ở định dạng XML liên quan đến tải trọng .
Đây là lợi ích hoặc lợi thế đầu tiên của REST so với SOAP . SOAP chỉ hỗ trợ XML, nhưng REST hỗ trợ các định dạng khác nhau như văn bản, JSON, XML, v.v. Và chúng tôi đã biết, nếu chúng tôi sử dụng Json thì chắc chắn chúng tôi sẽ ở vị trí tốt hơn về tải trọng.
Bây giờ, SOAP hỗ trợ XML duy nhất, nhưng nó cũng có những ưu điểm của nó.
Có thật không! Làm sao?
SOAP dựa trên XML theo ba cách Phong bì - định nghĩa những gì trong thông báo và cách xử lý nó.
Một tập hợp các quy tắc mã hóa cho các loại dữ liệu và cuối cùng là cách bố trí các cuộc gọi và phản hồi thủ tục được thu thập.
Phong bì này được gửi qua một phương tiện giao thông (HTTP / HTTPS) và RPC (Cuộc gọi thủ tục từ xa) được thực thi và phong bì được trả về với thông tin trong tài liệu được định dạng XML.
Điểm quan trọng là một trong những lợi thế của SOAP là việc sử dụng phương thức vận chuyển chung chung của REST nhưng REST sử dụng HTTP / HTTPS . SOAP có thể sử dụng hầu hết mọi phương tiện vận chuyển để gửi yêu cầu nhưng REST không thể. Vì vậy, ở đây chúng tôi có một lợi thế của việc sử dụng SOAP.
Như tôi đã đề cập ở đoạn trên, REST REST sử dụng HTTP / HTTPS , vì vậy hãy đi sâu hơn một chút về những từ này.
Khi chúng ta đang nói về REST qua HTTP, tất cả các biện pháp bảo mật được áp dụng HTTP đều được kế thừa và điều này được gọi là bảo mật cấp độ vận chuyển và nó chỉ bảo mật các tin nhắn khi nó ở trong dây nhưng một khi bạn đã gửi nó ở phía bên kia thì bạn không biết nó sẽ phải trải qua bao nhiêu giai đoạn trước khi đạt đến điểm thực sự nơi dữ liệu sẽ được xử lý. Và tất nhiên, tất cả các giai đoạn đó có thể sử dụng một cái gì đó khác với HTTP. Vì vậy, nghỉ ngơi không an toàn hơn hoàn toàn, phải không?
Nhưng SOAP hỗ trợ SSL giống như REST, nó cũng hỗ trợ WS-Security , bổ sung một số tính năng bảo mật doanh nghiệp. WS-Security cung cấp bảo vệ khỏi việc tạo thông điệp đến mức tiêu thụ của nó . Vì vậy, đối với bảo mật cấp độ vận chuyển, bất kỳ kẽ hở nào chúng tôi thấy có thể được ngăn chặn bằng WS-Security.
Ngoài ra, do REST bị giới hạn bởi giao thức HTTP nên hỗ trợ giao dịch không tuân thủ ACID cũng như không thể cung cấp cam kết hai pha trên các tài nguyên xuyên quốc gia phân tán.
Nhưng SOAP có hỗ trợ toàn diện cho cả quản lý giao dịch dựa trên ACID cho các giao dịch ngắn hạn và quản lý giao dịch dựa trên bồi thường cho các giao dịch dài hạn. Nó cũng hỗ trợ cam kết hai pha trên các tài nguyên phân tán .
Tôi không rút ra bất kỳ kết luận nào, nhưng tôi sẽ thích dịch vụ web dựa trên SOAP trong khi bảo mật, giao dịch, v.v. là những mối quan tâm chính.
Dưới đây là "Hướng dẫn Java EE 6" nơi họ đã nói Thiết kế RESTful có thể phù hợp khi các điều kiện sau được đáp ứng . Có một cái nhìn.
Hy vọng bạn thích đọc câu trả lời của tôi.