So sánh SOAP và REST



1. Một vài tiêu chí so sánh SOAP và REST

 

Viết tắt

REST là viết tắt của REpresentational State Transfer (Chuyển giao trạng thái phản hồi) trong khi SOAP là Simple Object Access Protocol (Giao thức truy cập đối tượng đơn giản).

Kiến trúc và giao thức

REST là một kiểu kiến trúc, từ đó RESTful web service được xây dựng trong khi SOAP là một chuẩn được tạo ra để chuẩn hóa giao tiếp giữa client và server về format, structure và method.

Sử dụng giao thức HTTP

REST thừa hưởng tất cả những lợi ích của giao thức HTTP, bao gồm các method như GETPOSTPUT và DELETE để thực hiện các hành động truy vấn, thêm, sửa, xóa dữ liệu. Trong khi đó SOAP sử dụng các message dạng XML để giao tiếp với server.

Các dạng format được support

RESTful web service có thể trả về dữ liệu dưới dạng JSON, XML hoặc HTML, trong khi nếu sử dụng SOAP web service thì chúng ta chỉ có thể sử dụng XML bởi vì các quy tắc trong một message SOAP đã được định nghĩa sẵn trong định dang XML.

Tốc độ

RESTful nhanh hơn so với SOAP vì các message của SOAP cần parsing nhiều hơn RESTful.

Băng thông

Các message SOAP thường có độ dài và dung lượng cao hơn so với một request của RESTful, do đó nếu dùng SOAP thì bạn sẽ tốn băng thông nhiều hơn.

Transport Independence

Vì các message của SOAP được đóng gói trong một định dạng đặc biệt nên nó có thể gửi qua bất kỳ cơ chế vận chuyển nào như TCP, FTP, SMTP,… Mặt khác thì RESTful phụ thuộc rất nhiều vào giao thức HTTP. Tuy nhiên trong thực tết chúng ta cũng sử dụng giao thức HTTP nhiều hơn nên lợi thế này của SOAP cũng không mấy được coi trọng.

Tài nguyên

RESTful sử dụng URL để xác định tài nguyên mong muốn được truy cập trong khi SOAP sử dụng các message dạng XML để xác định các thủ tục hay tài nguyên yêu cầu.

Bảo mật

Bảo mật trong RESTful web service có thể được triển khai bằng các giải pháp và tiêu chuẩn truyền thống để các truy cập được phân quyền và xác thực trước khi sử dụng tài nguyên web. Còn đối với SOAP, bạn cần có viết thêm các cơ sở hạ tầng để bảo mật các message và giao thức vận chuyển.

Caching

RESTful web service tận dụng tối đa cơ chế caching vì về cơ bản chúng dựa trên URL. Mặt khác, các dịch vụ web SOAP hoàn toàn bỏ qua caching web.

Tiếp cận

Trong các dịch vụ web dựa trên REST, mọi thực thể đều tập trung vào các tài nguyên, trong khi trong trường hợp dịch vụ web SOAP, mọi thực thể đều tập trung vào các interface và message.

Ví dụ

Ví dụ: giả sử bạn muốn truy xuất thời tiết hôm nay cho một thành phố cụ thể từ một máy chủ cung cấp thông tin thời tiết, URL RESTful của bạn sẽ trông giống như http://weatherdata.org/data/weather/uk/london, rất giống một request HTTP như http://weatherdata.org/data/weather?q=uk,London.

Bên cạnh đó thì để có được cùng một dữ liệu bằng SOAP, bạn cần tạo một thông báo XML có tiêu đề và nội dung và gửi nó http://www.webservicex.net/globalweather.asmx?op=GetWeather.

Tóm lại, RESTfull đơn giản, linh hoạt và dễ chịu hơn nhiều so với SOAP.


2. Bảng so sánh

Stt SOAP REST
1 Một giao thức gửi nhận message có dạng XML Một loại kiến trúc bao gồm các quy tắc để thao tác với server
2 Sử dụng WSDL để giao tiếp giữa máy chủ và máy khách Sử dụng XML hoặc JSON để gửi nhận dữ liệu
3 Gọi các service thông qua method RPC Gọi các service qua đường dẫn URL
4 Kết quả trả về không dễ đọc Kết quả trả về dễ đọc vì đơn giản chỉ là text XML hoặc JSON.
5 Có thể truyền qua nhiều giao thức khác nhau như HTTP, SMTP, FTP,… Chỉ có thể truyền qua HTTP
6 JS có thể dùng để gọi SOAP, nhưng rất khó để làm Quá đơn giản nếu dùng JS.
7 Performance không tốt bằng REST Performance tốt hơn SOAP, tốn ít tài nguyên CPU hơn, code ngắn gọn hơn

 

SOAP:

  • Đây là một Giao thức.
  • Viết tắt của Giao thức truy cập đối tượng đơn giản.
  • Không thường được ưa thích, nhưng được sử dụng trong các trường hợp yêu cầu truyền dữ liệu trạng thái và độ tin cậy cao hơn.
  • Được sử dụng để triển khai các dịch vụ web.
  • SOAP không thể sử dụng REST vì nó là một giao thức.
  • SOAP quy định các tiêu chuẩn có nghĩa là phải được tuân thủ nghiêm ngặt.
  • Máy khách được kết hợp chặt chẽ hơn với máy chủ, tương tự như các ứng dụng máy tính để bàn có hợp đồng nghiêm ngặt.
  • Chỉ cho phép truyền XML giữa máy khách và máy chủ.
  • Yêu cầu nhiều băng thông hơn.
  • Hỗ trợ SSL & WS-Security.
  • Các bài đọc không thể lưu vào bộ nhớ cache.
  • Sử dụng các giao diện dịch vụ để hiển thị logic tài nguyên.
  • SOAP chậm hơn khi so sánh với REST.
  • Vì nó là một giao thức, nó xác định các biện pháp bảo mật của riêng mình.
  • Chạy trên HTTP và bao gồm thông báo (message).

Trong Testing thì có tool này để chuyên kiểm thử SOAP:
SoapUI: https://www.soapui.org/downloads/soapui/

REST:

  • Đây là một Kiến trúc.
  • Viết tắt của Chuyển giao trạng thái đại diện.
  • REST là không trạng thái, do đó máy chủ không có trạng thái (hoặc dữ liệu phiên)
  • Nó là một mô hình kiến ​​trúc để phát triển hệ thống giao tiếp máy khách-máy chủ.
  • Dịch vụ web chủ yếu sử dụng phương thức POST để thực hiện các hoạt động, trong khi REST sử dụng GET để truy cập tài nguyên.
  • Yêu cầu sự tương tác giữa máy khách và máy chủ.
  • Một mẫu thiết kế kiến ​​trúc để phát triển các dịch vụ web
  • Điều này có thể có giao thức SOAP như một phần của việc triển khai.
  • Các tiêu chuẩn nhưng chúng không cần được tuân thủ nghiêm ngặt.
  • Máy khách REST linh hoạt hơn giống như một trình duyệt và không phụ thuộc vào cách máy chủ được phát triển trừ khi nó tuân theo các giao thức cần thiết để thiết lập giao tiếp.
  • Hỗ trợ dữ liệu nhiều định dạng như XML, JSON, Văn bản, v.v.
  • Yêu cầu đọc có thể được lưu vào bộ nhớ đệm.
  • Nó sử dụng các tiêu đề HTTP để giữ thông tin meta
  • sử dụng URI để hiển thị logic tài nguyên.
  • REST nhanh hơn khi so sánh với SOAP.
  • Nó chỉ kế thừa các biện pháp bảo mật dựa trên giao thức mà nó sử dụng để triển khai.
  • Ngày nay thường được các nhà phát triển ưa thích vì nó cung cấp nhiều khả năng mở rộng và khả năng bảo trì hơn.
  • Có URI để truy cập tài nguyên bằng mẫu phản hồi yêu cầu.


Trong Testing có tool này chuyên kiểm thử REST:
Postman: https://www.postman.com/downloads/

 

3. Lý do gì REST tốt hơn SOAP?

  1. REST có thể được sử dụng bởi bất kỳ client nào ví dụ: Java, C ++, Python client và thậm chí là một trình duyệt web với Ajax và JavaScript.

  2. REST nhẹ hơn so với SOAP, nó không yêu cầu phân tích cú pháp XML và nó cũng tiêu tốn ít băng thông hơn vì không giống như SOAP, REST không yêu cầu SOAP header cho mỗi lần request.

  3. SOAP là một công nghệ cũ, còn tất cả những gã khổng lồ hiện đại đang sử dụng REST, ví dụ: Google, Twitter và Flickr…

  4. REST rất dễ học, nó chỉ cần hiểu danh từ và động từ. Nếu bạn đã biết các phương thức HTTP thì nó thậm chí còn dễ dàng hơn.

  5. Java hỗ trợ tuyệt vời cho RESTFul web service và cũng hỗ trợ tốt cho SOAP web service. Bạn có rất nhiều sự lựa chọn ở đây, ví dụ: Jersey, RESTLet, v.v.


Kiến thức bổ sung

CRUD là từ viết tắt của bốn hoạt động cơ bản được sử dụng trong RDBMS (hệ quản trị cơ sở dữ liệu quan hệ).

REST sử dụng HTTP cho tất cả 4 hoạt động CRUD như được liệt kê bên dưới:

  1. GET: Read
  2. POST: Create
  3. PUT/PATCH: Update
  4. DELETE: Delete


Nguồn tham khảo:

  • Anh Tester

    Đường dẫu khó chân vẫn cần bước đi
    Đời dẫu khổ tâm vẫn cần nghĩ thấu