2010-02-18 30 views
15

Điều gì làm cho dịch vụ web Restful khác với các dịch vụ web khác như SOAP?Restful vs Other Web Services

+0

bản sao có thể có của [Tại sao chúng ta cần các dịch vụ web RESTful?] (Http://stackoverflow.com/questions/1368014/why-do-we-need-restful-web-services) – bummi

Trả lời

28

Cuộc tranh luận trên các dịch vụ web không có nghĩa là hoàn thành, nhưng có một số yếu tố nổi bật.

Dịch vụ web yên tĩnh là dịch vụ web 'gia đình'. Một số sẽ gọi nó là một kiến ​​trúc.

Dịch vụ web RESTful sử dụng giao thức HTTP để thực hiện các yêu cầu từ dịch vụ web. Họ sử dụng các động từ HTTP: GET, POST, PUT và DELETE (và những người khác, đôi khi). Bản thân yêu cầu là các URL đại diện cho các tài nguyên ... đôi khi các yêu cầu sẽ chứa dữ liệu trong cơ thể có thể bởi HTML, JSON, dữ liệu nhị phân hoặc các dữ liệu khác.

Dịch vụ web hoàn toàn RESTful chỉ yêu cầu URL và động từ HTTP mô tả hành động được yêu cầu ... dữ liệu cơ thể thường là trọng tải để tham gia vào hành động được yêu cầu ... không được yêu cầu hành động được yêu cầu

SOAP, mặt khác, thực sự là một giao thức. Nó thường được vận chuyển qua HTTP, nhưng yêu cầu HTTP chỉ là một phương thức để có được gói SOAP đến trình xử lý cần thiết. Nội dung của yêu cầu SOAP mô tả những gì khách hàng muốn thực hiện. Nó chứa tất cả các thông tin cần thiết.

Chúng là hai cách triển khai dịch vụ web rất khác nhau. Nếu bạn đặt câu hỏi "Cái nào tốt hơn" bạn có thể sẽ nhận được những ý kiến ​​mạnh mẽ từ cả hai phía. Tôi đề nghị bạn điều tra thêm và tạo nên tâm trí của riêng bạn.

12

A RESTful dịch vụ web (còn được gọi là API web RESTful) là một dịch vụ web đơn giản được triển khai bằng HTTP và nguyên tắc REST. Một dịch vụ web như vậy có thể được coi như một tập hợp các tài nguyên. Định nghĩa về một dịch vụ web như vậy có thể được coi như bao gồm ba khía cạnh:

  • Các cơ sở URI cho các dịch vụ web, chẳng hạn như http://example.com/resources/
  • Loại MIME của dữ liệu được hỗ trợ bởi dịch vụ web. Đây thường là JSON, XML hoặc YAML nhưng có thể là bất kỳ loại MIME hợp lệ nào khác.
  • Tập hợp các hoạt động được dịch vụ web hỗ trợ bằng phương pháp HTTP (ví dụ: POST, GET, PUT hoặc DELETE).

SOAP, ban đầu được định nghĩa là Giao thức truy cập đối tượng đơn giản, là đặc tả giao thức để trao đổi thông tin có cấu trúc trong việc triển khai dịch vụ web trong mạng máy tính. Nó dựa trên ngôn ngữ đánh dấu eXtensible (XML) như là định dạng tin nhắn của nó, và thường dựa trên các giao thức tầng ứng dụng khác (đáng chú ý nhất là gọi thủ tục từ xa (RPC) và HTTP) để đàm phán và truyền tải thông điệp. giao thức dựa trên XML này bao gồm ba phần:

  • một phong bì - trong đó xác định những gì là trong tin nhắn và làm thế nào để xử lý nó -
  • một bộ quy tắc mã hóa để thể hiện trường hợp của kiểu dữ liệu ứng dụng xác định trước,
  • và một quy ước đại diện cho các cuộc gọi thủ tục và phản hồi.

tham khảo:

Bằng cách này, một tìm kiếm google đơn giản có thể cung cấp câu trả lời cho bạn ...

+0

-1 chuyến đi nhanh đến wiki, eh. Tôi không chắc tôi cảm thấy thế nào về những câu trả lời của những người cắt dán. Thậm chí không có liên quan đến http://en.wikipedia.org/wiki/Representational_State_Transfer. Kinda làm cho thời gian tôi đã dành vô giá trị. –

+0

+2 để tham khảo. –

2

Dịch vụ RESTful tập trung vào tốc độ và sự đơn giản, loại bỏ chi phí của SOAP cho các giao dịch đơn giản mà nhiều dịch vụ web yêu cầu. Tuy nhiên, một dịch vụ được triển khai theo cách này rất đặc trưng cho HTTP và bạn sẽ gặp khó khăn trong việc sử dụng nó bên ngoài ngữ cảnh đó.

Dịch vụ SOAP cung cấp nhiều tính năng vượt trội hơn, quan trọng nhất (IMHO, tất nhiên) là khám phá. Khả năng thêm một tham chiếu đến một dịch vụ SOAP chỉ là về bất kỳ môi trường dev nào và nó tự động tạo ra một lớp proxy sẽ ẩn các phức tạp HTTP bên dưới, thậm chí đến điểm serializing các loại không tầm thường, rất, rất hữu ích.

Tôi cảm thấy rằng cả hai cách tiếp cận này để phát triển dịch vụ web đều có vị trí của chúng. Đối với các yêu cầu AJAX không yêu cầu bất cứ điều gì phức tạp, tôi có xu hướng thực hiện như một trình xử lý HTTP (ASP.NET). Bất cứ thứ gì cần được gọi từ một ứng dụng khác, hoặc từ nhiều nơi trong cùng một ứng dụng, tôi thực hiện như một dịch vụ SOAP vì gói đóng gói giao thức mà nó cung cấp, cũng như khả năng gọi sử dụng đối tượng bên dưới mà không có phí HTTP nơi nó có ý nghĩa.

4

Ok có rất nhiều kiến ​​thức trong Stack Overflow về chủ đề này.

Tôi nghĩ rằng bài viết hay nhất thể hiện tinh thần của REST và cách nó so sánh với các công nghệ như SOAP là How I explained REST to my wife.

Không giống như SOAP, REST không phải là tiêu chuẩn, nó là một cách tiếp cận tập trung xung quanh Tài nguyên và những thứ bạn có thể làm cho tài nguyên. Các động từ HTTP GET, POST, PUT và DELETE là các hành động điển hình mà bạn có thể áp dụng với bất kỳ tài nguyên nào. SOAP là một tiêu chuẩn bỏ qua các động từ này và đã phát minh ra một giao thức toàn diện hơn hoạt động trên đầu trang của HTTP POST phổ biến nhất cho khả năng tương tác tối đa. Hầu hết thời gian phức tạp thêm này là không cần thiết và một yêu cầu HTTP GET đơn giản cho một tài nguyên thường đủ cho những gì có thể là 1KB + của SOAP + XML để đạt được một kết quả tương đương.

Bạn cũng có thể xem Roy Fielding's blog (nhà phát minh của REST) ​​để biết thêm thông tin về ý nghĩa của nó.

+0

Liên kết Greeeeeat về lời giải thích của vợ, đánh dấu trang đó để chắc chắn! – jaywon

+0

Wow vì lời giải thích của vợ! Không thể tin được giống như upvotes. Đáng giá một triệu! – Achow

+2

Đáng buồn là nó không còn nữa, tác giả đã xóa nó đi. – Tanoh

1

1) REST đơn giản và dễ sử dụng hơn SOAP 2) REST sử dụng giao thức HTTP để sản xuất hoặc tiêu thụ các dịch vụ web trong khi SOAP sử dụng XML. 3) REST là nhẹ so với SOAP và sự lựa chọn ưa thích trong các thiết bị di động và PDA. 4) REST hỗ trợ các định dạng khác nhau như văn bản, JSON và XML trong khi SOAP chỉ hỗ trợ XML. 5) Cuộc gọi dịch vụ web REST có thể được lưu trong bộ nhớ cache để cải thiện hiệu suất.

Các vấn đề liên quan