Chương 1: Tổng quan về dịch vụ Web Ngày nay, việc phát triển các ứng dụng có thể dựa trên rất nhiều ngôn ngữ lập trình khác nhau như C#.net, Java…Các ứng dụng này cũng được chạy trên nhiều hệ điều hành khác như: Window hay Linux. Tuy nhiên, do sự phát triển độc lập về ngôn ngữ và nền tảng như vậy dẫn đến những khó khăn nhất định trong việc trao đổi thông tin giữa các ứng dụng khác nhau. Có một cách giúp cho việc trao đổi thông tin giữa các ứng dụng hết sức dễ dàng đó là sử dụng dịch vụ Web. Mục đích của dịch vụ Web ra là nỗ lực để đạt được khả năng tương tác giữa các ứng dụng bằng việc sử dụng các chuẩn Web.
Trong chương này tác giả xin giới thiệu tổng quan về dịch vụ Web bao gồm: ngôn ngữ XML phục vụ nhu cầu trao đổi dữ liệu giữa các dịch vụ Web, giao thức SOAP, tài liệu WSDL và UDDI. Ban đầu được thiết kế để đáp ứng những thách thức của sản xuất điện tử quy mô lớn, XML cũng đóng một vai trò ngày càng quan trọng trong việc trao đổi đa dạng dữ liệu trên Web [3]. Mục đích của tài liệu XML là để lưu trữ dữ liệu có cấu trúc, đơn giản và gọn nhẹ, giúp cho việc chia sẻ dữ liệu giữa các hệ thống khác nhau dễ dàng, đặc biệt là các hệ thống kết nối Internet. Dưới đây là ví dụ về việc lưu trữ dữ liệu học viên cao học sử dụng XML: <hocviencaohoc> <hocvien id = “1”> <hoten>Nguyen Van A</hoten> <mahv>000001</mahv> <namsinh>01/01/1980</namsinh> <gioitinh>Nam</gioitinh> <lop>cnpm3</lop> <khoahoc>2009-2011</khoahoc> </hocvien> <hocvien id = “2”> <hoten>Nguyen Van B</hoten> <mahv>000002</mahv> <namsinh>01/01/1981</namsinh> <gioitinh>Nu</gioitinh> <lop>cnpm3</lop> <khoahoc>2009-2011</khoahoc> </hocvien> <hocvien id = “3”> <hoten>Nguyen Van C</hoten> <mahv>000003</mahv> <namsinh>01/01/1982</namsinh> <gioitinh>Nam</gioitinh> 10 z <lop>cnpm3</lop> <khoahoc>2009-2011</khoahoc> </hocvien> </hocviencaohoc> - Thẻ root trong ví dụ trên là <hocviencaohoc>, tất cả các thẻ <hocvien> là các thành phần bên trong thẻ <hocviencaohoc>.
- Dữ liệu về từng học viên được lưu trong các cặp thẻ <hocvien>, thuộc tính id để phân biệt các học viên với nhau. - Trong thẻ <hocvien> có 6 thành phần lưu trữ các thông tin tương ứng về học viên là <hoten>: họ tên của học viên, <mahv>: mã học viên, <namsinh>: năm sinh của học viên, <gioitinh>: giới tính của học viên, <lop>: lớp của học viên, <khoahoc>: khóa học của học viên. Cấu trúc Logic Mỗi tài liệu XML chứa đựng một hay nhiều thành phần (element), ranh giới của các thành phần đó được phân tách bới bắt đầu và kết thúc các thẻ (start and end Tags) hay là các thành phần trống (empty – element tag). Mỗi thành phần có một kiểu, xác định bởi tên, một vài cái gọi là “generic identifier” và có lẽ có một bộ các thuộc tính cụ thể.
Mỗi thuộc tính xác định tên và giá trị. Một thành phần (element) là hợp lệ nếu nó có khai báo elementdecl nơi khai báo Name theo thành phần kiểu và một trong các điều sau đây: - Khai báo Empty phù hợp với thành phần không có nội dung (thậm chí là không tham chiếu thực thể, ghi chú, hướng dẫn xử lý (Processing instructions) hay khoảng không) - Khai báo phù hợp với các con và chuỗi của các thành phần con được sinh ra bởi ngôn ngữ bằng các biểu thức quy tắc trong mô hình nội dung, với các khoảng không tùy chọn, chú thích và hướng dẫn xử lý giữa các thẻ bắt đầu và thành phần con đầu tiên, giữa các thành phần con hay giữa thành phần con cuối cùng và thẻ kết thúc. Lưu ý một đoạn CDATA chứa đựng duy nhất không gian trống hay tham chiếu đến một thực thể có thay thế văn bản là các ký tự tham chiếu mở rộng đến không gian trống. - Khai báo Mixed, và các nội dung (sau khi thay thế bất kỳ thực thể tham chiếu với một đoạn văn bản thay thế) chứa đựng ký tự dữ liệu (bao gồm các đoạn CDATA), chú thích, hướng dẫn xử lý và thành phần con có kiểu phù hợp với tên trong mô hình nội dung.
- Khai báo ANY, và các nội dung (sau khi thay thế bất kỳ thực thể tham chiếu với một đoạn văn bản thay thế) chứa đựng các ký tự dữ liệu (bao gồm các đoạn 11 z CDATA), ghi chú, hướng dẫn xử lý và các thành phần con có kiểu đã được khai báo. Cấu trúc vật lý Một tài liệu XML có thể chứa đựng một hay nhiều các đơn vị lưu trữ gọi là các thực thể (entities), tất cả đều có nội dung và tất cả (ngoại trừ các thực thể tài liệu và tập con DTD bên ngoài) được xác định bởi tên thực thể. Mỗi tài liệu XML có duy nhất một thực thể gọi là thực thể tài liêu (document entity), phục vụ như là điểm khởi đầu cho bộ xử lý XMl và có thể chứa đựng toàn bộ tài liệu. Các thực thể có thể được phân tích cú pháp hoặc không.
- Nội dung của một thực thể phân tích cú pháp được gọi là văn bản thay thế của nó, văn bản này được coi là một phần của tài liệu. - Một thực thể không được phân tích cú pháp là một nguồn tài nguyên có các nội dung có thể hay không thể là văn bản, và nếu là văn bản có thể khác hơn so với XML. Mỗi thực thể không được phân tích cú pháp có một ký hiệu liên quan, xác định bởi tên.Ngoài yêu cầu là bộ xử lý XML tạo ra các định danh cho các thực thể và ký hiệu sẵn có cho ứng dụng, XML không có ràng buộc về nội dung của các thực thể không được phân tích cú pháp Các thực thể phân tích cú pháp được gọi theo tên bằng cách sử dụng thực thể tham chiếu, các thực không được phân tích bằng tên, mang đến giá trị của thực thể hay các thuộc tính của các thực thể General entities (các thực thể thông thường) là các thực thể để sử dụng bên trong nội dung tài liệu. Trong đặc điểm kỹ thuật này, các thực thể chung đôi khi được gọi với thuật ngữ là thực thể không đủ tiêu chuẩn Parameter Entities (Các tham số thực thể) là các thực thể được phân tích cú pháp sử dụng bên trong DTD (Document Type Definition).
Hai loại của các thực thể sử dụng các hình thức khác nhau của tài liệu tham khảo và được công nhân trong các ngữ cảnh khác nhau. Hơn nữa, chúng chiếm không gian tên khác nhau; tham số thực thể và thực thể chung với cung tên là hai thực thể phân biệt. Dịch vụ Web Dịch vụ Web (Web Service) là một hệ thống phần mềm được thiết kế để hỗ trợ tương tác giữa máy với máy thông qua mạng. Nó là một giao diện được mô tả trong một định dạng mà máy có thể hiểu được (cụ thể là WSDL).
Các hệ thống khác nhau tương tác với dịch vụ Web trong một cách thức theo quy định bằng các mô tả sử dụng thông báo SOAP, thường truyền tải bằng cách sử dụng HTTP với một định dạng XML kết hợp với các chuẩn Web khác [5]. SOAP Ban đầu được định nghĩa là Simple Object Access Protocol, là một giao thức đặc tả cho phép trao đổi thông tin có cấu trúc trong việc thực thi các dịch vụ Web trong mạng máy tính. Nó dựa trên Extensible Markup Language (XML) cho các định dạng thông báo, và thường dựa trên các giao thức tầng ứng dụng, đáng chú ý nhất là Hypertext Transfer Protocol (HTTP) và Simple Mail Transfer Protocol (SMTP), cho việc thỏa thuận và trao đổi thông báo. Soap có thể tạo thành một tầng cơ bản của một ngăn sếp các giao thức dịch vụ Web, cung cấp một khung thông báo cơ bản trên đó các dịch vụ Web được xây dựng.
Giao thức dựa trên XML chứa đựng 3 phần: vỏ định nghĩa các thông báo bên trong và làm thế nào xử lý nó, một bộ các quy tắc mã hóa cho việc thể hiện các trường hợp của kiểu dữ liệu ứng dụng được định nghĩa, và một quy ước đại diện cho các thủ tục gọi và phản hồi. Soap có 3 đặc điểm chính: khả năng mở rộng (an ninh và định tuyến dịch vụ Web là một trong các phần mở rộng được phát triển), trung lập (Soap có thể được sử dụng thông qua bất kỳ giao thức vận chuyển nào như HTTP, SMTP hay thậm chí là TCP), và độc lập (SOAP cho phép bất kỳ mô hình lập trình nào). Theo W3C, SOAP (Simple Object Access Protocol) cung cấp một cơ chế đơn giản và gọn nhẹ để trao đổi thông tin giữa các điểm trong môi trường phân cấp, phân tán sử dụng XML có cấu trúc và kiểu. SOAP không phải xác định bất kỳ ngữ nghĩa ứng dụng nào như là mô hình lập trình hay ngữ nghĩa thực hiện cụ thể, nó định nghĩa một cơ chế đơn giản cho việc thể hiện ngữ nghĩa của ứng dụng bằng cách cung cấp mô hình gói các module và cơ chế mã hóa cho việc mã hóa dữ liệu trong các module.
Điều đó cho phép Soap sử dụng trong đa dạng các hệ thống khác nhau từ hệ thống nhắn tin tới RPC (Remote Procedure Call) [4]. WSDL WSDL (Web Service Definition Language) là định dạng XML để mô tả dịch vụ mạng như là một tập hợp các thiết bị đầu cuối hoạt động dựa trên các thông báo có chứa thông tin hướng tài liệu hoặc là hướng thủ tục. Phương thức và thông báo được mô tả trừu tượng, bị ràng buộc vào một giao thức mạng cụ thể và định dạng thông báo để định nghĩa một thiết bị đầu cuối. Các điểm cuối liên quan cụ thể được kết hợp thành một điểm cuối trừu tượng (dịch vụ).
WSDL được mở rộng để cho phép mô tả các thiết bị đầu cuối và các thông báo của nó bất kể thông báo có định dạng gì hay giao thức mạng nào được sử dụng để giao tiếp [6]. Cấu trúc của tài liệu WSDL Một tài liệu WSDL đơn giản là tập hợp các định nghĩa. Có một thành phần là gốc (root) và các định nghĩa bên trong nút gốc, bao gồm sáu thành phần chính. Cấu trúc của tài liệu WSDL được mô tả trong hình bên dưới: 13 z WSDL Types Message PortType Binding Port Service Hình 1.1 Cấu trúc của tài liệu WSDL Sáu thành phần chính trong tài liệu WSDL bao gồm: - Types: cung cấp các định nghĩa kiểu dữ liệu sử dụng để mô tả cho việc trao đổi thông báo - Message: thể hiện một định nghĩa trừu tượng của dữ liệu được truyền.
Một thông báo bao gồm các phần logic, mỗi phần được liên kết với một định nghĩa các kiểu của hệ thống. - PortType: là tập hợp các phương thức trừu tượng. Mỗi phương thức đề cập đến các thông báo vào và ra. - Binding: quy định các giao thức cụ thể và định dạng dữ liệu cho các phương thức và thông báo được định nghĩa bởi một porttype cụ thể.