REST 201 - REST vs SOAP
restful
13
REST API
3
restapi
5
soap
1
API
12
White

Mầu Hà Quang viết ngày 03/07/2018

Tiếp tục bài viết trước, liệu REST có vượt trội so với SOAP theo như ý kiến của tác giả dưới đây?

Trong bài viết này mình sẽ so sánh trực tiếp RESTSOAP để các bạn có thể tự tìm ra được câu trả lời của riêng mình.

ps: bạn nào chưa từng nghe đến SOAP có thể tham khảo tại đây.

Ưu điểm

  1. REST
  2. REST thích ứng tốt với các công nghệ web mới, dễ dàng sử dụng và bảo trì.
  3. Tách biệt rõ ràng giữa server và client, chỉ giao tiếp thông qua các phương thức HTTPURI (đọc lại bài viết REST 101).
  4. Các thông tin có thể được lưu lại phía client → tránh phải gọi đến resource nhiều lần.
  5. Có thể sử dụng bất kỳ cấu trúc nào (XML, JSON, hoặc cấu trúc do server và client quy ước với nhau).

  6. SOAP

  7. Tuân theo cách xử lý trong hệ thống của các doanh nghiệp lớn.

  8. Được thực hiện ở tầng trên của các giao thức giao tiếp, cả với các giao thức không đồng bộ, không bắt buộc phải là HTTP.

  9. Các thông tin của đối tượng được giao tiếp với khách hàng.

  10. Bảo mật và xác thực luôn được đảm bảo trong giao thức (nhờ stateful).

  11. Có thể được miêu tả bằng WSDL.

Nhược điểm

  1. REST
    • Chỉ hoạt động trên các giao thức HTTP.
    • Việc bảo mật và xác thực có thể không đảm bảo bằng SOAP (stateless).
  2. SOAP
    • Việc duy trì trạng thái (stateful) khiến tiêu tốn tài nguyên cho các metadata.
    • Khó sử dụng và không phổ biến bằng REST trong các ứng dụng web hay mobile thông thường.
    • Chỉ sử dụng XML.

Có thể thấy rõ được REST như một cậu thanh niên mới lớn, mạnh mẽ, nhanh nhẹn và thích ứng nhanh. SOAP thì như một người đàn ông ở tuổi trung niên, chắc chắn và vững chãi tuy có chậm chạp và tốn thời gian hơn. Nhưng liệu có phải tất cả phụ nữ đều thích một cậu trai mới lớn?

Không ai dùng javascript để lập trình hệ thống điều khiển nhà máy điện hạt nhân hay dùng fortran để lập trình web. Không phải tự nhiên mà các phương thức cũng như ngôn ngữ được ra đời, việc cái gì tốt hơn sẽ được quyết định trong những hoàn cảnh cụ thể khác nhau. Với những tính chất đặc biệt của 2 cách xử lý này sẽ có những use cases một cách sẽ vượt trội hơn cách còn lại.

  1. REST: Việc gần gũi với công nghệ web hiện đại, dễ học, nhanh chóng và đơn giản giúp REST ưu việt hơn trong các ứng dụng hướng tài nguyên (resources), thiên về các CRUD actions với mô hình point-to-point (client-server):
    • Mạng xã hội (twitter API)
    • Blog cá nhân (qmau.me)
    • Đọc và gửi dữ liệu.
    • Không đòi hỏi tính bảo mật quá cao.
  2. SOAP: Có thể sử dụng với mọi phương thức giao tiếp (không chỉ HTTP như REST), được chuẩn hoá và phụ hợp với các hệ thống lớn, phức tạp, đòi hỏi tính bảo mật cao:
    • Dịch vụ tài chính (Paypal API)
    • Thanh toán trực tuyến (Saleforce API)
    • Viễn thông (Clickatell SMS API)

Các bạn có thể đánh giá độ phức tạp qua ví dụ một API lấy thông tin của phim tình cảm.

REST:

  • Request: (HTTP methods + endpoint) → có thể cache vì có uniform interface

    GET  http://phimtinhcam.com/movies/69
    
  • Response:

    {
    title: Phim tình cảm
    actress: Moria azawo
    }
    

SOAP: SOAP sử dụng HTTP method POST → không thể cache

  • Request:

    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
        <Body>
        <getMovieDetailsRequest xmlns="http://phimtinhcam.com/movies">
            <id>69</id>
        </getMovieDetailsRequest>
        </Body>
    </Envelope>
    
  • Response:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
    <ns2:getMovieDetailsResponse xmlns:ns2="http://phimtinhcam.com/movies">
        <ns2:movie>
            <ns2:id>69</ns2:id>
            <ns2:name>Phim tình cảm</ns2:name>
            <ns2:actress>Moria azawo</ns2:actress>
        </ns2:movie>
    </ns2:getMovieDetailsResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    

Tại sao SOAP được sử dụng?

  1. WS-Security: SOAPREST đều hỗ trợ SSL (point-to-point sercurity) như với SOAP có hỗ trợ thêm một số tính năng enterprise security và được chuẩn hoá → hỗ trợ định danh, bảo mật qua các bên trung gian, bảo đảm an toàn, sự toàn vẹn và tính tin cậy của thông điệp.
  2. WS-AtomicTransaction: Các giao dịch ACID với WebService cần sử dụng SOAP. REST có hỗ trợ transactions nhưng nó không phù hợp với các giao dịch ACID. REST bị hạn chế rất lớn bởi chỉ sử dụng HTTP, khó sử dụng trong các hệ thống phân tán yêu cầu 2 phase-commit protocol.Với các dịch vụ tài chính, ngân hàng hay đòi hỏi tính tin cậy và sự toàn vẹn dữ liệu, điều này là bắt buộc.
  3. WS-ReliableMessaging: REST không có hệ thống xử lý lỗi chuẩn và muốn khách hàng giải quyết các lỗi giao tiếp bằng cách retry... Đây chắc chắn không phải là cách xử lý hay khi giao dịch ngân hàng. SOAP có hệ thống xử lý lỗi và thậm chí cung cấp qua các trung gian của hệ thống.

Sự vượt trội của các ứng dụng RESTful so với SOAP có lẽ gần giống với việc JSON đã vượt qua XML trong định dạng và mô tả dữ liệu. Trong thời đại các micro services lên ngôi thì tính nhanh chóng, gọn nhẹ và tốc độ cao được đặt lên hàng đầu. Điều này giải thích vì sao trong các ứng dụng thông thường và phần lớn các hệ thống hiện nay vẫn đang sử dụng RESTful APIs và các lập trình viên (bao gồm cả mình) đều ít biết về sự tồn tại của SOAP. Tuy nhiên, SOAP không biến mất vì nó vẫn rất cần thiết, nếu bạn có ý định làm về tài chính hoặc viễn thông, hãy cố gắng dành thời gian tìm hiểu và nắm chắc nó.

Mình vẫn luôn cố gắng viết bài theo cách trình bày các ý tưởng và không định hướng suy nghĩ của mọi người theo ý nghĩ của bản thân (vì chắc chắn suy nghĩ của mình nhiều khi không chính xác). Hi vọng rằng bài viết này sẽ giúp các bạn có câu trả lời của riêng mình cho câu hỏi trên.

Cuối cùng thì liệu còn anh chàng nào trẻ trung hơn cả REST? Mạnh mẽ và đơn giản hơn không? Câu trả lời sẽ có ở phần 3 và có lẽ là bài viết cuối trong series về REST của mình. See ya!

Hope you are having a RESTful weekend.

Bài viết gốc được đăng tại blog cá nhân

https://qmau.me/blog/post/rest-201-rest-vs-soap

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Mầu Hà Quang

4 bài viết.
56 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
84 9
Lập trình viên sau khi phát triển xong một website, website chạy ổn định, không bug thì coi như đã hoàn thành. Câu chuyện của năm 2018 có đơn giả...
Mầu Hà Quang viết 3 tháng trước
84 9
White
24 7
Khi phát triển các dịch vụ web (web services), các lập trình viên cần có một quy ước chuẩn để các thành phần trong hệ thống có thể giao tiếp với nh...
Mầu Hà Quang viết 2 tháng trước
24 7
White
7 1
Chatbotlà khái niệm không mới nhưng gần đây trở thành hot trend khi kết hợp cùng machine learning và AI. Mình sẽ có một bài viết cụ thể hơn về kỹ t...
Mầu Hà Quang viết 7 tháng trước
7 1
Bài viết liên quan
White
12 5
Setup hệ thống Api với Nodejs trong 1 nốt nhạc Mục đích bài viết là sẽ giúp setup hệ thống api cơ bản, và cung cấp giao diện admin để thao tác với...
Xaolonist viết hơn 1 năm trước
12 5
White
6 0
Có bao giờ bạn thắc mắc, chuyện gì thực sự diễn ra khi chúng ta gõ một địa chỉ trang web (ví dụ: (Link)) lên trình duyệt và nhấn Enter? Đầu tiên, t...
Lam Pham viết 7 tháng trước
6 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
56 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!