Trả lời câu hỏi 2012 được làm mới (bằng tiền thưởng thứ hai) và xem xét kết quả ngày hôm nay (các câu trả lời khác).
SOAP, ưu và nhược điểm
Về SOAP 1.2, ưu điểm và nhược điểm khi so sánh với "REST" ... Chà, kể từ năm 2007,
bạn có thể mô tả các dịch vụ Web REST bằng WSDL và sử dụng giao thức SOAP ... Đó là, nếu bạn làm việc chăm chỉ hơn một chút, tất cả các tiêu chuẩn W3C của ngăn xếp giao thức dịch vụ web có thể là REST !
Đó là một điểm khởi đầu tốt, bởi vì chúng ta có thể tưởng tượng ra một kịch bản trong đó tất cả các cuộc thảo luận triết học và phương pháp học tạm thời được tránh. Chúng tôi có thể so sánh về mặt kỹ thuật "SOAP-REST" với "NON-SOAP-REST" trong các dịch vụ tương tự,
SOAP-REST (= "REST-SOAP"): như được hiển thị bởi L.Mandel , WSDL2 có thể mô tả một dịch vụ web REST và, nếu chúng tôi cho rằng XML được minh họa có thể được bao bọc trong SOAP, tất cả việc triển khai sẽ là "SOAP-REST" .
NON-SOAP-REST : bất kỳ dịch vụ web REST nào không thể là SOAP ... Đó là, "90%" của các ví dụ REST nổi tiếng. Một số không sử dụng XML (ví dụ, các AJAX REST điển hình sử dụng JSON thay thế), một số sử dụng các cấu trúc XML khác, không có các tiêu đề hoặc quy tắc SOAP. PS: để tránh sự không chính thức, chúng ta có thể giả sử REST cấp 2 trong các so sánh.
Tất nhiên, để so sánh một cách khái niệm hơn, hãy so sánh "NON-REST-SOAP" với "NON-SOAP-REST", như các phương pháp mô hình hóa khác nhau. Vì vậy, hoàn thành phân loại dịch vụ web này:
NON-REST-SOAP : bất kỳ dịch vụ web SOAP nào không thể là REST ... Đó là, "90%" trong số các ví dụ SOAP được biết đến.
NON-REST-NEITHER-SOAP : vâng, vũ trụ của "mô hình hóa dịch vụ web" bao gồm những thứ khác (ví dụ: XML-RPC ).
SOAP trong các điều kiện REST
So sánh những thứ có thể so sánh: SOAP-REST với NON-SOAP-REST .
PROS
Giải thích một số điều khoản,
Ổn định hợp đồng : cho tất cả các loại hợp đồng (như "thỏa thuận bằng văn bản"),
Bằng cách sử dụng các tiêu chuẩn : tất cả các cấp của ngăn xếp W3C đều tuân thủ lẫn nhau. Mặt khác, REST không phải là tiêu chuẩn W3C hoặc ISO và không có chi tiết được chuẩn hóa về các thiết bị ngoại vi của dịch vụ. Vì vậy, như tôi , @DaveWoldrich (20 phiếu), @cynicalman (5), @Exitos (0) đã nói trước đây, trong bối cảnh CẦN PHẢI TIÊU CHUẨN, bạn cần SOAP.
Bằng cách sử dụng các thực tiễn tốt nhất : "khía cạnh dài dòng" của việc triển khai ngăn xếp W3C , dịch các thỏa thuận về con người / pháp lý / pháp lý có liên quan.
Tính mạnh mẽ : sự an toàn của cấu trúc và tiêu đề SOAP. Với giao tiếp metada (với tính biểu cảm đầy đủ của XML) và xác minh, bạn có "chính sách bảo hiểm" chống lại mọi thay đổi hoặc tiếng ồn.
SOAP có "độ tin cậy giao dịch (...) đối phó với các lỗi giao tiếp. SOAP có nhiều kiểm soát hơn xung quanh logic thử lại và do đó có thể cung cấp độ tin cậy đầu cuối và đảm bảo dịch vụ nhiều hơn", E. Terman .
Sắp xếp ưu điểm theo mức độ phổ biến,
Các công cụ tốt hơn (~ 70 phiếu): SOAP hiện có lợi thế của các công cụ tốt hơn, kể từ năm 2007 và vẫn là năm 2012, vì đây là một tiêu chuẩn được xác định rõ và được chấp nhận rộng rãi. Xem @MarkCidade (27 phiếu), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Tuân thủ tiêu chuẩn (25 phiếu): như tôi , @DaveWoldrich (20 phiếu), @cynicalman (5), @Exitos (0) đã nói trước đây, trong bối cảnh CẦN PHẢI TIÊU CHUẨN, bạn cần SOAP.
Tính mạnh mẽ : bảo hiểm của các tiêu đề SOAP, @JohnSaunders (8 phiếu).
TIÊU DÙNG
Cấu trúc SOAP phức tạp hơn (hơn 300 phiếu): tất cả các câu trả lời ở đây và các nguồn về "SOAP vs REST", biểu hiện một số mức độ không thích với sự dư thừa và phức tạp của SOAP. Đây là kết quả tự nhiên của các yêu cầu đối với xác minh chính thức (xem bên dưới) và cho sự mạnh mẽ (xem ở trên). "REST NON-SOAP" (và XML-RPC, người khởi tạo SOAP ) có thể đơn giản và không chính thức hơn.
Hạn chế "chỉ XML" là một trở ngại về hiệu suất khi sử dụng các dịch vụ nhỏ (~ 50 phiếu): xem json.org/xml và câu hỏi này hoặc câu hỏi khác . Điểm này được thể hiện bởi @toluju (41) và những người khác.
PS: vì JSON không phải là tiêu chuẩn IETF , nhưng chúng ta có thể xem xét một tiêu chuẩn thực tế cho cộng đồng phần mềm web.
Dịch vụ lập mô hình với SOAP
Bây giờ, chúng ta có thể thêm SOAP-NON-REST bằng các so sánh NON-SOAP-REST và giải thích khi nào nên sử dụng SOAP :
Cần các tiêu chuẩn và hợp đồng ổn định (xem phần "PROS"). PS: xem "Nhu cầu B2B tiêu chuẩn" được mô tả bởi @saille .
Cần cho các công cụ (xem phần "PROS"). PS: tiêu chuẩn và sự tồn tại của xác minh chính thức (xem dưới đây), là những vấn đề quan trọng đối với tự động hóa công cụ.
Xử lý song song nặng (xem phần "Bối cảnh / Cơ sở" bên dưới): với các quy trình lớn hơn và / hoặc chậm hơn, bất kể phức tạp hơn một chút về SOAP, độ tin cậy và ổn định là những khoản đầu tư tốt nhất.
Cần bảo mật hơn : khi cần nhiều hơn HTTPS và bạn thực sự cần các tính năng bổ sung để bảo vệ, SOAP là lựa chọn tốt hơn ( xem @Bell , 32 phiếu). "Gửi tin nhắn dọc theo một đường dẫn phức tạp hơn yêu cầu / phản hồi hoặc qua một phương tiện giao thông không liên quan đến HTTP", S. Seely . XML là một vấn đề cốt lõi, cung cấp các tiêu chuẩn cho XML Encryption , XML Chữ ký , và XML Canonicalization , và, chỉ với SOAP bạn có thể nhúng các cơ chế này vào một tin nhắn bằng một tiêu chuẩn được chấp nhận như WS-Security .
Cần linh hoạt hơn (ít hạn chế hơn): SOAP không cần sự tương ứng chính xác với URI; không giới hạn cho HTTP; không cần giới hạn ở 4 động từ. Như @TravisHeseman (9 phiếu) nói, nếu bạn muốn một cái gì đó "linh hoạt cho một số lượng công nghệ và sử dụng khách hàng tùy ý", hãy sử dụng SOAP.
PS: hãy nhớ rằng XML phổ quát / biểu cảm hơn JSON (et al).
Cần xác minh chính thức : quan trọng để hiểu rằng ngăn xếp W3C sử dụng các phương thức chính thức và REST là không chính thức. Mô tả dịch vụ WSDL ( ngôn ngữ chính thức ) của bạn là một đặc điểm kỹ thuật chính thức của các giao diện dịch vụ web của bạn và SOAP là một giao thức mạnh mẽ chấp nhận tất cả các đơn thuốc WSDL có thể.
BỐI CẢNH
Lịch sử
Để đánh giá xu hướng là quan điểm lịch sử cần thiết. Đối với chủ đề này, viễn cảnh 10 hoặc 15 năm ...
Trước khi tiêu chuẩn hóa W3C, có một số tình trạng hỗn loạn. Rất khó để thực hiện các dịch vụ có thể tương tác với các khung khác nhau và khó khăn hơn, tốn kém và mất thời gian hơn để thực hiện một cái gì đó có thể tương tác giữa các công ty. Các tiêu chuẩn ngăn xếp W3C là một ánh sáng, một hướng bắc cho sự tương tác của các bộ dịch vụ web phức tạp.
Đối với các nhiệm vụ hàng ngày, muốn triển khai AJAX, SOAP rất nặng ... Vì vậy, nhu cầu về các phương pháp đơn giản cần phải chọn một khung lý thuyết mới ... Và các "trình phát phần mềm Web" lớn, như Google, Amazon, Yahoo, et al, đã bầu ra phương án tốt nhất, đó là phương pháp REST. Có phải trong bối cảnh này, khái niệm REST đã xuất hiện như một "khung cạnh tranh" và, ngày nay (2012), sự thay thế này là một tiêu chuẩn thực tế cho các lập trình viên.
Nền móng
Trong ngữ cảnh Tính toán song song , các dịch vụ web cung cấp các nhiệm vụ song song; và các giao thức, như SOAP, đảm bảo đồng bộ hóa và giao tiếp tốt. Không phải "bất kỳ nhiệm vụ" nào: các dịch vụ web có thể được phân loại là
song song thô và lúng túng .
Khi nhiệm vụ trở nên lớn hơn, nó trở nên ít "tranh luận phức tạp" hơn, và trở nên phù hợp hơn với sự mạnh mẽ của giao tiếp và sự vững chắc của các hợp đồng.