REST so với SOAP: Kiến trúc, Nhắn tin, và Thỏa thuận

REST so với SOAP

API Scraping không scrap cung cấp các giao diện HTTP cụ thể cho nhiệm vụ mà trả về dữ liệu web công khai đã được cấu trúc cho các quy trình ứng dụng.

TL;DR

  • REST là một phong cách kiến trúc; SOAP là một giao thức nhắn tin. Chúng chồng chéo trong thiết kế dịch vụ web nhưng xác định các lớp và ràng buộc khác nhau.
  • REST thường sử dụng ngữ nghĩa HTTP trực tiếp. SOAP mang một Bọc XML và có thể sử dụng HTTP hoặc một liên kết khác.
  • SOAP ưu tiên các hợp đồng nhắn tin chính thức và các tiêu chuẩn mở rộng. REST ưu tiên một giao diện đồng nhất, các đại diện tài nguyên, và cơ sở hạ tầng web.
  • Các yêu cầu bảo mật có thể thay đổi quyết định. Chữ ký cấp tin nhắn và các trung gian khác với bảo vệ cấp kết nối và sự ủy quyền ứng dụng.
  • Các hợp đồng hiện có thường lớn hơn sở thích từ đầu xanh. Giá trị di chuyển phải vượt quá chi phí thay đổi người tiêu dùng, công cụ, quản trị, và bằng chứng tuân thủ.

REST và SOAP không phải là các danh mục tương đương

REST là một phong cách kiến trúc được xác định bởi các ràng buộc về thành phần và tương tác trong một hệ thống siêu phương tiện phân tán. SOAP là một giao thức và khuôn khổ nhắn tin XML với một Bọc, tiêu đề tùy chọn, phần thân, mô hình lỗi, vai trò xử lý, và các liên kết. Một API REST có thể sử dụng XML, và một dịch vụ SOAP có thể sử dụng HTTP, vì vậy “JSON so với XML” là một so sánh chưa hoàn chỉnh.

Câu hỏi quyết định là hợp đồng và mô hình vận hành nào mà hệ thống cần. REST sử dụng các tài nguyên đã được xác định, các đại diện, và một giao diện đồng nhất có thể tận dụng các phương thức HTTP, trạng thái, cache, và các trung gian. SOAP tiêu chuẩn hóa một container tin nhắn và mô hình mở rộng có thể hỗ trợ các mô tả dịch vụ chính thức và các tính năng cấp tin nhắn. W3C duy trì gia đình đặc tả SOAP, trong khi các ràng buộc của REST có nguồn gốc từ công việc kiến trúc đã mô tả web.

Cách Tương tác Khác Biệt Trên Mạng

REST so với SOAP: Kiến trúc, Nhắn tin, và Thỏa thuận dễ hoạt động hơn khi đường dẫn xử lý của nó là rõ ràng. Các giai đoạn sau đây cho thấy nơi có thể thu thập bằng chứng và nơi chính sách có thể thay đổi kết quả.

Một tương tác REST điển hình

Một khách hàng tiếp cận một tài nguyên thông qua một URI, thể hiện ý định qua ngữ nghĩa giao diện, gửi siêu dữ liệu và có thể là một đại diện, và nhận trạng thái cộng với một đại diện. Các thành phần HTTP chung có thể hiểu phương thức, cache, xác thực, chuyển hướng, và siêu dữ liệu nội dung.

Một tương tác SOAP điển hình

Một khách hàng gửi một Bọc XML có phần thân mang một thông điệp hoạt động và tiêu đề có thể mang các mở rộng đã được xác định. Người nhận tuân theo các quy tắc xử lý SOAP và trả lại một Bọc khác, có thể chứa một Lỗi. Chi tiết HTTP phụ thuộc vào liên kết SOAP đã chọn.

Hợp đồng và công cụ

Các hợp đồng REST trải dài từ văn bản đến các mô tả API có thể đọc bằng máy và định nghĩa loại phương tiện. Các hệ sinh thái SOAP thường sử dụng WSDL và XML Schema cho các hoạt động, loại, liên kết, và địa chỉ, cho phép tạo ra các stubs và công cụ doanh nghiệp dựa trên chính sách.

Ma trận So sánh REST vs SOAP

Từ vựng xoay quanh REST so với SOAP: Kiến trúc, Nhắn tin, và Thỏa thuận trải dài qua kiến trúc, dữ liệu, và hoạt động. Bảng giữ các trách nhiệm đó tách biệt để một đánh giá thiết kế có thể đặt ra câu hỏi đúng.

Kích thướcRESTSOAP
Bản chấtPhong cách kiến trúc với các ràng buộc bắt buộc và tùy chọn.Giao thức nhắn tin dựa trên XML và khuôn khổ xử lý.
Trừu tượng chínhTài nguyên và các đại diện của chúng.Tin nhắn và các hoạt động do ứng dụng định nghĩa.
Định dạng dữ liệu chungThường là JSON, nhưng bất kỳ đại diện phù hợp nào cũng có thể được sử dụng.Bọc XML với nội dung ứng dụng XML.
Vận chuyểnThường là HTTP và gần gũi với ngữ nghĩa của nó.Có thể được liên kết với HTTP và các giao thức nền tảng khác.
CachingSử dụng trực tiếp siêu dữ liệu cache HTTP là điều phù hợp tự nhiên.Có thể thông qua các liên kết hoặc thiết kế ứng dụng, nhưng không phải là trừu tượng tin nhắn trung tâm.
Mở rộng chính thứcThường được lắp ráp từ HTTP, loại phương tiện và tiêu chuẩn ứng dụng.Có một gia đình WS-* rộng lớn cho bảo mật, định địa chỉ, chính sách và các mối quan tâm liên quan.

Khi Mỗi Kiểu Là Sự Lựa Chọn Tốt Hơn

Một trường hợp thực tiễn cho REST so với SOAP: Kiến trúc, Nhắn tin và Các sự đánh đổi bắt đầu từ công việc mà hệ thống phải thực hiện. Những ví dụ này cho thấy yêu cầu đó thay đổi giao diện hoặc quyết định mạng như thế nào.

REST cho API tài nguyên gốc trên web

Đọc có thể lưu cache, truy cập khách hàng rộng rãi và các hoạt động HTTP đơn giản ủng hộ thiết kế kiểu REST.

SOAP cho các hợp đồng doanh nghiệp bắt buộc

WSDL có sẵn, XML Schema, bảo mật tin nhắn hoặc hồ sơ ngành có thể khiến SOAP trở thành lựa chọn có thể liên kết.

REST cho các nền tảng phát triển công cộng

Kiểm tra đơn giản và cổng HTTP trưởng thành giảm chi phí đầu vào cho các người tiêu dùng đa dạng.

SOAP cho các đường dẫn tin nhắn với các bên trung gian

Vai trò tiêu đề và quy trình xử lý cấp độ tin nhắn phù hợp với các quy trình làm việc nơi cơ sở hạ tầng được xác định tham gia vào quá trình vận chuyển.

Một Khung Lựa chọn Thực tiễn

Liệt kê các yêu cầu không thể thương lượng trước khi so sánh độ ergon cho lập trình viên. Liệu việc tích hợp có cần một hồ sơ ngành cụ thể, các phần tin nhắn đã ký, xác thực lược đồ chính thức, các bên trung gian, nhắn tin không đồng bộ, lưu cache HTTP, tính tương thích trình duyệt, hoặc nhiều người tiêu dùng công khai độc lập không? Các yêu cầu thường loại trừ một cách tiếp cận trước khi những sở thích chủ quan trở nên quan trọng.

Đánh giá tổ chức xung quanh. SOAP có thể phù hợp với một cơ sở có quy định WSDL ổn định, khách hàng được tạo ra, hoạt động chứng chỉ và các thiết lập kiểm soát tuân thủ đã thiết lập. REST có thể phù hợp với các nhóm đã hoạt động cổng HTTP, API tài nguyên, quan sát tiêu chuẩn và bộ nhớ cache web. Lựa chọn một kiểu mà không có khả năng vận hành nó đơn giản chỉ chuyển độ phức tạp vào các sự cố.

Bảo vệ cả hai kiểu một cách chính xác. Các Quy phạm ngữ nghĩa HTTP hướng dẫn các tương tác REST qua HTTP, trong khi các phần mở rộng SOAP có thể thêm bảo mật cấp độ tin nhắn. Không có gì loại bỏ nhu cầu bảo vệ vận chuyển, xác thực, ủy quyền, giới hạn đầu vào, quản lý bí mật, khả năng kiểm toán và xác thực miền.

Những Huyền thoại về REST so với SOAP

  • SOAP luôn an toàn hơn. SOAP có tiêu chuẩn bảo mật tin nhắn, nhưng bảo mật phụ thuộc vào chính sách, thư viện, quản lý khóa, vận chuyển, ủy quyền và hoạt động chính xác.
  • REST chỉ hỗ trợ JSON. REST hoạt động với các đại diện mà loại phương tiện và ngữ nghĩa phù hợp với tài nguyên, bao gồm XML, HTML, hình ảnh và định dạng nhị phân.
  • SOAP không thể sử dụng HTTP. HTTP là một liên kết SOAP phổ biến; sự khác biệt là SOAP xác định khung tin nhắn riêng của nó trên nền tảng đó.
  • REST không có hợp đồng. API REST có thể có các lược đồ chính xác, loại phương tiện, tài liệu và mô tả có thể đọc được bằng máy mặc dù REST không yêu cầu WSDL.
  • Thay thế SOAP bằng REST loại bỏ sự phức tạp. Các quy tắc kinh doanh, danh tính, giao dịch, quản lý và nhu cầu tương thích vẫn tồn tại sau khi định dạng dây thay đổi.

Di chuyển giữa SOAP và REST

Kiểm kê các hoạt động, lược đồ, mã lỗi, tiêu đề bảo mật, khẳng định chính sách, người tiêu dùng, khối lượng và chứng cứ tuân thủ. Bản đồ khả năng kinh doanh thay vì dịch mỗi hành động SOAP thành một đường dẫn REST dạng động từ. Định nghĩa tài nguyên ổn định, chuyển đổi trạng thái, đại diện và ý nghĩa lỗi cho ranh giới mới.

Một lớp bề mặt có thể giảm thiểu sự gián đoạn cho người tiêu dùng. Một lớp bề mặt REST có thể gọi một dịch vụ SOAP đã thiết lập, hoặc một lớp bề mặt SOAP có thể bảo vệ các khách hàng cũ trong khi các yếu tố mới phát triển. Lớp bề mặt phải bảo tồn ủy quyền, tương quan, tính đồng nhất và ngữ nghĩa lỗi; một chuyển đổi định dạng nông có thể che giấu các kết quả quan trọng.

Chạy các bài kiểm tra hợp đồng từ góc nhìn của người tiêu dùng. So sánh các kết quả thành công, thất bại xác thực, quyết định ủy quyền, các lần gửi trùng lặp, tải trọng lớn, các trường null hoặc tùy chọn, mã hóa ký tự, xử lý thời gian, và theo dõi kiểm toán. Di chuyển các nhóm người tiêu dùng có giới hạn và giữ ranh giới cũ cho đến khi bằng chứng mới hoàn tất.

Danh sách kiểm tra Đánh giá REST so với SOAP: Kiến trúc, Nhắn tin và Các sự đánh đổi

Sử dụng các kiểm tra này để biến định nghĩa REST so với SOAP: Kiến trúc, Nhắn tin và Các sự đánh đổi thành bằng chứng thực hiện mà một lập trình viên, điều hành viên hoặc người xem có thể tái tạo.

  1. Nhắc lại ranh giới. Đối với REST so với SOAP: Kiến trúc, Nhắn tin và Các sự đánh đổi, xác định người gọi, nhà cung cấp, đường dẫn và sự kiện chính xác đánh dấu một kết quả hoàn chỉnh.
  2. Xác minh tuyên bố trung tâm. Xác nhận tuyên bố này với thực hiện và tài liệu của nó: REST là một phong cách kiến trúc; SOAP là một giao thức nhắn tin. Chúng giao thoa trong thiết kế dịch vụ web nhưng xác định các lớp và ràng buộc khác nhau.
  3. Theo dõi cơ chế. Quan sát một tương tác REST điển hình, một tương tác SOAP điển hình, hợp đồng và công cụ, và ghi lại thành phần nào sở hữu mỗi giai đoạn.
  4. Kiểm tra sự khác biệt gần nhất. Tài liệu lý do Tự Nhiên có nghĩa là “Phong cách kiến trúc với các ràng buộc bắt buộc và tùy chọn.” trong hệ thống này.
  5. Kiểm tra một trường hợp sử dụng đại diện. Sử dụng REST cho API tài nguyên gốc trên web với dữ liệu thực tế, vị trí, khối lượng, và ranh giới quyền truy cập.
  6. Bảo vệ chống lại một sai lầm được biết. Xem lại “SOAP luôn an toàn hơn.” và thêm một kiểm tra chấp nhận để bắt được nó.
  7. Giới hạn khối lượng công việc. Đặt giới hạn phù hợp với chủ đề cho REST so với SOAP: Kiến trúc, Nhắn tin và Thương lượng, bao gồm tải trọng, đồng thời, thời gian thực thi, và đầu ra lưu trữ nơi chúng áp dụng.
  8. Ghi lại quyết định. Giải thích lý do vì sao REST so với SOAP: Kiến trúc, Nhắn tin, và Thương lượng phù hợp với ranh giới này và nêu bằng chứng sẽ biện minh cho một cách tiếp cận khác sau này.

Kết luận

REST so với SOAP: Kiến trúc, Nhắn tin, và Thương lượng nên mô tả một phần của thiết kế có thể kiểm tra được thay vì hoạt động như một nhãn lỏng lẻo cho hành vi lân cận. Đánh giá nên bảo tồn quyết định trung tâm này: REST là một phong cách kiến trúc; SOAP là một giao thức nhắn tin. Chúng chồng chéo trong thiết kế dịch vụ web nhưng xác định các lớp và ràng buộc khác nhau. Nó cũng nên bảo vệ chống lại soap luôn an toàn hơn. và giữ cho REST so với SOAP: Kiến trúc, Nhắn tin, và Thương lượng truy cập trong chính sách đã được tài liệu hóa cho giao diện hoặc mạng.

Sẵn sàng xây dựng quy trình làm việc dữ liệu web của bạn?

Kết nối một bước thu thập hoặc tích hợp REST so với SOAP: Kiến trúc, Nhắn tin, và Thương lượng đã đo lường với các thực hành xác thực và lưu trữ được mô tả ở trên.

Đăng ký hôm nay và nhận $5 tín dụng miễn phíkhông cần thẻ tín dụng.

Nhận tín dụng $5 của bạn →

Câu hỏi thường gặp

REST có tốt hơn SOAP không?

REST không tốt hơn SOAP ở mọi khía cạnh. REST thường phù hợp với các API tài nguyên web-native và quyền truy cập rộng rãi của nhà phát triển, trong khi SOAP có thể phù hợp với các hợp đồng doanh nghiệp chính thức, tiêu chuẩn cấp tin nhắn, và các hồ sơ ngành đã được thiết lập.

SOAP có lỗi thời không?

Không. SOAP đã trưởng thành và vẫn tồn tại trong các hệ thống doanh nghiệp và ngành công nghiệp lâu dài. Nó ít phổ biến hơn cho các API web công khai đơn giản, nhưng các hợp đồng và hồ sơ bảo mật hiện có có thể khiến nó trở thành lựa chọn thực tế.

REST có thể sử dụng XML không?

Có. REST không yêu cầu JSON. Một API REST có thể trao đổi XML hoặc một đại diện khác khi loại phương tiện và ngữ nghĩa được tài liệu hóa.

Có thể một hệ thống hỗ trợ cả REST và SOAP không?

Có. Một hệ thống có thể phơi bày các ranh giới REST và SOAP riêng biệt trên các dịch vụ ứng dụng chia sẻ hoặc sử dụng một lớp bọc trong quá trình di cư. Mỗi ranh giới nên duy trì các hợp đồng rõ ràng, ủy quyền, và ý nghĩa lỗi.

Tài liệu tham khảo