CHƯƠNG 1. TỔNG QUAN VỀ DỊCH VỤ WEB 1.1 Giới thiệu chung về dịch vụ web 1.1 Khái niệm về dịch vụ web Dịch vụ web (WS – Web Service) là một hệ thống phần mềm được thiết kế nhằm hỗ trợ sự tương tác giữa các máy tính có thể kết nối với nhau qua mạng (hình 1. Nó có giao diện được mô tả theo định dạng xử lý của máy (cụ thể là WSDL). Các hệ thống khác tương tác với dịch vụ web được mô tả qua các thông điệp SOAP, thường được truyền tải bằng HTTP với tuần tự hóa XML kết hợp với các tiêu chuẩn liên quan đến web khác.1 Mô hình dịch vụ web tổng quan Dịch vụ web có khả năng nhận một hoặc nhiều yêu cầu xử lý và sau đó đáp ứng lại bằng cách trả về các kết quả tương ứng.
Quá trình nhận yêu cầu và trả kết quả được thực hiện thông qua các giao diện đã được định nghĩa trước. Những giao diện này được mô tả theo định dạng mà đã được nhắc trước đó. Cụ thể dịch vụ web sẽ được xác định bằng các URL với chức năng trong việc đưa ra yêu cầu từ phía người dùng. Nó có thể cung cấp các chức năng khác nhau tùy thuộc vào dịch vụ web cung cấp.
Dịch vụ web sử dụng nền tảng ngôn ngữ là XML cho việc trao đổi dữ liệu. Các hệ thống tương tác với các dịch vụ web theo một phương pháp mà được quy định bằng cách sử dụng các thông điệp SOAP qua giao thức HTTP. Mô hình đặc thù của dịch vụ web vẫn là Client-Server. 1 Các dịch vụ web được chạy trên nền các máy chủ web, được tích hợp tạo nên một hệ thống lớn hơn.
Đó cũng là ứng dụng cơ bản của dịch vụ web trong phát triển các hệ thống. Trong các hệ thống này, các ứng dụng cần phải tích hợp, kết nối với cơ sở dữ liệu và các ứng dụng, dịch vụ khác và người dùng sẽ giao tiếp với cơ sở dữ liệu để tiến hành phân tích và đưa ra những kết quả cần thiết. Tuy nhiên, đối với một hệ thống lớn thì quá trình này thường là quá trình trung gian và được thực hiện ở bên thứ ba. Người dùng cuối chỉ đưa ra yêu cầu thông qua các URL và nhận kết quả mong muốn.2 Đặc điểm tính chất của dịch vụ web XML-Based: các dịch vụ web sử dụng XML làm nền tảng cho việc biểu diễn dữ liệu trong tầng giao vận.
Sử dụng XML sẽ loại bỏ các ràng buộc về mạng, hệ điều hành hoặc nền tảng xử lý. Điều đó cũng có nghĩa các ứng dụng dựa trên web sẽ có khả năng tương tác cao ở mức độ cốt lõi của chúng. Loosely Coupled: kết nối “lỏng lẻo” có thể gỡ bỏ các ràng buộc giữa các mô dun với nhau, mỗi hệ thống có thể tự quản lý độc lập để tăng hiệu suất, đem lại sự độc lập cho các bên. Cụ thể người dùng của một ứng dụng web sẽ không bị ràng buộc trực tiếp với dịch vụ web đó.
Giao diện dịch vụ web có thể thay đổi theo thời gian mà không ảnh hưởng đến khả năng tương tác với dịch vụ của khách hàng. Một hệ thống kết hợp chặc chẽ nghĩa là bao gồm sự liên kết chặt chẽ giữa máy khách và máy chủ, điều đó ngụ ý rằng nếu một giao diện thay đổi thì giao diện kia cũng phải được cập nhật. Việc chấp nhận một kiến trúc kết hợp “lỏng lẻo” có xu hướng làm cho các hệ thống phần mềm trở nên dễ dàng quản lý hơn và việc tích hợp giữa các hệ thống khác nhau cũng trở nên đơn giản hơn. Coarse-Grained: điều này ý nói đến các dữ liệu thô, các công nghệ hướng đối tượng trình bày các dịch vụ của mình thông qua các phương thức riêng lẻ.
Một phương pháp riêng lẻ là một hoạt động tốt để cung cấp bất kỳ khả năng hữu ích nào ở doanh nghiệp. Việc xây dựng dịch vụ, một chương trình hướng đối tượng đòi hỏi phải tạo ra các phương thức cơ bản sau đó kết hợp chúng lại với nhau để tạo thành một dịch vụ chi tiết được sử dụng bởi người dùng hoặc một dịch vụ khác. Công nghệ dịch vụ web cung cấp một cách cơ bản để xác định các dịch vụ chi tiết nhằm cung cấp truy cập hiệu quả đến các đối tượng kinh doanh. 2 Khả năng đồng bộ hoặc không đồng bộ: với tính đồng bộ, khả năng này đề cập đến sự ràng buộc của khách hàng đối với việc thực hiện dịch vụ.
Trong các hoạt động đồng bộ, bên yêu cầu thực sự sẽ đợi dịch vụ web hoàn thành xong một thao tác. Ví dụ một thao tác bởi một yêu cầu trong đó bao gồm việc đọ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 này và sau đó lại ghi vào dữ liệu khác thì thao tác này phải được thực hiện theo cách thức liên tiếp, đảm bảo sự đồng bộ trong thao tác thực hiện và dữ liệu trong cơ sở dữ liệu. Đối với tính không đồng bộ, các hoạt động này cho phép bên máy khách gọi một dịch vụ sau đó thực hiện các chức năng khác một cách song song.
Cụ thể bên khách sẽ không cần chờ đến khi thông điệp yêu cầu xử lý xong và trả về nên sẽ không bị ảnh hưởng đến độ trễ cũng như đả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. Hỗ trợ các lời gọi thủ tục từ xa: dịch vụ web cho phép tương tác giữa các máy khác nhau qua mạng. Do đó việc hỗ trợ các chức năng, thủ tục từ xa này là điều hiển nhiên. Cụ thể, các dịch vụ web cho phép bên khách hàng gọi các thủ tục, hàm chức năng và phương thức trên các đối tượng từ xa thông qua các giao thức truyền vận dựa trên XML.
Các thủ tục từ xa cho thấy sự hỗ trợ của các dịch vụ web là các tham số đầu vào và tham số đầu ra. Hỗ trợ trao đổi tài liệu: đây cũng là lợi thế của việc sử dụng nền tảng XML, nó không chỉ mô tả cho các tài liệu đơn giản mà còn cả các tài liệu phức tạp. Họ có thể tạo ra các tài liệu từ đơn giản đến phức tạp dựa trên XML, trao đổi chúng. Các dịch vụ web hỗ trợ việc trao đổi minh bạch giữa các tài liệu để tạo điều kiện tốt hơn trong các bên, các doanh nghiệp.3 Ưu điểm và nhược điểm của dịch vụ web 1.1 Ưu điểm Dịch vụ web cung cấp khả năng hoạt động rộng lớn với các ứng dụng phần mềm khác nhau và chạy trên các nền tảng khác nhau, không phụ thuộc vào hệ thống mạng, hệ điều hành hay bất kỳ nền tảng nào.
Sử dụng các giao thức và các chuẩn mở, phổ biến như HTTP, TCP, XML giúp các lập trình viên dễ dàng hiểu được. 3 Có khả năng tự phục hồi, trong các kiến trúc hướng dịch vụ thì việc các dịch vụ có thể hoạt động hay ngừng bất kỳ lúc nào. Khả năng tự phục hồi sau lỗi sẽ giúp tăng độ tin cậy cho ứng dụng và hệ thống. Tạo mối quan hệ tương tác mềm dẻo giữa các thành phần trong hệ thống, dễ dàng trong việc phát triển các ứng dụng phân tán và tích hợp các hệ thống khác nhau.
Từ đó giúp đơn giản sự phức tạp của hệ thống, làm giảm giá thành trong hoạt động, phát triển của các doanh nghiệp.2 Nhược điểm Do được kết nối qua nhiều máy chủ trung gian, việc xử lý các yêu cầu có thể sẽ ảnh hưởng đến băng thông và việc tốc độ đường truyền giảm cũng sẽ ảnh hướng đến các dịch vụ web. Tồn tại những mối nguy trong khoảng thời gian chết của dịch vụ web. Như là xử lý dữ liệu hay giao diện chưa được cập nhật, cụ thể như có thể xảy ra lỗi nếu một máy khách không cập nhật giao diện. Không hỗ trợ kết nối thời gian dài và duy trì trạng thái kết nối.
Dịch vụ web thiếu cơ chế khôi phục đủ tin cậy để đảm bảo giao dịch được khôi phục lại trạng thái ban đầu trong trường hợp xảy ra sự cố.2 Thành phần cấu trúc và một số khái niệm về dịch vụ web 1.1 Kiến trúc mô hình dịch vụ web Hầu hết các công nghệ đều có kiến trúc riêng để đảm bảo hoạt động hiệu quả với mô hình làm việc của mình. Tương tự, các dịch vụ web cũng có mô hình kiến trúc riêng, chúng cơ bản bao gồm Provider, Requester và Broker cùng với hoạt động xử lý được mô tả như hình 1.2 Kiến trúc mô hình dịch vụ web 4 Trong đó: − Service Broker: tạo các dịch vụ web và cung cấp các ứng dụng cho khách hàng muốn sử dụng dịch vụ web. − Service Requester: liên hệ giữa ứng dụng khách hàng với dịch vụ web. Ứng dụng máy khách có thể là .NET, java hoặc bất kỳ ứng dụng dựa trên ngôn ngữ nào khác để tìm kiếm các loại chức năng cụ thể thông qua dịch vụ web.
Khách hàng yêu cầu sử dụng một dịch vụ web hiện có bằng cách mở kết nối mạng và gửi yêu cầu XML. − Service Provider: là ứng dụng cung cấp quyền truy cập vào UDDI. UDDI cho phép ứng dụng xác định vị trí của dịch vụ web. UDDI sẽ được nhắc đến trong mục 1.
Cũng trong hình 1.2 tôi sẽ nói sơ về hoạt động của dịch vụ web bao gồm Publish, Find và Bind tuần tự cụ thể: − Publish: bên cung cấp (Provider) sẽ cung cấp cho bên trung gian (Broker) về sự tồn tại của dịch vụ web bằng cách sử dụng các giao diện chuẩn của bên cung cấp nhằm cho biết rằng dịch vụ đã sẵn sàng. − Find: khách hàng yêu cầu tư vấn từ các Broker để tìm một dịch vụ phù hợp với yêu cầu của họ. − Bind: với thông tin nhận được từ các Broker về dịch vụ web, khách hàng có thể yêu cầu liên kết hoặc sử dụng dịch vụ web.2 Thành phần chính của dịch vụ web Có hai loại dịch vụ web chính đó là SOAP và RESTful. Tuy nhiên, để một dịch vụ web có đầy đủ chức năng thì một số thành phần nhất định cần phải có và cần phải được trình bày để bất kỳ ngôn ngữ nào cũng có thể phát triển để lập trình dịch vụ web.
Chúng được trình bày cụ thể bao gồm: 1.1 SOAP – Simple Object Access Protocol SOAP là một giao thức dựa trên XML để truy cập các dịch vụ web qua HTTP. SOAP có một số đặc điểm kỹ thuật có thể được sử dụng trên tất cả các ứng dụng. SOAP được gọi là giao thức truy cập đối tượng đơn giản trước đây, nhưng sau đó đến phiên bản 1.