Web Services là gì? Tìm hiểu về Web Service cho người mới

1966
22-06-2020
Web Services là gì? Tìm hiểu về Web Service cho người mới

Web services được biết đến là một khái niệm quan trọng trong ngành công nghiệp phần mềm. Tuy nhiên nhiều người vẫn chưa thực sự hiểu rõ về web service. Bài viết này Bizfly Cloud sẽ giải đáp các thắc mắc Web service là gì, nó bao gồm những gì? Tại sao web service quan trọng và những điều bạn cần biết về web service.

Web Services là gì?

Một cách ngắn gọn thì web services (hay "dịch vụ web") là một mô-đun phần mềm được thiết kế để thực hiện một nhóm các tác vụ nhất định. Các web services có thể được truy cập và sử dụng thông qua mạng internet dưới dạng dịch vụ. Khi đó, web service sẽ cung cấp các chức năng của nó cho máy khách để người dùng đạt được các mục tiêu sử dụng nhất định.

Có thể nói trên mạng và ở trong các tài liệu chuyên ngành có khá nhiều định nghĩa khác nhau về web services. Tuy nhiên ta có thể hiểu, để một dịch vụ được coi là web service thì cần thỏa mãn các tiêu chí sau:

  • Có sẵn ở trên internet hoặc trong mạng nội bộ,
  • Sử dụng một hệ thống XML messaging đúng tiêu chuẩn,
  • Hoàn toàn không bị trói buộc bởi một hệ điều hành hay ngôn ngữ lập trình nào,
  • Có thể tự diễn tả thông qua một cấu trúc XML đơn giản,
  • Được tìm kiếm dễ dàng bằng những phương thức đơn giản (simple mechanism).

Các thành phần của Web Service

Trong vài năm qua, ba công nghệ chính đã nổi lên như các tiêu chuẩn trên toàn thế giới tạo nên cốt lõi của công nghệ web service ngày nay. Chúng bao gồm:

SOAP (Simple Object Access Protocol): SOAP là một giao thức dựa trên XML để trao đổi thông tin giữa các máy tính. Sử dụng để gửi thông điệp giữa các ứng dụng với nhau. SOAP đã được thiết kế thông qua qua internet, và nó đơn giản, dễ mở rộng. 

WSDL (Web Services Description Language): Được thiết kế bởi Microsoft và IBM, WSDL là một ngôn ngữ chuẩn chung dựa trên XML để mô tả các dịch vụ web và cách truy cập chúng. 

UDDI (Universal Description, Discovery & Integration): UDDI là một tiêu chuẩn dựa trên XML để mô tả, xuất bản và tìm kiếm các dịch vụ web. UDDI là một open framework và là nền tảng độc lập. UDDI có thể giao tiếp qua SOAP, CORBA và Giao thức RMI Java. UDDI sử dụng WSDL để mô tả giao diện cho các dịch vụ web.  

Lợi ích khi sử dụng web service

Web Service mang lại khá nhiều lợi ích đối với doanh nghiệp cũng như người sử dụng. Dưới đây là một vài  lợi ích của việc sử dụng dịch vụ web.

Hiển thị chức năng hiện có trên mạng

Một dịch vụ web là một đơn vị mã được quản lý có thể được gọi từ xa bằng cách sử dụng HTTP. Được kích hoạt bằng cách sử dụng các yêu cầu HTTP. Các dịch vụ web cho phép bạn hiển thị chức năng của mã hiện có qua mạng. Khi nó được hiển thị trên mạng, ứng dụng khác có thể sử dụng chức năng của chương trình.

Khả năng tương tác

Web service cho phép các ứng dụng khác nhau giao tiếp với nhau và chia sẻ dữ liệu, dịch vụ với nhau. Các ứng dụng khác cũng có thể sử dụng các dịch vụ web. Ví dụ, một ứng dụng VB hoặc .NET có thể giao tiếp với các dịch vụ web Java và ngược lại. Các dịch vụ web được sử dụng để làm cho nền tảng ứng dụng và công nghệ trở nên độc lập.

Giao thức chuẩn hóa

Web service sử dụng giao thức chuẩn hóa để giao tiếp. Tất cả bốn lớp (Truyền tải dịch vụ, Nhắn tin XML, Mô tả dịch vụ và các layer Khám phá dịch vụ) đều sử dụng các giao thức tách biệt trong stack giao thức của web services. Việc chuẩn hóa stack giao thức này mang lại cho doanh nghiệp nhiều lợi thế như có nhiều lựa chọn, giảm chi phí do cạnh tranh và tăng chất lượng.

Truyền thông chi phí thấp

Các dịch vụ web sử dụng SOAP qua giao thức HTTP, vì vậy bạn hoàn toàn có thể triển khai các dịch vụ web với một đường truyền internet khiêm tốn. Giải pháp này ít tốn kém hơn nhiều so với các giải pháp độc quyền như EDI / B2B. Bên cạnh SOAP qua HTTP, các dịch vụ web cũng có thể được triển khai trên các cơ chế truyền tải đáng tin cậy khác như FTP.

Web service hoạt động như thế nào?

Web Services là gì? Hoạt động của Web Service

Hoạt động của Web Service

Một web service cho phép giao tiếp giữa các ứng dụng khác nhau bằng cách sử dụng các tiêu chuẩn mở như HTML, XML, WSDL và SOAP. Thông thường, một dịch vụ web cơ bản sẽ sử dụng:

  • XML để gắn thẻ dữ liệu
  • SOAP để chuyển tin nhắn
  • WSDL để mô tả sự sẵn có của dịch vụ.

Bạn có thể xây dựng một dịch vụ web Java-based trên Solaris, vốn có thể truy cập được từ Visual Basic chạy trên Windows.

Bạn cũng có thể sử dụng C # để xây dựng các dịch vụ web trên Windows có thể được gọi từ ứng dụng web của bạn dựa trên JavaServer Pages (JSP) và chạy trên Linux.

Kiến trúc của Web Service

Có hai cách để phân tích kiến trúc của một dịch vụ web:

  • Dựa vào vai trò của từng thành phần trong web service.
  • Dựa vào các protocol stacks của web service.

Vai trò dịch vụ web

Có ba vai trò chính trong kiến trúc dịch vụ web:

  • Service Provider: Đây là nhà cung cấp dịch vụ web. Nhà cung cấp dịch vụ triển khai dịch vụ và cung cấp dịch vụ này trên Internet.
  • Service Requestor: Đây là bất kỳ người tiêu dùng của dịch vụ web. Người yêu cầu sử dụng một dịch vụ web bằng cách mở kết nối mạng và gửi yêu cầu XML.
  • Service Registry: Đây là một thư mục logic tập trung của dịch vụ web. Registry cung cấp một không gian tập trung, nơi các nhà phát triển có thể xuất bản các dịch vụ mới hoặc tìm các dịch vụ hiện có. Do đó, nó có vai trò như một nhà thanh toán bù trừ tập trung cho các công ty và dịch vụ của họ.

Protocol Stack trong dịch vụ web

Cách thứ hai để kiểm tra kiến trúc dịch vụ web là dựa vào protocol stack của dịch vụ web. Các stack vẫn đang được phát triển, nhưng hiện tại có bốn lớp chính:

Web Services là gì? Kiểm tra kiến trúc dịch vụ web dễ dàng bằng protocol stack

Kiểm tra kiến trúc dịch vụ web dễ dàng bằng protocol stack

  • Service Transport: Lớp này chịu trách nhiệm vận chuyển tin nhắn giữa các ứng dụng. Hiện tại, lớp này bao gồm Giao thức truyền tải văn bản Hyper (HTTP), Giao thức chuyển thư đơn giản (SMTP), Giao thức truyền tệp (FTP) và các giao thức mới hơn như Giao thức trao đổi mở rộng khối (BEEP).
  • XML messaging: Lớp này chịu trách nhiệm mã hóa các thông điệp theo định dạng XML phổ biến để có thể hiểu các thông điệp ở hai đầu. Hiện tại, lớp này bao gồm XML-RPC và SOAP.
  • Service Description: Lớp này chịu trách nhiệm mô tả giao diện công cộng cho một dịch vụ web cụ thể. Hiện tại, mô tả dịch vụ được xử lý thông qua Ngôn ngữ mô tả dịch vụ web (WSDL).
  • Service Discovery: Lớp này chịu trách nhiệm tập trung các dịch vụ vào một sổ đăng ký chung và cung cấp chức năng xuất bản / tìm kiếm dễ dàng. Hiện tại, khám phá dịch vụ được xử lý thông qua Mô tả chung, Khám phá và Tích hợp (UDDI).
  • Khi các dịch vụ web phát triển, các lớp bổ sung có thể được thêm vào và các công nghệ bổ sung có thể được thêm vào mỗi lớp.

Vấn đề bảo mật của Web Service

Bảo mật là rất quan trọng đối với các dịch vụ web. Tuy nhiên, cả các thông số XML-RPC và SOAP đều không thực hiện bất kỳ yêu cầu xác thực hoặc bảo mật rõ ràng nào.

Có ba vấn đề bảo mật cụ thể với các dịch vụ web:

  • Confidentiality
  • Authentication
  • Network Security

Confidentiality

Nếu client gửi yêu cầu XML đến máy chủ, chúng ta có thể đảm bảo rằng thông tin liên lạc được giữ bí mật không?

Câu trả lời nằm ở đây:

XML-RPC và SOAP chạy chủ yếu trên HTTP.

HTTP có hỗ trợ SSL (Secure Socket Layer).

Giao tiếp có thể được mã hóa thông qua SSL - một công nghệ đã được chứng minh và triển khai rộng rãi.

Một dịch vụ web có thể bao gồm một chuỗi các ứng dụng. Ví dụ: một dịch vụ lớn có thể liên kết các dịch vụ của ba ứng dụng khác. Trong trường hợp này, SSL là không đủ; các thông điệp cần được mã hóa tại mỗi nút dọc theo đường dẫn dịch vụ và mỗi nút đại diện cho một liên kết yếu tiềm năng trong chuỗi. Hiện tại, không có giải pháp nào được thống nhất cho vấn đề này, nhưng một giải pháp đầy hứa hẹn là Tiêu chuẩn mã hóa XML của W3C. Tiêu chuẩn này cung cấp một khung để mã hóa và giải mã toàn bộ tài liệu XML hoặc chỉ một phần của tài liệu XML. Bạn có thể kiểm tra nó tại www.w3.org/Encoding

Authentication

Web Services là gì? Authentication giúp bảo mật của Web Service

Authentication giúp bảo mật của Web Service

Nếu một client kết nối với một dịch vụ web, làm thế nào để chúng ta xác định người dùng? Người dùng có được phép sử dụng dịch vụ không?

Dưới đây là một vài phương án xác thực, tuy nhiên không có một quy chuẩn nào được cho là hoàn hảo:

HTTP bao gồm hỗ trợ tích hợp cho xác thực Basic and Digest. Do đó, các dịch vụ có thể được bảo vệ theo cách tương tự như các tài liệu HTML hiện đang được bảo vệ.

Chữ ký số SOAP (SOAP-DSIG) tận dụng mã khóa công khai (public key) để ký điện tử các thông điệp SOAP. Nó cho phép máy khách hoặc máy chủ xác nhận danh tính của bên kia. Tham khảo tại www.w3.org/TR/SOAP-dsig.

Tổ chức OASIS (Organization for the Advancement of Structured Information Standards) đang phát triển với Ngôn ngữ markup xác thực bảo mật SAML (Security Assertion Markup Language).

Network Security

Hiện tại không có câu trả lời tuyệt đối cho vấn đề này, và nó đã là chủ đề của nhiều cuộc tranh luận. Hiện tại, nếu bạn thực sự có ý định lọc ra các thông điệp SOAP hoặc XML-RPC, có một cách là lọc ra tất cả các POST HTTP request đặt loại nội dung của chúng thành text/xml.

Một cách khác là lọc thuộc tính tiêu đề HTTP SOAPAction. Các nhà cung cấp tường lửa hiện đang phát triển các công cụ được thiết kế rõ ràng để lọc lưu lượng dịch vụ web.

Theo BizFly Cloud

>>> Có thể bạn quan tâm: Web Services: REST & SOAP - đâu sẽ là sự lựa chọn hợp lý cho bạn?

BizFly Cloud là hệ sinh thái điện toán đám mây được vận hành bởi VCCorp - Công ty dẫn đầu trong lĩnh vực truyền thông và internet tại Việt Nam. Với đội ngũ kỹ thuật viên trình độ cao và kinh nghiệm lâu năm làm việc trên các công nghệ khác nhau như cloud, mobile, web..., chúng tôi có đủ khả năng để hỗ trợ đưa ra những lời khuyên hữu ích và công nghệ toàn diện giúp doanh nghiệp chuyển đổi số thành công. Dành cho độc giả quan tâm tới các dịch vụ đám mây do BizFly Cloud cung cấp có thể truy cập tại đây.

SHARE