Web Service

Web Service là gì?

Theo định nghĩa từ Wikipedia:

“…A web service is a method of communication between two electronic devices over World Wide Web. It is a software function provided at a network address over the web with the service always on as in the concept of utility computing.

Như vậy Web Service là 1 phương thức trao đổi thông tin giữa 2 thiết bị điện tử, 2 ứng dụng hay 2 hệ thống, hoạt động trên môi trường World Wide Web.

Web Service và Web Site khác nhau như thế nào?

Web Site cung cấp dữ liệu được trình bày trên trình duyệt theo những định dạng mà con người có thể đọc được như ngôn ngữ tự nhiên, hình ảnh, âm thanh… Web Site về cơ bản là những trang HTML chứa dữ liệu được định dạng để con người có thể đọc được khi chúng được trình diễn trên trình duyệt Web.

Web Service cung cấp các dịch vụ cho các ứng dụng phần mềm khác. Dựa trên việc nhận 1 yêu cầu từ các ứng dụng này, nó tạo ra 1 phản hồi. Yêu cầu này có thể chứa dữ liệu đầu vào cho các dịch vụ để xử lý và dựa trên dữ liệu nhập vào mà dịch vụ đó trả về kết quả.

Kết quả trả về bởi các  Web Service thường chỉ có ý nghĩa với các phần mềm, tức là chúng được tổ chức theo những định dạng thường khó đọc đối với con người. Các định dạng kết quả phổ biến là XML và JSON. Chúng là những định dạng dễ phân tích và sử dụng hiện nay.

Chúng ta có thể hiểu đơn giản như sau:

  • Web Site => trả về thông tin, dữ liệu => cho người
  • Web Service => trả về thông tin, dữ liệu => cho ứng dụng, phần mềm khác.

1 Web Site có thể có hoặc không sử dụng Web Service.

  • Ví dụ về Web Site: Chúng ta có thể truy cập đến website https://www.google.com.vn/maps và sử dụng nó để tìm kiếm địa chỉ của chúng ta trên bản đồ.
  • Ví dụ về Web Service: Chúng ta đã xây dựng website của riêng mình, và trên website đó chúng ta muốn hiển thị địa chỉ của những người đã truy cập vào website của chúng ta. Trong trường hợp này, chúng ta có thể gọi 1 Web Service được cung cấp bởi Google Maps, truyền địa chỉ đến Web Service đó và nó sẽ trả về 1 bản đồ. Và giờ chúng ta có thể hiển thị bản đồ đó trên website của chúng ta.

Các loại Web Service

Có 2 loại Web Service khác nhau là:

  • SOAP (Simple Object Access Protocol)
  • ReST (Representational State Transfer)

ReST và SOAP là tập các đặc tả thông tin được dùng trong việc thực hiện các Web Service. Chúng là những giao thức thông điệp được dùng để trao đổi thông tin giữa 2 chương trình. Việc trao đổi thông tin này là 1 chiều.

 SOAP (Simple Object Access Protocol)

SOAP là Web Service được xây dựng dựa trên XML. Nó sử dụng XML như 1 cơ chế cho việc trao đổi thông tin (1 chiều) giữa 2 chương trình (hay 2 điểm) trên tầng vận chuyển.

SOAP được phát triển bởi Microsoft để thay thế cho 2 công nghệ không thành công trước đó là DCOM (Distributed Component Object Model) và CORBA (Common Object Request Broker Architecture). 2 công nghệ này thất bại do chúng sử dụng các thông điệp nhị phân, thay cho việc sử dụng thông điệp XML như của SOAP.

Dù cho việc đàm phán và truyền tải thông điệp của SOAP không dựa trên bất cứ giao thức vận chuyển cụ thể nào nhưng HTTP (Hyper Text Transfer Protocol) hay SMTP (Simple Mail Transfer Protocol) là 2 giao thức vận chuyển phổ biến nhất được dùng với SOAP. Tương tự, SOAP không dựa trên bất kỳ ngôn ngữ lập trình hoặc hệ điều hành cụ thể nào miễn là chúng hiểu XML và thông điệp SOAP.

Ví dụ, 1 chương trình chạy trên hệ điều hành Windows như Windows 7 có thể giao tiếp với 1 chương trình khác chạy trên hệ điều hành Linux. SOAP sẽ sử dụng XML và HTTP.

Thông điệp SOAP gồm 3 phần: envelope, header và body như trong hình bên dưới.

SOAP Message Architecture

SOAP Message Architecture

  • SOAP:envelope

Phần tử gốc của thông điệp SOAP, cho biết những gì có trong thông điệp SOAP và làm sao để xử lý chúng. Ứng dụng dựa vào SOAP:envelope và dễ dàng quyết định những gì có thể là thông điệp SOAP. Nó cũng giúp ứng dụng nhận diện phiên bản SOAP được sử dụng.

  • SOAP:header

SOAP:header là 1 phần tử tùy chọn của thông điệp SOAP. Phần tử này chứa các thông tin cụ thể của ứng dụng. Những thông tin này là những thông tin liên quan đến thông điệp SOAP và có thể là bất cứ gì như là phương thức chứng thực hoặc phương thức thanh toán .v.v… Mặc dù là 1 phần tử tùy chọn, nhưng nếu có thì SOAP:header nên là phần tử con đầu tiên của SOAP:envelope.

  • SOAP:body

SOAP:body là phần tử bắt buộc không giống như SOAP:header. Phần này chứa tất cả thông tin liên quan đến việc gọi và phản hồi của web service. Nội dung của thông điệp SOAP nằm ở phần này.

Thông điệp SOAP có định dạng như sau:

<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- Header elements. -->
</soap:Header>
<soap:Body>
<!-- Body elements. -->
</soap:Body>
</soap:Envelope>

Thông điệp SOAP có thể đi qua tường lửa và proxy mà không thực hiện bất kỳ thay đổi trên thông điệp.

XML được dùng để tạo các yêu cầu và nhận phản hồi trong SOAP có thể trở nên cực kỳ phức tạp. Trong vài ngôn ngữ lập trình, chúng ta cần xây dựng các ngôn ngữ này 1 cách thủ công. Tuy nhiên, những ngôn ngữ khác có thể sử dụng các đường tắt mà SOAP cung cấp; điều đó giúp chúng ta giảm được công sức khi tạo các yêu cầu và phân tích các phản hồi. Thực tế là khi làm việc với các ngôn ngữ .NET, chúng ta thậm chí không bao giờ thấy XML. Do đó, khó khăn trong việc sử dụng SOAP phụ thuộc 1 mức độ lớn vào ngôn ngữ lập trình mà ta sử dụng.

1 trong những chức năng quan trọng nhất của SOAP là xử lý lỗi. Nếu có 1 vấn đề với yêu cầu, phản hồi sẽ chứa thông tin lỗi mà chúng ta có thể dùng để giải quyết lỗi đó.

ReST ( Representational State Transfer)

ReST hay REST là 1 thành viên mới trong gia đình Web Service. REST cung cấp khả năng truy cập và thực hiện dễ dàng 1 Web Service với mục đích là hướng đến khả năng làm việc tốt nhất của Web Service trên môi trường Web.  Các Web Service dựa trên REST được sử dụng chủ yếu cho việc xây dựng các ứng dụng client-server trên HTTP.

Trong REST, mỗi tài nguyên được xác định và truy cập bởi 1 URI duy nhất và dữ liệu và chức năng hình thành nên 1 tài nguyên. REST định nghĩa tập các tác vụ và các tài nguyên tương ứng với các tác vụ này.

Thay vì sử dụng XML cho các yêu cầu/phản hồi, nó dựa trên 1 URI duy nhất và đó là lý do tại sao REST được xem như 1 sự thay thế “nhẹ cân” cho SOAP. Khi nó dựa trên URI như 1 bộ định danh tài nguyên, các tác vụ CRUD chuẩn của HTTP (GET, PUT, POST, DELETE, HEAD) có thể được thực hiện trên URI/tài nguyên đó.

SOAP chỉ cung cấp phản hồi ở định dạng XML trong khi REST không chỉ sử dụng XML. Dù các định dạng XML và HTML thường được sử dụng cho các phản hồi REST, REST còn có thể cung cấp các phản hồi theo các định dạng JSON (Javascript Object Notation), CSV (Command Seperated Value), và RSS (Really Simple Syndication).

REST là dịch vụ hạng nhẹ thay thế cho phần lớn các cơ chế như SOAP và RPC (Remote Procedure Call) nhưng nó không có sự khuyến nghị của W3C.

REST đơn giản, độc lập với ngôn ngữ và nền tảng và hoạt động dựa trên HTTP nên cũng có thể được sử dụng qua tường lửa.

Ví dụ về REST:

  1. Request: (URL – http://abc.com/)
    GET /
    Accept: application/json+userdb
  2. Response :
    200 OK
    Content-Type: application/json+userdb
    {
    "version": "1.0",
    "links": [
    {
    "href": "/category",
    "rel": "list",
    "method": "GET"
    },
    {
    "href": "/category",
    "rel": "create",
    "method": "POST"
    }
    ]
    }

SOAP vs REST

SOAP:

  • Độc lập ngôn ngữ, nền tảng và giao thức vận chuyển.
  • Làm việc tốt với các môi trường doanh nghiệp phân tán.
  • Đã được chuẩn hóa.
  • Khả năng mở rộng cao.
  • Có cơ chế xử lý lỗi.
  • Tự động hoàn toàn khi được dùng với những sản phẩm ngôn ngữ nhất định (ví dụ như những ngôn ngữ lập trình trong .NET).

REST:

  • Độc lập ngôn ngữ, nền tảng. REST chỉ hoạt động trên giao thức vận chuyển HTTP.
  • Không đòi hỏi các công cụ chi phí cao để tương tác với các Web Service.
  • Hiểu quả (SOAP sử dụng XML cho tất cả thông điệp, REST có thể sử dụng các định dạng thông điệp nhỏ hơn).
  • Nhanh (không yêu cầu xử lý mở rộng).
  • Gần gũi hơn với các công nghệ Web so với SOAP.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.