Chương 4 Webservice
4.5. Các thành phần chính của Web Service
Web service dựa vào khá nhiều công nghệ bên dưới như HTTP, XML, SOAP… Mỗi cơng nghệ nêu trên đều có phạm vi ứng dụng khá sâu rộng và địi hỏi nhiều thời gian tìm hiểu cũng như trình bày. Luận văn khơng có tham vọng trình bày cặn kẽ về tất cả các công nghệ trên mà chỉ xin giới thiệu những nét cơ bản và sơ lược về các cơng nghệ chính. Việc trình bày này chỉ nhằm mục đích cung cấp cho người đọc cái nhìn khái quát hơn về web service, tuy nhiên quá trình phát triển ứng dụng web service thơng thường khơng địi hỏi kiến thức sâu về lãnh vực này vì đã có rất nhiều cơng cụ hỗ trợ và lập trình viên đã được “che” đi những cơng việc phức tạp bên dưới.
4.5.1. SOAP (Simple Object Access Protocol)
SOAP là một giao thức đơn giản nhằm mục đích trao đổi thơng tin trong môi trường ứng dụng phân tán. SOAP dựa trên nền công nghệ XML và bao gồm 2 thành phần:
Một “bì thư” (envelope) để quản lý các thơng tin mở rộng và mang tính điều khiển.
Một chuẩn mã hóa quy định cách thể hiện thông tin trong envelope. SOAP có thể được sử dụng kết hợp với các giao thức chuẩn khác như SMTP, HTTP/HTTPS, FTP… Tuy nhiên hiện nay chỉ mới có HTTP/HTTPS được xem như giao thức chuẩn để trao đổi gói tin SOAP. Việc sử dụng SOAP như một giao thức trao đổi dữ liệu chuẩn khiến web service có khả năng hoạt động trên nhiều mơi trường lập trình khác nhau như Java, .NET,…
4.6. WSDL (Web Service Definition Language)
Khi chúng ta đã xây dựng hoàn thành web service cần phải cung cấp tài liệu mơ tả để các nhà phát triển client có thể sử dụng được web service trên. Tài liệu mô tả web service cần mơ tả được vị trí web service, các hàm nó cung cấp, tham số kèm theo…
Tài liệu WSDL là một tài liệu thỏa mãn các nhu cầu trên. WSDL (Web Service Definition Language) là một ngôn ngữ dựa trên cú pháp XML dùng để định nghĩa một web service. Nói cách khác, một file WSDL như một người trung gian đứng giữa web service và ứng dụng web service client.
Trong tài liệu WSDL, chúng ta sẽ định nghĩa các phương thức được web service hỗ trợ, các kiểu dữ liệu được xử dụng trong các phương thức cùng các thông điệp được
36
trao đổi giữa client và server ứng với mỗi phương thức. Chúng ta chỉ phải định nghĩa các kiểu dữ liệu phức tạp như mảng, các lớp được khai báo thêm trong chương trình, mảng các lớp … còn các kiểu dữ liệu cơ bản như int, string, float …đã được hỗ trợ sẵn. Sau đó, chúng ta gộp chung các định nghĩa này kết hợp với các giao thức mạng bên dưới để hình thành một end-point (tạm dịch là một đầu cuối).
Hình 4.4 Web Service Endpoint
Một endpoint interface (gọi tắt là một enpoint) gồm có nhiều ports, mỗi port quy định một cách liên lạc với web service khác nhau ứng với mỗi giao thức bên dưới khác nhau. Sự kết hợp của web service với một giao thức mạng như thế được gọi là một binding, như trong hình 2.4 chúng ta thấy có 3 binding khác nhau. Port 1 sử dụng SOAP/HTTP binding, Port 2 sử dụng SOAP/HTTPS binding, Port 3 sử dụng các dạng binding khác. Như vậy ứng với web service trên, ta có đến 3 phương tiện khác nhau để triệu gọi các hàm.
Các hình thức binding thơng dụng nhất hiện nay vẫn là SOAP/HTTP POST và SOAP/HTTPS (hỗ trợ bảo mật thông qua SSL).
Việc phát sinh file WSDL sẽ được tự động thực hiện bởi các bộ cơng cụ (như Netbeans 6.8) do đó chúng ta không nhất thiết phải hiểu rõ cấu trúc file WSDL. Tuy nhiên, nếu hiểu cấu trúc file WSDL sẽ cung cấp cho chúng ta thêm nhiều tùy biến cũng như khả năng sửa lỗi (debug) tốt hơn.
37
4.6.1. Cấu trúc file WSDL
Một tài liệu WSDL thực chất chỉ là một danh sách các định nghĩa. Trong một file WSDL, phần tử gốc được đặt tên là "definitions". Phần tử này chứa năm phần tử con chính để định nghĩa web service. Thứ tự xuất hiện của các phần tử con này:
Phần tử "types": định nghĩa các kiểu dữ liệu dùng để trao đổi giữa client và server (chỉ định nghĩa các kiể u dữ liệu phức tạp như structure, class…).
Phần tử "message": định nghĩa các thông điệp được trao đổi.
Phần tử "portType": định nghĩa một tập các chức năng web service hỗ trợ và thông điệp tương ứng đối với mỗi chức năng đó.
Phần tử "binding": Sau khi đã định nghĩa các port, ta cần chỉ rõ ràng buộc giữa các ports này và các giao thức tầng dưới. Phần tử binding sẽ đảm nhiệm chức năng này (sẽ được đề cập kỹ hơn ở phần sau).
Phần tử "service": Có tác dụng gom các ports đã định nghĩa thành từng nhóm.
38
Chương 5. Kết luận
5.1. Kết luận
Sau hơn 5 tháng nghiên cứu dưới sự hướng dẫn của ThS Nguyễn Việt Anh và sự giúp đỡ nhiệt tình của các bạn trong nhóm khóa luận. Bước đầu khóa luận đã thu được một số kết quả nhất định.
5.1.1. Các kết quả đạt được
Tìm hiểu về J2ME, Webservice.
Xây dựng thành cơng chương trình “Hướng dẫn du lịch qua mobile theo ngữ cảnh”. Ứng dụng demo gồm 2 địa danh đó là “Văn miếu Quốc Tử Giám” và “Lăng tẩm Huế”, bước đầu chương trình xử lý sự chi tiết của nội dung theo độ sâu là 5 mức. Ngữ cảnh của ứng dụng là thời gian có thể ghé thăm, font, profile. Người dùng hồn tồn có thể cài đặt ứng dụng khi điện thoại của họ hỗ trợ kết nối GPRS.
5.1.2. Các vấn đề chưa giải quyết được
Chức năng người dùng tự bổ sung dữ liệu cho chương trình chưa hồn thành.
Chưa giải quyết được việc tự động thay đổi lộ trình do tác động bởi một ngoại cảnh nào đó trong q trình du lịch.
Giải quyết sự cố mất kết nối với Webservice chưa hoàn thành.