Sự khác biệt giữa XML-RPC và SOAP là gì?


81

Tôi chưa bao giờ thực sự hiểu tại sao một người triển khai dịch vụ web lại chọn cái này hơn cái kia. XML-RPC có thường được tìm thấy trong các hệ thống cũ hơn không? Bất kỳ trợ giúp nào trong việc hiểu điều này sẽ được đánh giá rất cao.

Câu trả lời:


88

Sự khác biệt?

SOAP mạnh hơn và được nhiều nhà cung cấp công cụ phần mềm ưa thích (MSFT .NET, phiên bản Java Enterprise, đại loại là vậy).

SOAP trong một thời gian dài (2001-2007) được coi là giao thức được lựa chọn cho SOA. xml-rpc không quá nhiều. REST là con cưng của SOA mới, mặc dù nó không phải là một giao thức.

SOAP dài dòng hơn, nhưng có khả năng hơn.

SOAP không được hỗ trợ trong một số nội dung cũ hơn. Ví dụ: không có lệnh SOAP nào cho ASP cổ điển (mà tôi có thể tìm thấy).

SOAP không được hỗ trợ tốt trong python. XML-RPC hỗ trợ rất tốt trong python, trong thư viện chuẩn.

SOAP hỗ trợ chuyển cấp độ tài liệu, trong khi xml-rpc thiên về truyền giá trị, mặc dù nó có thể chuyển các cấu trúc như cấu trúc, danh sách, v.v.

xm-rpc thực sự là về chương trình lập trình chuyển giao ngôn ngữ bất khả tri. Nó chủ yếu đi qua http / https. Thư SOAP cũng có thể được gửi qua email.

xml-rpc là unixy hơn. Nó cho phép bạn thực hiện mọi việc một cách đơn giản và khi bạn biết mình đang làm gì, sẽ rất nhanh chóng để triển khai các dịch vụ web chất lượng, ngay cả khi sử dụng trình soạn thảo văn bản đầu cuối. Làm SOAP theo cách đó là một sở thú; bạn thực sự cần một IDE tốt để làm cho nó khả thi.

Tuy nhiên, biết SOAP sẽ trông đẹp hơn nhiều trong sơ yếu lý lịch / CV của bạn nếu bạn đang cạnh tranh cho một công việc CNTT trong danh sách Fortune 500.

xml-rpc có một số vấn đề với bộ ký tự không phải ascii.

XML-RPC không hỗ trợ các tham số được đặt tên. Chúng phải đúng thứ tự. Không chắc chắn về SOAP, nhưng hãy nghĩ như vậy.


1
Đối với SOAP với Python, có gói ZSI. Nó khá tốt, nhưng bạn hoàn toàn cần một wsdl.
edomaur 18/10/08

2
Tôi tin rằng Bộ công cụ SOAP cũ có hỗ trợ cho "ASP cổ điển". Thêm vào đó, người ta có thể sử dụng ngôn ngữ .NET yêu thích của bạn để tạo thành phần COM bao bọc Tham chiếu dịch vụ, cho phép ASP Cổ điển sử dụng ngay cả một dịch vụ web hiện đại.
John Saunders

1
@edomaur Trong bọt thực tế là một lựa chọn tốt hơn vì nó là pythonic hơn, đơn giản hơn và dễ dàng hơn để sử dụng pypi.python.org/pypi/suds
ccpizza

14

Chỉ để thêm vào các câu trả lời khác, tôi khuyến khích bạn xem xét các biểu diễn văn bản thực tế của các cuộc gọi SOAP và XML-RPC, có lẽ bằng cách chụp một với Ethereal. Toàn bộ, đối số "XML-RPC đơn giản hơn" không có nhiều ý nghĩa cho đến khi bạn thấy một lệnh gọi SOAP dài đến mức nào. Nhiều trang web khá phổ biến hiện nay né tránh SOAP làm API của họ do chỉ lượng băng thông mà nó sẽ tiêu tốn nếu mọi người bắt đầu sử dụng rộng rãi.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.