SOAP (Simple Object Access Protocol) và REST (Representational State Transfer) là đáp án cho cùng một câu hỏi: Làm thế nào để truy cập vào Web Services. Sự lựa chọn ban đầu dường như là dễ dàng, những đôi khi sẽ rất khó để cân nhắc chọn loại API nào phù hợp.
SOAP là một giao thức truy cập Webservice được sử dụng trong một thời gian và hưởng tất cả các lợi ích của việc sử dụng lâu dai. Được phát triển bởi Micrisoft, SOAP không thực sự đơn giản như từ viết tắt của nó. Trong khi đó, REST là một chiến binh mới, tìm kiếm để sửa các vấn đề mà SOAP gặp phải và cung cấp các phương thức thực sự đơn giản để truy cập Webservice. Tuy nhiên, đôi khi SOAP thực sự dễ sử dụng hơn, đôi khi REST có vấn đề của riêng nó. Cả hai kỹ thuật đều có vấn đề cần xem xét khi quyết định sử dụng phương thức nào.
Cả SOAP và REST đêù có những điểm tương đồng trên giao thức HTTP, SOAP là một tổ hợp các pattern truyền tin nghiêm ngặt hơn REST. Quy định trong SOAP là rất quan trọng bởi vì nếu thiếu chúng, bạn không thể đạt được bất kì level tiêu chuẩn hóa nào. REST mang một kiến trức không yêu cầu quy trình và linh hoạt hơn. Cả SOAP và REST đều dựa trên những quy định đã tồn tại trong một thời gian dài mà mọi người đều đồng ý tuân theo do lợi ích mà nó mang lại
SOAP dựa hoàn toàn vào XML để cũng cấp các services truyền tin. Microsoft ban đầu phát triển SOAP để thay thế cho các công nghệ cũ hơn không hoạt động tốt trên Internet như Distributed Component Object Model (DCOM) and Common Object Request Broker Architecture (CORBA). Những công nghệ này không thành công vì chúng dựa vào truyền tin nhị phân, cách truyền tin XML mà SOAP sử dụng làm việc tốt hơn qua Internet.
XML được sử dụng để tạo ra các requests và nhận responses trong SOAP, nó có thể trở nên cực kỳ phức tạp. Trong một số ngôn ngữ lập trình, bạn cần phải xây dựng các requests đó bằng tay, điều này trở nên mơ hồ vì SOAP không dung nạp được các lỗi. Tuy nhiên, một vài ngôn ngữ khác có thể sử dụng các phím tắt mà SOAP cung cấp; Có thể giúp bạn giảm bớt effort cần thiết để tạo request và phân tích responses. Thực tế, khi làm việc với .NET, bạn thậm chí chưa bao giờ gặp đến XML.
Một trong những tính năng quan trọng nhất của SOAP là tích hợp trong xử lý lỗi. Nếu có sự cố với requests của bạn, responses chứa thông tin lỗi mà bạn có thể sử dụng để khắc phục sự cố. Bạn có thể không sở hữu các Web service, tính năng này đặc biệt vô cùng quan trọng; Nếu không bạn sẽ thắc mắc tại sao mọi việc lại không thành công. Các báo cáo lỗi thậm chí cung cấp mã code chuẩn để có thể tự động hoá một số nhiệm vụ xử lý lỗi trong mã của bạn.
Một tính năng khác khá thú vị của SOAP là bạn không nhất thiết phải sử dụng nó với giao thức HyperText Transfer Protocol (HTTP). Có một chỉ định rõ ràng để sử dụng SOAP qua Simple Mail Transfer Protocol (SMTP) và không có lý do gì bạn không thể sử dụng nó trên các phương thức khác.
Nhiều developers thấy rằng SOAP cồng kềnh và khó sử dụng. Ví dụ, làm việc với SOAP trong JavaScript có nghĩa là viết một tấn các dòng code để thực hiện các task cực kỳ đơn giản bởi vì bạn phải tạo cấu trúc XML mỗi lần.
REST cung cấp giải pháp thay thế nhẹ hơn. Thay vì sử dụng XML để tạo request, REST dựa vào một URL đơn giản. Trong một số trường hợp, bạn phải cung cấp thông tin bổ sung theo những cách đặc biệt, nhưng hầu hết các Web service sử dụng REST đều dựa hoàn toàn vào việc thu lại các thông tin cần thiết bằng phương pháp URL. REST có thể sử dụng bốn hình thái HTTP 1.1 khác nhau (GET, POST, PUT, và DELETE) để thực hiện các tasks.
Không giống như SOAP, REST không phải sử dụng XML để cung cấp response. Bạn có thể tìm các Web service dựa trên REST đưa ra dữ liệu trong Command Separated Value (CSV), JavaScript Object Notation (JSON) và Really Simple Syndication (RSS). Vấn đề là bạn có thểthu được output bạn cần trong một form dễ phân tích trong ngôn ngữ bạn cần cho ứng dụng của bạn.
Trước khi bạn dành hàng giờ đồng hồ để lựa chọn giữa SOAP và REST, hãy xem xét rằng một số Web service hỗ trợ một và một số khác. Trừ khi bạn có kế hoạch tạo ra Web service của riêng bạn, quyết định sử dụng giao thức nào đã được hình thành bởi bạn. Rất ít Web service, chẳng hạn như Amazon, hỗ trợ cả hai. Quyết định của bạn thường tập trung vào Web service nào phù hợp nhất với nhu cầu của bạn chứ không phải là sử dụng giao thức nào.
SOAP chắc chắn là lựa chọn nặng ký để truy cập Web service. Nó cung cấp những ưu điểm sau đây khi so sánh với REST:
Bên cạnh đó, REST dễ sử dụng hơn và linh hoạt hơn. Nó có những lợi thế sau khi so sánh với SOAP:
Trên đây là một vài khái niệm cơ bản về SOAP và REST cũng như các đặc điểm của từng phương thức. Hi vọng chúng sẽ giúp ích cho các bạn để lựa chọn phương thức phù hợp nhất với ứng dụng của mình.
Unpublished comment
Viết câu trả lời