Dịch vụ Web là gì? Archikiến trúc, các loại, ví dụ

Dịch vụ Web là gì?

Dịch vụ web là một phương tiện được tiêu chuẩn hóa để truyền bá thông tin liên lạc giữa các ứng dụng máy khách và máy chủ trên WWW (World Wide Web). Dịch vụ web là một mô-đun phần mềm được thiết kế để thực hiện một số tác vụ nhất định.

  • Các dịch vụ web trong điện toán đám mây có thể được tìm kiếm qua mạng và cũng có thể được gọi tương ứng.
  • Khi được gọi, dịch vụ web sẽ có thể cung cấp chức năng cho máy khách để gọi dịch vụ web đó.

Dịch vụ web hoạt động như thế nào?

Cách thức hoạt động của dịch vụ web
Cách thức hoạt động của dịch vụ web

Sơ đồ trên cho thấy một cái nhìn rất đơn giản về cách thức hoạt động thực sự của một dịch vụ web. Máy khách sẽ gọi một loạt lệnh gọi dịch vụ web thông qua các yêu cầu tới máy chủ sẽ lưu trữ dịch vụ web thực tế.

Những yêu cầu này được thực hiện thông qua cái gọi là cuộc gọi thủ tục từ xa. Cuộc gọi thủ tục từ xa (RPC) là các cuộc gọi được thực hiện tới các phương thức được lưu trữ bởi dịch vụ web có liên quan.

Ví dụ, Amazon cung cấp dịch vụ web cung cấp giá cho các sản phẩm được bán trực tuyến qua amazon.com. Lớp giao diện hoặc lớp trình bày có thể ở dạng .Net hoặc Java nhưng ngôn ngữ lập trình sẽ có khả năng giao tiếp với dịch vụ web.

Thành phần chính của thiết kế dịch vụ web là dữ liệu được truyền giữa máy khách và máy chủ và đó là XML. XML (Ngôn ngữ đánh dấu mở rộng) là một bản sao của HTML và là ngôn ngữ trung gian dễ hiểu được nhiều ngôn ngữ lập trình hiểu.

Vì vậy, khi các ứng dụng giao tiếp với nhau, chúng thực sự giao tiếp bằng XML. Điều này cung cấp một nền tảng chung cho các ứng dụng được phát triển bằng nhiều ngôn ngữ lập trình khác nhau để giao tiếp với nhau.

Các dịch vụ web sử dụng thứ được gọi là SOAP (Giao thức truy cập đối tượng đơn giản) để gửi dữ liệu XML giữa các ứng dụng. Dữ liệu được gửi qua HTTP thông thường. Dữ liệu được gửi từ dịch vụ web đến ứng dụng được gọi là tin nhắn SOAP. Thông báo SOAP không là gì ngoài một tài liệu XML. Vì tài liệu được viết bằng XML nên ứng dụng khách gọi dịch vụ web có thể được viết bằng bất kỳ ngôn ngữ lập trình nào.

Tại sao bạn cần một Dịch vụ Web?

Các ứng dụng kinh doanh hiện đại sử dụng nhiều nền tảng lập trình khác nhau để phát triển các ứng dụng dựa trên web. Một số ứng dụng có thể được phát triển trong Java, một số khác trong .Net, trong khi một số khác trong Angular JS, Node.js, v.v.

Thông thường, các ứng dụng không đồng nhất này cần một số loại giao tiếp để xảy ra giữa chúng. Vì chúng được xây dựng bằng các ngôn ngữ phát triển khác nhau, nên thực sự khó để đảm bảo giao tiếp chính xác giữa các ứng dụng.

Đây là nơi các dịch vụ web xuất hiện. Các dịch vụ web cung cấp một nền tảng chung cho phép nhiều ứng dụng được xây dựng trên nhiều nền tảng khác nhau. ngôn ngữ lập trình có khả năng giao tiếp với nhau.

Loại dịch vụ web

Chủ yếu có hai loại dịch vụ web.

  1. Dịch vụ web SOAP.
  2. Dịch vụ web RESTful.

Để một dịch vụ web có đầy đủ chức năng, cần phải có một số thành phần nhất định. Các thành phần này cần phải có mặt bất kể ngôn ngữ phát triển nào được sử dụng để lập trình dịch vụ web.

Chúng ta hãy xem xét các thành phần này chi tiết hơn.

SOAP (Giao thức truy cập đối tượng đơn giản)

SOAP được biết đến như một giao thức nhắn tin độc lập với việc vận chuyển. SOAP dựa trên việc truyền dữ liệu XML dưới dạng Thông báo SOAP. Mỗi thông báo có một thứ được gọi là tài liệu XML. Chỉ cấu trúc của tài liệu XML tuân theo một mẫu cụ thể chứ không tuân theo nội dung. Phần tốt nhất của dịch vụ Web và SOAP là tất cả đều được gửi qua HTTP, đây là giao thức web tiêu chuẩn.

Đây là nội dung của một thông báo SOAP

  • Mỗi tài liệu SOAP cần phải có một phần tử gốc được gọi là yếu tố. Phần tử gốc là phần tử đầu tiên trong tài liệu XML.
  • “Phong bì” lần lượt được chia thành 2 phần. Đầu tiên là tiêu đề và tiếp theo là nội dung.
  • Tiêu đề chứa dữ liệu định tuyến về cơ bản là thông tin cho biết tài liệu XML cần được gửi đến máy khách nào.
  • Phần thân sẽ chứa thông điệp thực tế.

Sơ đồ bên dưới hiển thị một ví dụ đơn giản về giao tiếp qua SOAP.

Giao thức SOAP

Giao thức SOAP

Chúng ta sẽ thảo luận chi tiết về SOAP trong phần này hướng dẫn.

WSDL (Ngôn ngữ mô tả dịch vụ web)

Không thể sử dụng dịch vụ web nếu không tìm thấy nó. Máy khách gọi dịch vụ web phải biết dịch vụ web thực sự nằm ở đâu.

Thứ hai, ứng dụng khách cần biết dịch vụ web thực sự làm gì để có thể gọi đúng dịch vụ web. Điều này được thực hiện với sự trợ giúp của WSDL, được gọi là ngôn ngữ mô tả dịch vụ Web. Tệp WSDL lại là một tệp dựa trên XML, về cơ bản sẽ cho ứng dụng khách biết dịch vụ web làm gì. Bằng cách sử dụng tài liệu WSDL, ứng dụng khách sẽ có thể hiểu dịch vụ web nằm ở đâu và có thể sử dụng nó như thế nào.

Ví dụ về dịch vụ web

Dưới đây là ví dụ về dịch vụ Web của tệp WSDL.

<definitions>	
   <message name="TutorialRequest">
      <part name="TutorialID" type="xsd:string"/>
   </message>
     
   <message name="TutorialResponse">
      <part name="TutorialName" type="xsd:string"/>
   </message>

   <portType name="Tutorial_PortType">
      <operation name="Tutorial">
         <input message="tns:TutorialRequest"/>
         <output message="tns:TutorialResponse"/>
      </operation>
   </portType>

   <binding name="Tutorial_Binding" type="tns:Tutorial_PortType">
      <soap:binding style="rpc"
         transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="Tutorial">
         <soap:operation soapAction="Tutorial"/>
         <input>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:Tutorialservice"
               use="encoded"/>
         </input>
         
		 <output>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:Tutorialservice"
               use="encoded"/>
         </output>
      </operation>
   </binding>
</definitions>

Các khía cạnh quan trọng cần lưu ý về các ví dụ khai báo WSDL ở trên của dịch vụ web như sau:

  1. – Tham số thông báo trong định nghĩa WSDL được sử dụng để xác định các thành phần dữ liệu khác nhau cho từng thao tác được thực hiện bởi dịch vụ web. Vì vậy, trong các ví dụ về dịch vụ web ở trên, chúng ta có 2 tin nhắn có thể được trao đổi giữa dịch vụ web và ứng dụng khách, một tin nhắn là “TutorialRequest” và tin nhắn còn lại là thao tác “TutorialResponse”. TutorialRequest chứa một phần tử có tên là “TutorialID” thuộc loại chuỗi. Tương tự, thao tác TutorialResponse chứa một phần tử có tên là “TutorialName” cũng là một chuỗi kiểu.
  2. – Điều này thực sự mô tả hoạt động có thể được thực hiện bởi dịch vụ web, trong trường hợp của chúng tôi được gọi là Hướng dẫn. Thao tác này có thể mất 2 tin nhắn; một là thông báo đầu vào và một là thông báo đầu ra.
  3. – Phần tử này chứa giao thức được sử dụng. Vì vậy, trong trường hợp của chúng tôi, chúng tôi đang xác định nó để sử dụng http (http://schemas.xmlsoap.org/soap/http). Chúng tôi cũng chỉ định các chi tiết khác cho phần nội dung của hoạt động, như không gian tên và liệu tin nhắn có nên được mã hóa hay không.

Chúng ta sẽ thảo luận chi tiết về “WDSL” trong phần này hướng dẫn.

phổ cập Description, Khám phá và Tích hợp (UDDI)

UDDI là một tiêu chuẩn để mô tả, xuất bản và khám phá các dịch vụ web được cung cấp bởi một nhà cung cấp dịch vụ cụ thể. Nó cung cấp một đặc điểm kỹ thuật giúp lưu trữ thông tin trên các dịch vụ web.

Bây giờ chúng ta đã thảo luận trong chủ đề trước về WSDL và cách nó chứa thông tin về chức năng thực sự của dịch vụ Web. Nhưng làm cách nào một ứng dụng khách có thể định vị tệp WSDL để hiểu các hoạt động khác nhau được cung cấp bởi một dịch vụ web? Vì vậy, UDDI là câu trả lời cho vấn đề này và cung cấp một kho lưu trữ trên đó các tệp WSDL có thể được lưu trữ. Vì vậy, ứng dụng khách sẽ có toàn quyền truy cập vào UDDI, hoạt động như một cơ sở dữ liệu chứa tất cả các tệp WSDL.

Giống như danh bạ điện thoại có tên, địa chỉ và số điện thoại của một người cụ thể, cơ quan đăng ký UDDI sẽ có thông tin liên quan cho dịch vụ web theo cách tương tự.. Để ứng dụng khách biết nó có thể được tìm thấy ở đâu.

Ưu điểm của dịch vụ web

Chúng tôi đã hiểu lý do tại sao các dịch vụ web xuất hiện ngay từ đầu, đó là cung cấp một nền tảng có thể cho phép các ứng dụng khác nhau giao tiếp với nhau.

Nhưng chúng ta hãy xem danh sách các ưu điểm của dịch vụ web để biết lý do tại sao việc sử dụng dịch vụ web lại quan trọng.

  1. Hiển thị chức năng kinh doanh trên mạng – Dịch vụ web là một đơn vị mã được quản lý cung cấp một số loại chức năng cho ứng dụng khách hoặc người dùng cuối. Chức năng này có thể được gọi qua giao thức HTTP, nghĩa là nó cũng có thể được gọi qua internet. Ngày nay tất cả các ứng dụng đều có trên internet, điều này làm cho mục đích của các dịch vụ Web trở nên hữu ích hơn. Điều đó có nghĩa là dịch vụ web có thể ở bất kỳ đâu trên internet và cung cấp các chức năng cần thiết theo yêu cầu.
  2. Khả năng tương tác giữa các ứng dụng – Dịch vụ web cho phép các ứng dụng khác nhau giao tiếp với nhau và chia sẻ dữ liệu cũng như dịch vụ với nhau. Tất cả các loại ứng dụng có thể nói chuyện với nhau. Vì vậy, thay vì viết mã cụ thể mà chỉ các ứng dụng cụ thể mới có thể hiểu được, giờ đây bạn có thể viết mã chung mà tất cả các ứng dụng đều có thể hiểu được.
  3. Một giao thức được tiêu chuẩn hóa mà mọi người đều hiểu – Dịch vụ web sử dụng giao thức công nghiệp được tiêu chuẩn hóa để liên lạc. Tất cả bốn lớp (Vận chuyển dịch vụ, Nhắn tin XML, Dịch vụ Descriptcác lớp ion và Khám phá dịch vụ) sử dụng các giao thức được xác định rõ ràng trong ngăn xếp giao thức dịch vụ web.
  4. Giảm chi phí liên lạc – Các dịch vụ web sử dụng SOAP qua giao thức HTTP, vì vậy bạn có thể sử dụng Internet chi phí thấp hiện có của mình để triển khai các dịch vụ web.

Dịch vụ website Archikiến trúc

Mỗi khuôn khổ cần một số loại kiến ​​trúc để đảm bảo toàn bộ khuôn khổ hoạt động như mong muốn, tương tự như trong các dịch vụ web. Dịch vụ website Archikiến trúc bao gồm ba vai trò riêng biệt như được đưa ra dưới đây:

  1. Provider – Nhà cung cấp tạo ra dịch vụ web và cung cấp dịch vụ đó cho ứng dụng khách muốn sử dụng nó.
  2. Người yêu cầu – Người yêu cầu không gì khác ngoài ứng dụng khách cần liên hệ với dịch vụ web. Ứng dụng khách có thể là .Net, Javahoặc bất kỳ ứng dụng dựa trên ngôn ngữ nào khác tìm kiếm một số loại chức năng thông qua dịch vụ web.
  3. Môi giới – Nhà môi giới không gì khác ngoài ứng dụng cung cấp quyền truy cập vào UDDI. UDDI, như đã thảo luận trong chủ đề trước, cho phép ứng dụng khách định vị dịch vụ web.

Sơ đồ bên dưới minh họa cách Nhà cung cấp dịch vụ, người yêu cầu dịch vụ và cơ quan đăng ký dịch vụ tương tác với nhau.

Dịch vụ website Archikiến trúc

Dịch vụ website Archikiến trúc
  1. Xuất bản – Nhà cung cấp thông báo cho nhà môi giới (đăng ký dịch vụ) về sự tồn tại của dịch vụ web bằng cách sử dụng giao diện xuất bản của nhà môi giới để làm cho dịch vụ có thể truy cập được đối với khách hàng
  2. Tìm kiếm – Người yêu cầu tham khảo ý kiến ​​của nhà môi giới để tìm một dịch vụ web được xuất bản
  3. Trói buộc – Với thông tin thu được từ nhà môi giới (đăng ký dịch vụ) về dịch vụ web, người yêu cầu có thể liên kết hoặc gọi dịch vụ web.

Đặc điểm dịch vụ web

Các dịch vụ web có các đặc điểm hành vi đặc biệt sau:

  1. Chúng dựa trên XML – Dịch vụ Web sử dụng XML để thể hiện dữ liệu ở lớp biểu diễn và vận chuyển dữ liệu. Việc sử dụng XML sẽ loại bỏ mọi loại phụ thuộc vào mạng, hệ điều hành hoặc nền tảng vì XML là ngôn ngữ chung được tất cả mọi người hiểu.
  2. Khớp nối lỏng lẻo – Kết nối lỏng lẻo có nghĩa là máy khách và dịch vụ web không bị ràng buộc với nhau, điều này có nghĩa là ngay cả khi dịch vụ web thay đổi theo thời gian, nó cũng không nên thay đổi cách máy khách gọi dịch vụ web. Việc áp dụng kiến ​​trúc kết nối lỏng lẻo có xu hướng làm cho các hệ thống phần mềm dễ quản lý hơn và cho phép tích hợp đơn giản hơn giữa các hệ thống khác nhau.
  3. Syncchức năng hronous hoặc Asynchronous – Synchronicity đề cập đến sự ràng buộc của máy khách với việc thực hiện dịch vụ. Trong các hoạt động đồng bộ, máy khách thực sự sẽ đợi dịch vụ web hoàn tất một hoạt động. Một ví dụ về điều này có lẽ là một kịch bản trong đó một hoạt động đọc và ghi cơ sở dữ liệu đang được thực hiện. Nếu dữ liệu được đọc từ một cơ sở dữ liệu và sau đó được ghi vào một cơ sở dữ liệu khác, thì các hoạt động phải được thực hiện theo cách tuần tự. Các hoạt động không đồng bộ cho phép máy khách gọi một dịch vụ và sau đó thực hiện các chức năng khác song song. Đây là một trong những kỹ thuật phổ biến và có lẽ là được ưa chuộng nhất để đảm bảo rằng các dịch vụ khác không bị dừng khi một hoạt động cụ thể đang được thực hiện.
  4. Khả năng hỗ trợ các cuộc gọi thủ tục từ xa (RPC) – Dịch vụ web cho phép máy khách gọi các thủ tục, hàm và phương thức trên các đối tượng từ xa bằng giao thức dựa trên XML. Các thủ tục từ xa hiển thị các tham số đầu vào và đầu ra mà dịch vụ web phải hỗ trợ.
  5. Hỗ trợ trao đổi tài liệu – Một trong những lợi ích chính của XML là cách chung của nó để biểu diễn không chỉ dữ liệu mà còn cả các tài liệu phức tạp. Các tài liệu này có thể đơn giản như biểu diễn địa chỉ hiện tại hoặc có thể phức tạp như biểu diễn toàn bộ một cuốn sách.