Web service, Bạn sẽ chọn REST hay SOAP??


Web Service

Dịch vụ web ( hay còn gọi là web service) là một khái niệm rộng hơn so với khái niệm web thông thường. Nó là sự kết hợp các máy tính cá nhân với các thiết bị khác, các cơ sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo mà người sử dụng có thể làm việc thông qua các trình duyệt mạng.
Các Web Service thường cung cấp các dữ liệu thô mà nó khó hiểu đối với đa số người dùng thông thường, chúng thường được trả về dưới dạng XML hoặc JSON.
Hiện nay, web service trở thành dịch vụ mạnh mẽ, cung cấp lợi ích cho cả doanh nghiepj, khách hàng, cá nhân, trong nhiều lĩnh vực thực tế: thông tin thương mại, dịch vụ du lịch, tỉ giá, chứng khoán…


Ưu điểm

  • Web service cung cấp nền tảng rộng lớn chạy được trên các hệ điều hành khác nhau
  • Năng cao khả năng tái sử dụng
  • Tạo mối quan hệ tương tác lẫn nhau, dễ dàng cho việc phát triển các ứng dụng phân tán.
  • Thúc đẩy mạnh mẽ vào hệ thống tích hợp và giảm được sự phức tạp của hệ thống, giảm giá thành phần tương tác tốt với hệ thống doanh nghiệp.
  • Sử dụng các giao thức và chuẩn mở, giao thức và định dạng dữ liệu dựa trên văn bản giúp các lập trình viên dễ dàng hiểu được

Nhược điểm

  • Có nhiều chuẩn khiến người dùng khó nắm bắt.
  • Có thể xảy ra thiệt hại lớn vào khoảng thời gian không hoạt động của web service như: có thể lỗi nếu như máy tính không nâng cấp, thiếu các giao tiếp trong việc vận hành.
  • Phải quan tâm nhiều hơn đến vẫn đề bảo mật

Sự khác nhau giữa SOAP và REST web service

REST (REpresentational State Transfer) là một kiểu cấu trúc (architectural style) cung cấp API thông qua internet để xử lý các hoạt động CRUD trên dữ liệu. REST tập trung vào việc truy cập các tài nguyên được đặt tên thông qua một giao diện duy nhất.
Những lý do khiến bạn thích thú với REST:

  • REST sử dụng chuẩn HTTP nên nó đơn giản hơn nhiều so với trước đây. Tạo clients, phát triển các API, tài liệu dễ hiểu hơn và không có nhiều thứ mà REST không làm được. Về cơ bản điều này thực sự tốt hơn SOAP
  • REST cho phép nhiều định dạng dữ liệu khác nhau trong khi SOAP chỉ cho phép XML. Mặc dù điều này có vẻ như làm tăng thêm sự phức tạp cho REST vì bạn cần phải xử lý nhiều định dạng. Nhưng theo kinh nghiệm của tôi, nó lại thực sự có lợi. JSON phù hợp hơn cho dữ liệu và phân tích cú pháp nhanh hơn. REST cho phép hỗ trợ tốt hơn cho browser client do nó có hỗ trợ cho JSON.
  • REST có hiệu suất tốt hơn và khả năng mở rộng. Những lần đọc của REST có thể cached lại được còn SOAP thì không.
  • Có một điều thú vị là REST hoàn toàn có thể sử dụng SOAP web services để thực hiện.

SOAP (Simple Object Access Protocol) là giao thức sử dụng XML để định nghĩa dữ liệu dạng thuần văn bản (plain text) thông qua HTTP. SOAP là cách mà Web Service sử dụng để truyền tải dữ liệu. Vì dựa trên XML nên SOAP là một giao thức không phụ thuộc platform cũng như bất kì ngôn ngữ lập trình nào.
Ví dụ SOAP request

  POST /Quotation HTTP/1.0  Host: www.xyz.org  Content-Type: text/xml; charset=utf-8  Content-Length: nnn    
<?xml version="1.0"?>  
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding" >       
<SOAP-ENV:Body xmlns:m="http://www.xyz.org/quotations" >              
<m:GetQuotation>           
<m:QuotationsName>MiscroSoft
</m:QuotationsName>        
</m:GetQuotation>               
</SOAP-ENV:Body>        
</SOAP-ENV:Envelope> 

Dưới đây là một số lý do có thể khiến bạn muốn lựa chọn SOAP cho dịch vụ web của mình.

  • WS-Security SOAP không chỉ hỗ trợ SSL (giống như REST) mà còn hỗ trợ WS-Security, bổ sung thêm một số tính năng enterprise security. Hỗ trợ nhận dạng thông qua các trung gian, không chỉ là point-to-point như SSL. Nó được dùng khi muốn xây dựng những web service đảm bảo và tin cậy. Web Service Security đảm bảo cho tính an toàn, sự toàn vẹn thông điệp và tính tin cậy của thông điệp.
  • WS-AtomicTransaction Khi muốn có các giao dịch ACID qua một dịch vụ, bạn sẽ phải cần SOAP. Mặc dù REST có hỗ trợ các transactions, nhưng nó không toàn diện và cũng không phù hợp với ACID. REST bị hạn chế bởi HTTP nên không thể cung cấp cam kết hai pha trên các tài nguyên giao dịch phân tán, nhưng SOAP lại có thể àm được điều này. Thật may mắn các giao dịch ACID gần như không có ý nghĩa nhiều đối với các dịch vụ internet thông thường. Nhưng đôi khi các ứng dụng doanh nghiệp lại cần mức độ tin cậy giao dịch này.
  • WS-ReliableMessaging REST không có hệ thống báo lỗi chuẩn và mong muốn khách hàng giải quyết các lỗi communicate bằng cách retry và … retry… (yaoming). SOAP đã thành công trong việc xử lý những tình huống này và cung cấp end-to-end một cách tin cậy thông qua các trung gian SOAP

SOAP rõ ràng là hữu ích và quan trọng. Ví dụ, Nếu bạn viết một ứng dụng để giao tiếp với ngân hàng chắc chắn bạn sẽ cần phải sử dụng SOAP. Tất cả ba tính năng trên là bắt buộc đối với các giao dịch ngân hàng. Ví dụ: nếu tôi chuyển tiền từ tài khoản này sang tài khoản khác, tôi cần phải chắc chắn rằng nó đã hoàn tất. Việc cứ cố gắng retry thực sự là quá kinh dị nếu giao dịch thành công lần đầu tiên nhưng thông báo tôi nhận được lại là thất bại :((

Qua bài viết ngắn của tôi, có lẽ các bạn đã tìm ra cho mình dịch vụ web phù hợp với ứng dụng của mình. Và hãy sử dụng các dịch vụ web một các đúng đủ, hữu ích và tạo cảm giác an tâm cho người dùng cuối 😀

Nguồn tham khảo:

http://spf13.com/post/soap-vs-rest/
https://www.w3schools.com/xml/xml_soap.asp

Leave a Reply

avatar
  Subscribe  
Notify of