🧦SOAP

So sánh giữa REST API và SOAP Kiến thức cơ bản về ngôn ngữ SOAP: Định nghĩa, cơ chế hoạt động và ví dụ Đặc điểm, ưu điểm và nhược điểm của REST API so với SOAP Kinh nghiệm lựa chọn phù hợp cho nhu cầu

Khái niệm

SOAP (Simple Object Access Protocol): Là một đặc tả giao thức nhắn tin để trao đổi thông tin có cấu trúc trong việc triển khai các dịch vụ web trong mạng máy tính. Nó sử dụng Tập thông tin XML cho định dạng thông báo và dựa trên các giao thức lớp ứng dụng, thường là Giao thức truyền siêu văn bản (HTTP) hoặc Giao thức truyền thư đơn giản (SMTP), để đàm phán và truyền thông.

Đặc điểm

Khả năng mở rộng (bảo mật và WS-Addressing là một trong những phần mở rộng đang được phát triển). Tính trung lập (SOAP có thể hoạt động trên bất kỳ giao thức nào như HTTP, SMTP , TCP , UDP). Độc lập (SOAP cho phép bất kỳ mô hình lập trình nào).

Khối xây dựng SOAP

SOAP Envelope: Xác định tài liệu XML dưới dạng thông báo SOAP. SOAP Header: Chứa thông tin tiêu đề. SOAP Body: Chứa thông tin cuộc gọi và phản hồi. SOAP Fault: Cung cấp thông tin về các lỗi đã xảy ra trong khi xử lý thư.(Không cần thiết)

Ưu và nhược điểm

Ưu điểm:

  1. Tính trung lập của ngôn ngữ: SOAP có thể được phát triển bằng bất kỳ ngôn ngữ nào.

  2. Khả năng tương tác và tính độc lập của nền tảng: SOAP có thể được triển khai bằng bất kỳ ngôn ngữ nào và có thể được thực thi trong bất kỳ nền tảng nào.

  3. Tính đơn giản: Thông báo SOAP có định dạng XML rất đơn giản.

  4. Khả năng mở rộng: SOAP sử dụng giao thức HTTP để truyền tải do đó nó trở nên có khả năng mở rộng.

Nhược điểm:

Chậm: SOAP sử dụng định dạng XML cần được phân tích cú pháp và cũng dài hơn. Sự phụ thuộc của WSDL: Nó phụ thuộc vào Web Services Description Language và không có bất kỳ cơ chế tiêu chuẩn hóa nào để khám phá động các dịch vụ.

Mô hình giao tiếp SOAP

Máy khách sẽ định dạng thông tin liên quan đến lệnh gọi thủ tục và bất kỳ đối số nào thành một thông báo SOAP và gửi nó đến máy chủ như một phần của yêu cầu HTTP. Quá trình đóng gói dữ liệu vào một thông điệp SOAP được gọi là Marshalling. Sau đó, máy chủ sẽ mở gói thông báo do máy khách gửi, xem máy khách yêu cầu gì và sau đó gửi phản hồi thích hợp trở lại máy khách dưới dạng thông báo SOAP. Thực hành mở gói một yêu cầu do khách hàng gửi được gọi là Demarshalling.

So sánh Soap và Restful

Giống nhau

Hướng dẫn thiết kế và phát triển kiến trúc cho World Wide Web Xác định cách xây dựng (API), cho phép dữ liệu được giao tiếp giữa các ứng dụng, thành phần với ứng dụng, thành phần khác

Khác nhau

SOAP

REST

1

Là một giao thức

Là một cách thiết kế kiến trúc

2

SOAP không thể sử dụng REST vì nó là giao thức

REST có thể dùng các web services sử dụng SOAP vì nó là mẫu kiến trúc

3

Cung cấp các giao diện dịch vụ (services interfaces) cho các thành phần bên ngoài sử dụng

Sử dụng địa chỉ URL để cung cấp các dịch vụ

4

Định nghĩa các chuẩn và quy tắc chặt chẽ

Không định nghĩa nhiều chuẩn như SOAP

5

Sử dụng băng thông và tài nguyên nhiều hơn, vì SOAP Messages chứa rất nhiều thông tin bên trong nó

Sử dụng băng thông và tài nguyên ít hơn, REST Messages chủ yếu chỉ bao gồm các JSON Messages

6

Kế thừa chuẩn bảo mật tầng vận tải của giao thức mạng

Kế thừa chuẩn bảo mật tầng vận tải của giao thức mạng

7

Chỉ hỗ trợ định dạng dữ liệu XML

Hỗ trợ các định dạng dữ liệu khác nhau như text, HTML, XML, JSON,...

8

SOAP hỗ trợ cả hai giao thức SMTP và HTTP

REST gắn với giao thức HTTP

9

Stateful

Stateless

Khi nào sử dụng Soap

Chuẩn giao tiếp chung - nếu cả máy khách và máy chủ đều có thỏa thuận về định dạng trao đổi Stateful - Sử dụng SOAP nếu server cần lưu dữ liệu của client.

Khi nào sử dụng Rest

Hạn chế về tài nguyên và băng thông - Vì SOAP Messages có nội dung nặng hơn và tiêu thụ băng thông lớn hơn nhiều, REST nên được sử dụng trong các trường hợp băng thông mạng hạn chế. Stateless - Nếu không cần lưu dữ liệu của client trên server thì REST nên được sử dụng. Caching - Nếu cần tăng độ truy xuất dữ liệu và giảm tải cho hệ thống thì REST là giải pháp. Đôi khi, khách hàng có thể yêu cầu cùng một tài nguyên nhiều lần. Điều này có thể làm tăng số lượng yêu cầu được gửi đến máy chủ. Bằng cách triển khai bộ nhớ cache, các kết quả truy vấn thường xuyên nhất có thể được lưu trữ ở một vị trí trung gian. Vì vậy, bất cứ khi nào máy khách yêu cầu một tài nguyên, trước tiên nó sẽ kiểm tra bộ nhớ cache. Nếu tài nguyên tồn tại sau đó, nó sẽ không tiến tới máy chủ. Vì vậy, bộ nhớ đệm có thể giúp giảm thiểu số lượng các chuyến đi được thực hiện đến máy chủ web. Dễ code - Code REST và việc triển khai tiếp theo dễ dàng hơn nhiều so với SOAP. Vì vậy, nếu web cần hoàn thành nhanh chóng, thì REST là lựa chọn phù hợp.

Last updated