2009-09-18 52 views
55

Sự khác biệt giữa REST và WebService (SOAP) là gì, tôi sử dụng tiêu đề HTTP và một số tham số (có thể là xml hoặc không) và trả về kết quả trong xml. cùng, tiêu đề HTTP + tham số xml và trả về tiêu đề + xml.Sự khác nhau giữa REST và WebServices

REST cũng yêu cầu một số mã thông báo được xác thực trong đó SOAP khác sử dụng phiên http giống hệt mã thông báo được sử dụng cho auth và thông tin khác. Tất cả tôi có thể thấy rằng SOAP là phiên bản nâng cao của REST?

Hoặc có bất kỳ cân nhắc hiệu suất nào khác không? Đọc về REST chỉ nói mức độ rất cao của giao tiếp máy chủ khách hàng nhưng ngay cả SOAP cũng chính xác như vậy. Bất cứ ai có thể chỉ cho tôi nơi nó có thể xác định ràng buộc chính xác của REST và SOAP.

Chúng tôi sử dụng rất nhiều SOAP trong suốt .net, tuy nhiên tôi chỉ muốn biết là nó thực sự đáng để trả tiền cho REST, nơi hiện tại mọi thứ đang chạy trơn tru.

Tôi biết REST là một kiến ​​trúc và SOAP là một giao thức nhưng câu hỏi của tôi là chi tiết hiện tại việc triển khai ASP.NET WebService của SOAP có kiến ​​trúc REST?

+0

Có khả năng trùng lặp về điều này - REST vs SOAP có vẻ là một câu hỏi phổ biến (thông qua @John Saunders, điểm tốt nhưng quay lại vì nhận xét đã được thực hiện trong bản chỉnh sửa). Trong khi chủ đề được nhân đôi, tôi nghĩ câu hỏi này sẽ xuất hiện trên các tìm kiếm mà những người khác sẽ không, vì vậy câu hỏi sẽ vẫn mở. – Keith

Trả lời

67

SOAP là giao thức để gửi/nhận dữ liệu qua HTTP dưới dạng XML.

WebService điển hình sẽ là một vài phương pháp mà WSDL mô tả cách gọi nó. Không có quy ước thực sự nào về cách chúng được cấu trúc, vì vậy bạn luôn cần rất nhiều tài liệu API.

Thông thường điều này sẽ là một cái gì đó tương tự (ví ASP.NET):

  • HTTP POST-mysite.com/products.asmx/ListAllProducts - lợi nhuận danh sách XML của sản phẩm
  • HTTP POST-mysite.com/products.asmx/GetProduct - trả về XML cho sản phẩm dựa trên XML SOAP trong nội dung đã đăng
  • HTTP POST đến mysite.com/products.asmx/UpdatePr oduct - thay đổi sản phẩm dựa trên SOAP XML trong nội dung được đăng

Văn là hơn một quy ước để cơ cấu lại tất cả các phương pháp của bạn:

  • HTTP GET từ mysite.com/products - lợi nhuận XML hoặc JSON liệt kê tất cả các sản phẩm
  • HTTP GET từ mysite.com/products/14 - trả về XML hoặc JSON cho sản phẩm 14
  • HTTP POST đến mysite.com/products/14 - thay đổi sản phẩm 14 thành những gì bạn đăng trong biểu mẫu HTML.
  • HTTP DELETE-mysite.com/products/14 - loại bỏ sản phẩm 14
  • HTTP PUT-mysite.com/products - thêm sản phẩm mới

Vì vậy, REST hoạt động giống như bạn mong muốn URL trình duyệt. Theo cách đó, nó tự nhiên hơn và như một quy ước dễ hiểu hơn nhiều. Tất cả các API REST hoạt động theo cách tương tự, do đó bạn không mất nhiều thời gian để tìm hiểu các quirks của từng hệ thống.

+0

Ok vì vậy REST thực hiện mọi thứ hoàn toàn trên HTTP, nơi dịch vụ Web khác hoàn toàn dựa trên SOAP, trên Dịch vụ Web, bạn cần thêm các công cụ bổ sung cho SOAP Marshelling đúng không? Cảm ơn bạn. –

+6

Về DELETE và PUT, vì REST chủ yếu dành cho các máy nói chuyện với nhau, không có quyền truy cập vào các động từ đó từ trình duyệt có thể không quan trọng. Tôi nghĩ rằng điều quan trọng là nêu rõ trọng tâm của các động từ cho REST, trong khi SOAP đặt các lệnh thực tế vào yêu cầu, thay vì loại yêu cầu. – ShiDoiSi

+1

@ vs - điểm tốt. @Akash Kava - không hoàn toàn, vì SOAP cũng đã qua HTTP. Bạn có thể gọi một trong hai cơ chế trong Javascript từ một trang web đơn giản. Điều quan trọng về REST là sử dụng quy ước của các động từ HTTP (GET, POST, vv) thay vì gọi các tên phương thức được đọc từ WSDL – Keith

13

Đối với tôi, một dịch vụ được triển khai bằng cách sử dụng phương pháp RESTful giành chiến thắng trên một dịch vụ sử dụng SOAP hoặc RPC về khả năng truy cập của nó. Trong một hệ thống tương đối khép kín, nơi có công cụ để tạo ra các nhánh và các mối quan hệ dựa trên một WSDL, điều này không quan trọng lắm. Tuy nhiên, nếu bạn muốn tạo các dịch vụ có thể truy cập và có sẵn cho nhiều máy khách, thì tính đồng nhất của các dịch vụ REST và dễ dàng sử dụng chúng là một điểm cộng lớn, bạn không cần một RPC nặng, khả năng tạo yêu cầu HTTP.

Không chắc chắn điều này hoàn toàn trả lời câu hỏi của bạn, nhưng nếu bạn nói, bạn có một hệ thống hoạt động dựa trên SOAP (và bạn kiểm soát máy khách và máy chủ) thì tôi không thấy lý do nào để thay đổi. Bên cạnh đó, một số dịch vụ sẽ tự nhiên cho vay nhiều hơn để truy cập dựa trên RPC, trong trường hợp đó một giao diện SOAP sẽ thích hợp hơn. Về mặt hiệu suất, một hoặc nhiều lớp sẽ được loại bỏ hiệu quả khỏi ngăn xếp công nghệ máy khách và máy chủ nếu bạn không sử dụng SOAP, vì vậy tất cả những thứ khác bằng nhau, một dịch vụ cho thấy giao diện RESTful sẽ giành chiến thắng ở đó.

+0

+1 Điểm tốt, cảm ơn. –

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