3. Cài đặt bài toán
3.1. Thành phần cung cấp dịch vụ
Các bước xây dựng thành phần cung cấp dịch vụ:
1. Tạo đặc tả giao diện WSDL.
2. Cài đặt dịch vụ theo đặc tả giao diện đã có. 3. Kiểm thử dịch vụ.
4. Triển khai (đăng ký) dịch vụ.
Ta cũng có thể xây dựng dịch vụ trước rồi sau đó tạo ra đặc tả giao diện nhờ các công cụ (wsdl.exe, Java2WSDL …):
Hình 3.3: Cài đặt dịch vụ mạng
Tạo cài đặt dịch vụ:
Dữ liệu cho dịch vụ từ điển được cung cấp bởi T.S Hồ Ngọc Đức tại địa chỉ:
http://www.informatik.uni-leipzig.de/~duc/software/Dict/english.zip (Anh - Việt, Việt – Anh )
và
http://www.informatik.uni-leipzig.de/~duc/software/Dict/french.zip (Pháp - Việt, Việt – Pháp )
Cấu trúc của dữ liệu từ điển tuân theo định dạng chuẩn được đưa ra tại
http:// www. dict.org như sau:
File data: chứa thông tin theo định dạng sau: @từ_cần_tra *từ_loại - định_nghĩa_1 = ví_dụ_1 + nghĩa_của_ví_dụ_1 - định_nghĩa_2 = ví_dụ_2 + nghĩa_của_ví_dụ_2 !thành_ngữ_1 - định_nghĩa_thành_ngữ_1 = ví_dụ_thành_ngữ_1 + nghĩa_của_ví_dụ_thành_ngữ_1 *từ_loại - định_nghĩa_3 Ví dụ: @acceptance * danh từ - sự nhận, sự chấp nhận, sự chấp thuận - sự thừa nhận, sự công nhận
- sự hoan nghênh, sự tán thưởng, sự tán thành; sự tin
=his statement will not find acceptance+ lời tuyên bố của ông ta sẽ không được ai tin
- (thương nghiệp) sự nhận thanh toán (hoá đơn); hoá đơn được nhận thanh toán
=general acceptance+ sự nhận thanh toán không cần có điều kiện =qualified acceptance+ sự nhận thanh toán có điều kiện
!acceptance of persons - sự thiên vị
File index: chứa từ cần tra (HeadWord), địa chỉ của từ tính từ đầu file (tính theo byte) dưới dạng mã BASE64, độ dài của từ (tính theo byte) dưới dạng mã BASE64
Ví dụ:
acceptable MkG DB
Dịch vụ sẽ cung cấp 2 phương thức:
- string LookUp (string HeadWord): trả về xâu biểu diễn định nghĩa của từ đúng như trong file data.
Ví dụ:
LookUp(acquit) sẽ trả về xâu:
@acquit
* ngoại động từ
- trả hết, trang trải (nợ nần)
=to acquit one's debt trang trải hết nợ nần+ tha bổng, tha tội, tuyên bố trắng án =to be acquitted of one's crime+ được tha bổng
- to acquit oneself of làm xong, làm trọn (nghĩa vụ, bổn phận...) =to acquit oneself of a promise+ làm trọn lời hứa
=to acquit oneself of one's task+ làm trọn nhiệm vụ !to acquit oneself
- làm bổn phận mình, làm trọn phận mình; xử sự
=to acquit oneself ill+ làm không tốt phần mình, xử sự xấu
- string LookUpXML(string HeadWord): trả về xâu biểu diễn nghĩa của từ dưới dạng XML (để có thể định dạng bằng file CSS).
Ví dụ:
LookUpXML(acquit) sẽ trả về xâu:
<?xml version = "1.0" encoding="utf-8"?>
<WORD>
<HEADWORD>acquit</HEADWORD>
<PartOfSpeech>ngoại động từ</PartOfSpeech>
<MEANING>trả hết, trang trải (nợ nần)</MEANING>
<EXAMPLE>to acquit one's debt trang trải hết nợ nần</EXAMPLE>
<TRANSLATION> tha bổng, tha tội, tuyên bố trắng án</TRANSLATION> <EXAMPLE>to be acquitted of one's crime</EXAMPLE>
<TRANSLATION> được tha bổng</TRANSLATION>
<MEANING>to acquit oneself of làm xong, làm trọn (nghĩa vụ, bổn phận...)</MEANING>
<EXAMPLE>to acquit oneself of a promise</EXAMPLE> <TRANSLATION> làm trọn lời hứa</TRANSLATION> <EXAMPLE>to acquit oneself of one's task</EXAMPLE> <TRANSLATION> làm trọn nhiệm vụ</TRANSLATION> <IDIOM>to acquit oneself</IDIOM>
<MEANING_IDIOM>làm bổn phận mình, làm trọn phận mình; xử sự</MEANING_IDIOM>
<EXAMPLE_IDIOM>to acquit oneself ill</EXAMPLE_IDIOM> <TRANSLATION_IDIOM> làm không tốt phần mình, xử sự xấu</TRANSLATION_IDIOM>
</WORD>
Cài đặt dịch vụ sử dụng cấu trúc cây AVL là cấu trúc điển hình trong việc xây dựng ứng dụng từ điển.
Cây AVL là một dạng của cây nhị phân, tuy nhiên, không giống như cây nhị phân, thời gian tìm kiếm xâu nhất của cây AVL là O(logn). Cấu trúc dữ liệu AVL đạt được thời gian tìm kiếm nhanh như vậy do nó giới hạn sự chênh lệch về chiều cao giữa các cây con của cùng một nút và nó thực hiện việc cân bằng lại nếu giới hạn này bị vi phạm.
Dịch vụ từ điển được tạo thành từ các lớp sau:
public class AvlNode: Cài đặt cấu trúc của mỗi nút trong cây avl public class AvlTree: Cài đặt cây avl.
public class LoadDict: Tải từ điển vào cây avl và cài đặt phương thức tra cứu từ.
public class BASE64Converter: Chuyển đổi giữa dạng số thập phân và mã BASE64.
public class XMLGenerator: Sinh ra xâu có nội dung là một file XML từ xâu trả về khi tra cứu nghĩa của từ.
Tạo đặc tả giao diện WSDL:
Giả sử dịch vụ sau khi được tạo ra có địa chỉ như sau:
http://localhost/EVDictionary/EVDictionary.asmx
Khi đó, ta có thể xem file đặc tả giao diện WSDL tại địa chỉ:
http://localhost/EVDictionary/EVDictionary.asmx?WSDL
Kiểm thử:
VS .NET tự động cung cấp trang kiểm thử cho dịch vụ mạng được tạo ra. Trang này có giao diện như sau:
Hình 3.4: Trang kiểm thử dịch vụ mạng
Nhập từ vào ô HeadWord và ấn Invoke để xem kết quả
Sau khi dịch vụ được kiểm thử, có thể đăng ký với dịch vụ UDDI.
Hình 3.5: Đăng ký dịch vụ với UDDI