Tải bản đầy đủ (.pdf) (84 trang)

Lựa chọn dịch vụ Web theo Qos và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.61 MB, 84 trang )

HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1





ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC






























Hà Nội, tháng 12 /2011
Đề tài: “Sử dụng thuật toán chuẩn hóa tối ƣu để lựa
chọn dịch vụ Web theo QoS và ứng dụng trong dịch
vụ đặt vé tàu
”.


Giảng viên hƣớng dẫn: TS. NGUYỄN MẠNH HÙNG
Sinh viên thực hiện : BÙI QUANG HUY
Lớp : D07CNPM1
Khóa : 2007- 2012
Hệ : Chính quy
HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1





ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC






























Hà Nội, tháng 12 /2011
Đề tài: “Sử dụng thuật toán chuẩn hóa tối ƣu để lựa
chọn dịch vụ Web theo QoS và ứng dụng trong dịch

vụ đặt vé tàu
”.


Giảng viên hƣớng dẫn: TS. NGUYỄN MẠNH HÙNG
Sinh viên thực hiện : BÙI QUANG HUY
Lớp : D07CNPM1
Khóa : 2007- 2012
Hệ : Chính quy
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do – Hạnh phúc
KHOA CÔNG NGHỆ THÔNG TIN 1


ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

Họ và tên sinh viên: BÙI QUANG HUY
Lớp: D07CNPM1 Khoá: 2007-2012
Ngành đào tạo: Công nghệ phần mềm Hệ đào tạo: Đại học chính quy

1/ Tên đồ án tốt nghiệp:
“Sử dụng thuật toán chuẩn hóa tối ưu để lựa chọn dịch vụ Web theo QoS và
ứng dụng trong dịch vụ đặt vé tàu”.


2/ Nội dung chính của đồ án:
1. Công nghệ Web Service.
2. Lựa chọn Web Service theo QoS.
3. Xây dựng dịch vụ: Đặt vé tàu




3/ Ngày giao đồ án: 01/09/2011
4/ Ngày nộp đồ án : / /2011


TRƢỞNG BỘ MÔN (Duyệt)
GIÁO VIÊN HƢỚNG DẪN
(Ký, ghi rõ họ tên)
(Ký, ghi rõ họ tên)








TRƢỞNG KHOA

MỞ ĐẦU

Trong những năm gần đây cùng với sự phát triển mạnh mẽ của môi trường
Internet thì các ứng dụng triển khai trên nền Web ngày càng được phát triển rộng rãi
và phong phú. Bên cạnh đó, là sự phát triển của nền kinh tế thị trường đã dần đặt ra
nhu cầu áp dụng công nghệ thông tin vào trong các quy trình thương mại dần trở nên
cấp thiết, giúp cho các tổ chức doanh nghiệp giải quyết công việc của mình. Sự ra đời
của dịch vụ Web được coi là một công nghệ mang đến cách mạng trong tính toán phân
tán mà cụ thể là thương mại điện tử với việc thay đổi cách thức hoạt động của các dịch

vụ B2B(Business to Business) và B2C(Business to Customer). Giá trị cơ bản của dịch
vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối
với hệ thống đóng gói và hệ thống kế thừa. Các phần mềm được viết bởi những ngôn
ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ
Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên
trong một máy tính. Bất kỳ lĩnh vực nào trong cuộc sống cũng có thể tích hợp với dịch
vụ Web, đây là cách thức kinh doanh và làm việc có hiệu quả trong thời đại của truyền
thông và trao đổi thông tin qua mạng. Từ đó, vấn đề chất lượng của dịch vụ Web
Service đã trở thành một yếu tố quan trọng trong việc đánh giá sự thành công của các
nhà cung cấp dịch vụ. Chất lượng dịch vụ quyết định đến khả năng sử dụng và hữu ích
của dịch vụ, cả hai yếu tố này đều ảnh hưởng đến tính phổ biến của một dịch vụ Web.
Nhằm giới thiệu một cách khái quát công nghệ Web Service, vấn đề chất lượng
của dịch vụ Web Service để từ đó sử dụng thuật toán chuẩn hóa tối ưu giúp người
dùng lựa chọn ra dịch vụ có chất lượng tốt nhất; em xin đi vào đề tài: “Sử dụng thuật
toán chuẩn hóa tối ưu để lựa chọn dịch vụ Web theo QoS và ứng dụng trong dịch vụ
đặt vé tàu”.
Nội dụng của đồ án gồm những chương sau:
Chƣơng I: Công nghệ Web Service
Chương này tập trung trình bày khái quát về công nghệ Web Service, kiến trúc
của Web Service, các công nghệ liên quan và hướng dẫn xây dựng một Web Service
đơn giản.
Chƣơng II: Lựa chọn Web Service dựa vào QoS
Chương này đi sâu vào vấn đề chất lượng dịch vụ Web Service, tập Ontology
và từ vựng của QoS, cách hỗ trợ QoS cho Web Service và cuối cùng là thuật toán
chuẩn hóa tối ưu để giúp lựa chọn dịch vụ Web theo QoS.
Chƣơng 3: Xây dựng ứng dụng: Dịch vụ Đặt vé tàu
Chương này trình bày phân tích và thiết kế để xây dựng dịch vụ Đặt vé tàu,
cũng như giới thiệu cách cài đặt và sử dụng các công cụ để có thể mô phỏng được hoạt
động của Web Service, sử dụng Web Service trong ứng dụng và kết quả thực hiện cài
đặt thuật toán.

Kết luận: Đánh giá kết quả đạt đƣợc và hƣớng phát triển của đề tài


LỜI CẢM ƠN
Em xin chân thành cảm ơn Khoa Công nghệ thông tin 1, Trường Học Viện
Công Nghệ Bưu Chính Viễn Thông cơ sở phía Bắc đã tạo điều kiện tốt cho em thực
hiện đề tài tốt nghiệp này.
Em xin gửi lời cảm ơn sâu sắc nhất đến TS. Nguyễn Mạnh Hùng, người thầy đã
cho em định hướng và tận tình chỉ bảo em những ý kiến quý báu về công nghệ Web
Service, các kiến thức về lựa chọn dịch vụ Web theo QoS. Thầy đã giúp đỡ em tận tình
và đi cùng em trong suốt thời gian thực hiện đề tài này. Thầy chỉ cho em cách tiếp cận,
nghiên cứu và cách tìm ra những giải pháp cho vấn đề mắc phải.
Em xin chân thành cảm ơn các thầy cô đã tận tình giảng dạy, trang bị cho em
những kiến thức quý báu; và cũng cảm ơn các bạn đã giúp đỡ em trong những năm
học qua.
Đề tài “Sử dụng thuật toán chuẩn hóa tối ưu để lựa chọn dịch vụ Web theo QoS
và ứng dụng trong dịch vụ đặt vé tàu” là một đề tài khá mới mẻ, mặc dù em đã cố
gắng hoàn thành trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh
khỏi những thiếu sót. Em mong nhận được sự cảm thông và tận tình chỉ bảo, góp ý của
thầy cô và các bạn để đề tài có thể được mở rộng, nghiên cứu kỹ hơn.






























NHẬN XÉT, ĐÁNH GIÁ, CHO ĐIỂM
(Của giảng viên hƣớng dẫn)


…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
Điểm: …………………….………(bằng chữ: … …………… ….)
Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?.
…………, ngày tháng năm 20
CÁN BỘ- GIẢNG VIÊN HƢỚNG DẪN
(ký, họ tên)






NHẬN XÉT
(Của giảng viên phản biện)


…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………, ngày tháng năm 20
CÁN BỘ- GIẢNG VIÊN PHẢN BIỆN
(ký, họ tên)










ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

SVTH: Bùi Quang Huy, lớp D07CNPM1 i

MỤC LỤC

MỤC LỤC i
Danh mục hình vẽ iii
Danh mục bảng iv
Chƣơng I : CÔNG NGHỆ WEB SERVICE 1

1.1. Tổng quan về Web Service 1
1.1.1. Giới thiệu về Web Service 1
1.1.2. Đặc điểm của Web Service 4
1.1.3. Ưu và nhược điểm 4
1.2. Kiến trúc của Web Service 5
1.3. Các công nghệ của Web Service 8
1.3.1. XML 8
1.3.2. SOAP 10
1.3.3. WSDL 12
1.3.4. UDDI 15
1.4. Cách xây dựng một Web Service đơn giản 21
Chƣơng II : LƢẠ CHỌN WEB SERVICE DỰA VÀO QOS 26
2.1. Tìm hiểu về QoS 27
2.1.1. Chất lượng dịch vụ Web Service 27
2.1.2. Các yêu cầu về QoS cho Web Service 27
2.2. Tập Ontology và từ vựng của QoS 29
2.2.1. Ontology và từ vựng 29
2.2.2. Mô hình lựa chọn theo QoS 31
2.3. Giải pháp có thể cho vấn đề chất lƣợng dịch vụ Web Service 34
2.3.1. Mở rộng UDDI 34
2.3.2. Mở rộng SOAP 34
2.3.3. Chứng thực chất lượng dịch vụ Web Service 35
2.4. Thuật toán chuẩn hóa tối ƣu 37
2.4.1. Ví dụ 40
2.5. Đánh giá 42
Chƣơng III : XÂY DỰNG ỨNG DỤNG: DỊCH VỤ ĐẶT VÉ TÀU 44
3.1. Bài toán 44
3.2. Khảo sát yêu cầu 45
3.2.1. Tài liệu khảo sát 45
3.2.1.1. Dữ liệu gốc 45

3.2.1.2. Dữ liệu mẫu 46
3.2.2. Khảo sát chi tiết 46
3.2.2.1. Hoạt động nghiệp vụ 46
3.2.2.2. Hệ thống mới 47
3.3. Phân tích và thiết kế 48
3.3.1. Pha phân tích 48
3.3.1.1. Danh sách tác nhân của hệ thống 48
3.3.1.2. Chức năng của hệ thống và kịch bản thực hiện chức năng 48
3.3.1.3. Tuần tự thực hiện các bước trong chức năng Đặt vé tàu 52
3.3.1.4. Xác định các lớp, quan hệ giữa các lớp 55
3.3.2. Pha thiết kế 56
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

SVTH: Bùi Quang Huy, lớp D07CNPM1 ii

3.3.2.1. Quan hệ giữa các lớp(Pha thiết kế) 56
3.3.2.2. Thiết kế CSDL dựa theo quan hệ giữa lớp 57
3.3.2.3. Các bước hoạt động của chức năng Đặt vé tàu 58
3.3.2.4. Biểu đồ trạng thái 59
3.3.2.5. Giao diện 59
3.4. Cài đặt 61
3.4.1. Cấu hình môi trường 61
3.4.1.1. Cấu hình AXIS 61
3.4.1.2. Cấu hình jUDDI 62
3.4.2. Tạo dịch vụ Web DatVeTau 64
3.4.3. Quảng bá dịch vụ Web DatVeTau 65
3.4.4. Giới thiệu ứng dụng Java mô phỏng việc sử dụng thuật toán chuẩn hóa tối
ưu để lựa chọn dịch vụ Web theo QoS 66
3.4.5. Cách gọi các chức năng của dịch vụ Web từ Client (sử dụng ASP.Net) 68
KẾT LUẬN 70

TÀI LIỆU THAM KHẢO 72
























ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

SVTH: Bùi Quang Huy, lớp D07CNPM1 iii

Danh mục hình vẽ

Hình 1. 1: Kiến trúc của Web Service 6
Hình 1. 2: Cấu trúc của một thông điệp SOAP 10
Hình 1. 3: Tham chiếu giữa các thành phần của WSDL 14
Hình 1. 4: Ánh xạ Web Service WSDL sang UDDI 16
Hình 1. 5: Giao diện khởi động của jUDDI 21
Hình 1. 6: Giao diện thể hiện các API Inquiry và Publisher của jUDDI 21
Hình 1. 7: Kết quả thực thi dịch vụ Web Calculator 25
Hình 2. 1: QoS Ontology (WSMO) 30
Hình 2. 2: Ontology và từ vựng của QoS 32
Hình 2. 3: Lựa chọn dịch vụ theo QoS 32
Hình 2. 4: Kiến trúc cho WS-QoS Broker 35
Hình 2. 5: Xác định giá trị chất lượng phụ thuộc hasTendency 39
Hình 3. 1: Dữ liệu gốc về chuyến Hà Nội-Sài Gòn 45
Hình 3. 2: Dữ liệu gốc về chuyến Hà Nội-Đồng Đăng 45
Hình 3. 3: Dữ liệu gốc về chuyến Hà Nội-Quán Triều 45
Hình 3. 4: Dữ liệu mẫu về phiếu đặt vé 46
Hình 3. 5: Biểu đồ UseCase của hệ thống 49
Hình 3. 6: Tuần tự các bước trong chức năng Đặt vé tàu 53
Hình 3. 7: Tuần tự các bước trong chức năng Đặt vé tàu với ngoại lệ chọn lại ghế 54
Hình 3. 8: Quan hệ giữa các lớp 55
Hình 3. 9: Quan hệ giữa các lớp trong pha thiết kế 56
Hình 3. 10: Giải thích chi tiết các thành phần của từng lớp 57
Hình 3. 11: Quan hệ giữa các bảng của cơ sở dữ liệu 58
Hình 3. 12: Các bước hoạt động của chức năng Đặt vé tàu 58
Hình 3. 13: Các trạng thái của đối tượng Ghế 59
Hình 3. 14: Giao diện chức năng Đặt vé tàu 59
Hình 3. 15: Giao diện khi lựa chọn Ga đi 60
Hình 3. 16: Giao diện khi lựa chọn Ga đến 60
Hình 3. 17: Giao diện khi chọn ngày đi sử dụng lịch 60
Hình 3. 18: Giao diện hiển thị kêt quả tra cứu 60

Hình 3. 19: Giao diện khi nhập thông tin cá nhân 60
Hình 3. 20: Giao diện đặt vé thành công 61
Hình 3. 21: Giao diện của phiếu đặt vé 61
Hình 3. 22: Nội dung tập tin WSDL của dịch vụ Web DatVeTau 65
Hình 3. 23: Giao diện hàm get_authToken của juddi 65
Hình 3. 24: Giao diện hàm save_business của juddi 66
Hình 3. 25: Giao diện hàm save_tModel của juddi 66
Hình 3. 26: Giao diện hàm save_servcie của juddi 66
Hình 3. 27: Ứng dụng Java áp dụng thuật toán chuẩn hóa tối ưu 68
Hình 3. 28: Thêm Web Reference vào project 68
Hình 3. 29: Thông điệp SOAP request và response khi ứng dụng sử dụng dịch vụ Web
DatVeTau 69
Hình 3. 30: Kết quả khi gọi hàm getChuyen() 69

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

SVTH: Bùi Quang Huy, lớp D07CNPM1 iv

Danh mục bảng
Bảng 1. 1: Các thành phần của một thông điệp SOAP 11
Bảng 1. 2: Các thành phần đặc tả giao diện của WSDL 13
Bảng 2. 1: Dữ liệu về giá trị các thuộc tính chất lượng của từng dịch vụ 40
Bảng 3. 1: Danh sách tác nhân của hệ thống 48
Bảng 3. 2: Danh sách UseCase 48
Bảng 3. 3: Kịch bản cho chức năng Đặt vé tàu 49
Bảng 3. 4: Thông tin cấu hình User Variable 62






















ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 1

Chƣơng I : CÔNG NGHỆ WEB SERVICE

Từ khi chiếc máy tính đầu tiên được phát minh cho tới nay, con người đã đạt được
rất nhiều thành tựu lớn trong lĩnh vực công nghệ thông tin. Và một thành tựu không
thể không nhắc tới đó chính là công nghệ Web. Có thể nói ngày 6/8/1911, là một ngày
đáng nhớ bởi đó là thời điểm mã máy tính “non nớt” cho WWW được đăng trên
alt.hypertext để mọi người có thể tải và tìm hiểu. Cũng bắt đầu từ hôm ấy công nghệ
Web được thế giới biết đến. Trải qua một quá trình phát triển không lâu nhưng công
nghệ Web đã có được những thành tựu của riêng mình với các thế hệ Web lần lượt ra

đời. Web Service hay còn được gọi là dịch vụ Web, là thế hệ thứ ba trong sự phát triển
của Web sau HTML tĩnh và Web tương tác. Web Service là một phương pháp mới để
triển khai các các dịch vụ ứng dụng trên Web và cho phép Web có thể lập trình được
chứ không phải chỉ là một Web tương tác [1]. Dịch vụ Web được coi là một công nghệ
mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B(Business to
Business) và B2C(Business to Customer). Giá trị cơ bản của dịch vụ Web dựa trên
việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng
gói và hệ thống kế thừa. Các phần mềm được viết bởi những ngôn ngữ lập trình khác
nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển
đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy
tính. Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công
nghệ mới, có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI…
Với sự phát triển lớn mạnh của Internet, dịch vụ Web thật sự là công nghệ đáng được
quan tâm để giảm chi phí và độ phức tạp trong tích hợp và phát triển hệ thống [10].
Để làm rõ những vấn đề trên, chúng ta sẽ cùng nhau tìm hiểu về công nghệ Web
Service trong nội dung của Chương này. Đầu tiên, ở mục Tổng quan về Web Service
sẽ mang đến một cái nhìn khái quát về công nghệ Web Service, khái niệm, đặc điểm,
ưu và nhược điểm của Web Service. Tiếp theo, chúng ta sẽ tìm hiểu về kiến trúc của
công nghệ Web Service, các công nghệ liên quan tới Web Service(XML, SOAP,
WSDL, UDDI). Và cuối cùng là hướng dẫn cách xây dựng một dịch vụ Web đơn giản.
1.1. Tổng quan về Web Service
1.1.1. Giới thiệu về Web Service
Để bắt đầu giới thiệu về công nghệ Web Service, chúng ta sẽ đi tìm hiểu về hoàn
cảnh của dịch vụ Web và tại sao dịch vụ Web lại quan trọng cho sự phát triển phần
mềm [9]. Chắc hẳn ai trong lĩnh vực công nghệ thông tin cũng đã từng nghe hoặc thấy
ở đâu đó một vài lần về SOA (kiến trúc định hướng dịch vụ), là sự chuyển đổi mô hình
theo cách mà các ứng dụng truyền thông với nhau; bao gồm hầu hết các ứng dụng
phần mềm trung gian(middleware). Và các dịch vụ Web thì gồm một nhóm các tiêu
chuẩn với ý định là có thể truyền thông cho nhiều hệ thống khác nhau mà không đòi
hỏi một loại phần mềm trung gian, ngôn ngữ lập trình hoặc thậm chí là hệ điều hành

cụ thể. Ban đầu, khi các máy tính ra đời, chúng hoạt động rất tốt, thực hiện được các
nhiệm vụ phi thường, tự động hóa rất nhiều thứ mà con người phải vất vả mới thực
hiện được. Nhưng sau khi thực hiện được các tính toán phức tạp, thì một yêu cầu mới
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 2

được đặt ra đó là sự truyền thông giữa các ứng dụng. Để đơn giản hóa, chúng ta lấy ví
dụ về các ứng dụng về nhân lực, ứng dụng về tài chính. Các ứng dụng này hoạt động
rất hiệu quả nhưng chưa có một cách hay để chia sẻ dữ liệu giữa chúng; tuy có thể viết
các quy trình bó (batch) để chuyển dữ liệu từ một hệ thống này đến một hệ thống khác,
nhưng điều đó không thể thay thế cho việc tích hợp thời gian thực.
Bước tiếp theo trong chuỗi phát triển đó là tính toán phân tán. Tính toán phân tán
đã cho phép các ứng dụng khác nhau nói chuyện với nhau, ngay cả khi chúng không ở
trên cùng một máy tính. Các công nghệ như CORBA, MTS và EJB (Enterprise Java
Bean) đã cung cấp một hệ thống bao gồm một đăng ký về các loại để các ứng dụng có
thể tìm thấy các thành phần mà chúng muốn tương tác và sau đó gọi các thành phần
này như thể chúng đang nằm trên máy cục bộ. Các hệ thống này đã được phần mềm
trung gian hỗ trợ. Nhưng vẫn còn một vấn đề, trong khi các ứng dụng tự do truyền
thông bất cứ nơi nào trong hệ thống thì hệ thống vẫn còn là khép kín. Ứng dụng khác
phải sử dụng cùng một công nghệ như ứng dụng ở máy chủ.
Mắt xích hầu như không tránh khỏi trong chuỗi tiến hóa này là các dịch vụ Web.
Dựa trên XML- một tiêu chuẩn mã nguồn mở dựa trên văn bản, dịch vụ Web là sự trao
đổi các thông điệp dựa trên SOAP giữa các hệ thống. Và từ đó đã mở rộng thế giới cho
ứng dụng, bất cứ ai cũng có thể tiếp cận.
Web Service (WS) là một phương pháp mới để triển khai các dịch vụ ứng dụng
trên Web và cho phép Web có thể lập trình được chứ không chỉ là một Web tương tác.
Web Service là thế hệ thứ ba trong sự phát triển Web sau HTML tĩnh và Web tương
tác được triển khai như PERL, ASP, JSP… Web Service thuộc loại black box- sử dụng
lại các thành phần tính toán phân tán. Mặc dù có nhiều nền tảng thành phần phân tán

có sẵn như CORBA, MS DCOM, .NET, EJB; nhưng chỉ duy nhất Web Service có thể
hỗ trợ tất cả các nền tảng, các ngôn ngữ lập trình, giới hạn về vấn đề độc quyền và
firewall- được coi là giải pháp thân thiện với các tính toán phân tán có sự tương tác.
Tất cả các kỹ thuật phân tán khác phải đối mặt với các vấn đề đau đầu như khó khăn
trong việc trao đổi thông điệp và cách gọi đối tượng từ xa giữa các thành phần ở nền
tảng khác nhau. Ngoài ra, mỗi công nghệ này cần có các tầng giao thức riêng để có thể
thiết lập được như giao thức ORB/IIOP cho CORBA, làm cho khả năng tương tác gặp
khó khăn trong môi trường tính toán phân tán. Phần lớn các kỹ thuật thành phần phân
tán gặp khó khăn với bảo mật firewall. Web Service làm việc trên một loạt giao thức
bao gồm SOAP/ XML/ HTTP/ TCP/ IP, giúp cho WS được chấp nhận rộng rãi trên
máy khách của dịch vụ Web có hỗ trợ các giao thức này. WS đã làm một cuộc cách
mạng trong tính toán phân tán và là dấu hiệu của một kỷ nguyên mới cho việc phát
triển các ứng dụng phân tán lightweight nhờ ưu điểm của những tính năng mềm dẻo.
Việc triển khai các thành phần trong các kỹ thuật khác là không dễ dàng. Nhưng lại rất
dễ dàng để deploy, publish, discover và invoke một dịch vụ Web trên mạng. Từ đó,
dịch vụ Web là giải pháp cho tất cả các vấn đề trên. Là sự thay đổi lớn trong e-
Commerce, B2B, Enterprise Application Integration (EAI) từ sử dụng các kỹ thuật độc
quyền sang sử dụng công nghệ Web Service để phát triển các ứng dụng mới trực tuyến
hay để đóng gói các ứng dụng sẵn có với kỹ thuật Web Service [1].
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 3

Không giống như mô hình Client/Server truyền thống, Web Service không cung
cấp cho người dùng một giao diện đồ họa nào, Web Service đơn thuần chỉ là việc chia
sẻ các dữ liệu logic và xử lý các dữ liệu đó thông qua một giao diện chương trình ứng
dụng được cài đặt xuyên suốt trên mạng máy tính. Tuy nhiên, người phát triển Web
Service hoàn toàn có thể đưa Web Service vào một giao diện đồ họa người dùng để có
thể cung cấp thêm các chức năng đặc biệt cho người dùng.
Vậy định nghĩa về Web Service như thế nào?

Câu trả lời là không có một định nghĩa chính xác về WS tại thời điểm này. Chúng
ta có thể hiểu Web Service là một thành phần phân tán trực tuyến tự mô tả, trình bày
các dịch vụ và chức năng thông qua giao diện trực tuyến và được lập trình có thể tự
công bố, xác định được và gọi được qua mạng. Điều quan trọng của WS chính là khả
năng hỗ trợ đầu cuối theo thứ tự cho bất kỳ ứng dụng gọi dịch vụ, được cung cấp bởi
bất kỳ dịch vụ Web trực tuyến nào [1].
Ngoài ra, theo W3C thì Web Service là một hệ thống phần mềm được thiết kế để
hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua
mạng Internet, giao diện chung và sự liên kết của nó được mô tả bằng XML. Dịch vụ
Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức
năng và đưa ra các thông tin người dùng yêu cầu. Một dịch vụ Web được tạo nên bằng
cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn
thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu
thông tin từ dịch vụ Web khác. Nó bao gồm các modul độc lập cho hoạt động của
khách hàng và doanh nghiệp, bản thân nó được thực thi trên server [1].
Ý tưởng của dịch vụ Web là thay đổi cách phát triển phần mềm phân tán từ lập
trình sang hợp thành, từ coding mới sang xây dựng ứng dụng mới từ các thành phần
sẵn có hoặc được mua hoặc được sử dụng lại. Đây chính xác là ưu điểm của lập trình
hướng thành phần (COP) và Component Based Software Development (CBSD). Như
vậy mục đích chính của Web Service không chỉ cung cấp dịch vụ trên Web mà còn
cung cấp cơ chế để chia sẻ các dịch vụ của nó như một thành phần được xây dựng của
dịch vụ Web khác hay các chương trình ứng dụng qua lập trình các dịch vụ Web đầu
cuối. Web Service thể hiện khả năng của nó làm thay đổi cách thức của mô hình
nghiệp vụ doanh nghiệp trong tương tác giữa các hệ thống phân tán. Một hệ thống của
doanh nghiệp lớn được chia làm nhiều thành phần Web Service độc lập tương đối, lần
lượt lấy các dịch vụ từ các thành phần Web Servcie đã được triển khai khác trên mạng.
EAI hay B2B có thể được xây dựng theo kiểu phân cấp của các thành phần Web
Service. Một số các thành phần Web Service này được phát triển từ đầu và các phần
khác được xây dựng trên nền tảng của sự kết hợp các Web Service có sẵn hoặc bằng
cách chuyển các thành phần phân tán có sẵn sang Web Service như các thành phần

EJB [1].
Hiện nay có hàng nghìn dịch vụ Web có sẵn trên mạng. Chúng ta có thể dự đoán
rằng trong tương lai sẽ có nhiều hơn nữa các dịch vụ Web và nhiều hơn nữa các ứng
dụng Web nắm lấy các ưu điểm của Web Service. Các công cụ phát triển Web Service
như AXIS của Apache, Microsoft .NET Web Service studio dựa trên IIS server, IBM
Web Sphere Web services, BEA Web Logic Workshop, Java Web Services
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 4

Development Pack (JWSDP), Mind Electric GLUE… Tất cả chúng được coi là các bộ
công cụ phát triển hỗ trợ cho việc phát triển và triển khai Web Service. Các ví dụ về
dịch vụ Web trong đồ án sẽ được phát triển theo công cụ AXIS, kết hợp với jUDDI
(cũng do Apache phát triển).
1.1.2. Đặc điểm của Web Service
Chúng ta đã có được cái nhìn khái quát về Web Service, Web Service là gì, thì ở
phần này chúng ta sẽ đi sâu vào tìm hiểu những đặc điểm cụ thể của Web Service gồm
những gì mà khiến nó được đánh giá cao và quan trọng trong tính toán phân tán [1,
10]:
- Web Service giúp tăng khả năng di động và tương tác của các hệ tính toán phân
tán. Web Service cho phép client và server tương tác được với nhau ngay cả trong
những môi trường khác nhau. Ví dụ, Web server cho ứng dụng được đặt trên một máy
chủ chạy hệ điều hành Linux, trong khi người dùng sử dụng máy tính chạy hệ điều
hành Window, khi đó ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần
thêm yêu cầu đặc biệt nào để có thể tương thích giữa hai hệ điều hành này.
- Giúp tăng khả năng sử dụng lại và mở rộng của các thành phần phân tán.
- Giảm bớt sự phức tạp trong việc kết hợp và triển khai thành phần.
- Giảm chi phí và thời gian cho việc phát triển phần mềm thành phần phân tán.
- Tăng cường cho B2B và Electronic Data Interchange(EDI).
- Đơn giản hóa việc quản trị hệ thống phân tán.

- Dễ dàng để đóng gói ứng dụng có sẵn sang Web Service phù hợp.
- Hoạt động trên một loạt các giao thức chuẩn mở, được phát triển từ các chuẩn
đã được công nhận như XML.
- Là Internet thế hệ thứ ba, là giải pháp cho tính toán phân tán.
- Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh
vực cụ thể và cơ sở hạ tầng Web, đem lại lợi ích cho cả doanh nghiệp, khách hàng, nhà
cung cấp khác và cả những cá nhân thông qua mạng Internet.
Ngày nay dịch vụ Web đang rất phát triển, những lĩnh vực trong cuộc sống có thể
áp dụng và tích hợp dịch vụ Web là khá rộng lớn như dịch vụ chọn lọc và phân loại tin
tức (hệ thống thư viện có kết nối đến Web portal để tìm kiếm các thông tin cần thiết);
ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin về địa điểm, đặt vé, );
các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá
qua mạng… thậm chí là giao dịch trực tuyến (cho cả B2B và B2C) [10].
Các ứng dụng có tích hợp dịch vụ Web không còn là xa lạ, đặc biệt trong điều kiện
thương mại điện tử đang bùng nổ và phát triển không ngừng cùng với sự phát triển lớn
mạnh của Internet. Bất kỳ lĩnh vực nào trong cuộc sống cũng có thể tích hợp với dịch
vụ Web, đây là cách thức kinh doanh và làm việc có hiệu quả bởi ngày nay là thời đại
của truyền thông và trao đổi thông tin qua mạng [10].
1.1.3. Ƣu và nhƣợc điểm
Chúng ta có thể rút ra ưu và nhược điểm của công nghệ Web Service như sau [1, 10]:


ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 5

Ưu điểm của công nghệ Web Service:
- Cung cấp khả năng hoạt động rộng lớn và linh hoạt với các ứng dụng phần
mềm khác nhau chạy trên những nền tảng khác nhau.
- Sử dụng các giao thức và chuẩn mở (giao thức và định dạng dữ liệu dựa trên

văn bản), từ đó giúp cho người lập trình dễ dàng tiếp cận và hiểu được. Nền tảng của
Web Service là công nghệ XML (hầu hết các hệ thống đều có thể đọc và hiểu được tập
tin XML).
- Nâng cao khả năng tái sử dụng.
- Thúc đẩy phát triển các hệ thống phần mềm đã tồn tại bằng cách cho phép các
tiến trình/chức năng nghiệp vụ đóng gói trong giao diện Web Service và quảng bá
rộng rãi trên mạng Internet.
- Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ
thống, dễ dàng cho việc phát triển các ứng dụng phân tán.
- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành dịch
vụ, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp
khác.
Tuy có đặc điểm nổi trội và các ưu điểm trên, nhưng công nghệ Web vẫn mắc phải
một số nhược điểm:
- Có quá nhiều chuẩn cho Web Service khiến cho người dùng khó nắm bắt, cũng
như gây khó khăn cho các nhà phát triển.
- An toàn và bảo mật thông tin là một vấn đề nan giải của Web Service.
- Tốc độ thực thi- performance, của Web Service phụ thuộc nhiều vào tốc độ
đường truyền Internet và nhìn chung các ứng dụng Web Service thực thi chậm hơn so
với các ứng dụng bình thường khác.
- Vấn đề chất lượng của dịch vụ (QoS) còn chưa được đảm bảo, nhất là khi Web
Service bị rơi vào tình trạng quá tải, gây thiệt hại lớn vào khoảng thời gian chết của
Web Service, giao diện không thay đổi, có thể lỗi nếu một máy khách không được
nâng cấp, thiếu các giao thức cho việc vận hành.
1.2. Kiến trúc của Web Service
Web Service là một thành phần phân tán trực tuyến tự mô tả, trình bày các dịch vụ
và chức năng thông qua giao diện trực tuyến và được lập trình có thể tự công bố, xác
định được và gọi được qua mạng [1]; được coi là một công nghệ mang đến cuộc cách
mạng trong cách thức hoạt động của các dịch vụ B2B(Business to Business) và
B2C(Business to Customer) [10]. Vậy, chúng ta hãy cùng nhau tìm hiểu kiến trúc của

Web Service qua hình 1.1 để làm rõ những vấn đề này.
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 6


Hình 1. 1: Kiến trúc của Web Service
Trong kiến trúc của Web Service có 3 thành phần quan trọng [1, 10]: Client (đưa ra
yêu cầu Web Service), bên cung cấp Web Service và nơi đăng ký Web Service; cùng
với đó là cơ chế hoạt động cần có 3 thao tác: Find, Publish và Bind. Trong đó:
- Bên cung cấp Web Service sẽ tiến hành publish/register dịch vụ với UDDI
(thao tác Publish). UDDI (Universal Description, Discovery, and Integration) giống
như danh bạ điện thoại, các doanh nghiệp có thể thực hiện đăng ký số điện thoại của
mình để khách hàng tìm được khi cần. Cũng có trường hợp khách hàng đã biết số điện
thoại của doanh nghiệp mà không cần tới danh bạ điện thoại, tương tự như thế Web
Service cũng có thể hoạt động được mà không cần sự hỗ trợ của UDDI trong trường
hợp client đã biết về thông tin của WS như địa chỉ WS, tên phương thức, đối số cần
thiết của phương thức (bao gồm cả kiểu giá trị của giá trị trả về). Khi tiến hành
publish/register, bên cung cấp WS sẽ đăng ký giao diện WSDL của mình với UDDI
(có nhiều nơi đăng ký UDDI), về sau sẽ được sử dụng bởi client. Để thực hiện được
quá trình đăng ký này thì trước tiên bên cung cấp phải có một tài khoản hợp lệ của
UDDI (ở đây chúng ta sẽ sử dụng jUDDI để mô phỏng UDDI, các thông điệp trao đổi
SOAP giữa các bên sẽ sử dụng thư viện hàm API của jUDDI). Khi có được tài khoản
hợp lệ, bên cung cấp sẽ bắt đầu tiến hành đăng ký bằng việc lấy mã chứng thực về tài
khoản của mình từ UDDI (qua hàm get_authToken()). Bên cung cấp khi đó sử dụng
mã chứng thực để tiến hành lưu thông tin doanh nghiệp của mình: tên doanh nghiệp,
mô tả, thông tin liên lạc(tên cá nhân, số điện thoại, e-mail) (qua hàm save_business()).
Nếu lưu thông tin thành công, bên cung cấp sẽ nhận được businessKey của mình.
BusinessKey sẽ được sử dụng để tiến hành lưu thông tin tModel (qua hàm
save_tModel()), ở đây tModel được sử dụng để liên kết tới metadata bên ngoài UDDI

(ở trường hợp này chính là tập tin WSDL); nếu thành công sẽ nhận được một
tModelKey. Sau khi hoàn tất các bước trên thì bên cung cấp mới tiến hành đăng ký
dịch vụ của mình:tên dịch vụ, mô tả, accessPoint, overviewURL. Và kết quả cuối
cùng, bên cung cấp nhận được một ServiceKey và bên yêu cầu có thể truy cập UDDI
để biết thông tin về bên cung cấp cũng như về dịch vụ mà họ cung cấp. Cụ thể quá
trình này sẽ được trình bày ở phần cài đặt của Chương III.
- Tiếp theo, bên yêu cầu WS có thể tìm dịch vụ (thao tác Find) phù hợp bằng: tên
bên cung cấp WS (tên doanh nghiệp), thông tin danh mục, tên WS hay thậm chí là key
của WS nếu bên yêu cầu biết trước được thông tin này. Nếu thao tác Find có kết quả
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 7

trả về phù hợp, bên yêu cầu sẽ bắt đầu tiến hành sử dụng dịch vụ Web (thao tác Bind).
Giả sử ở đây, bên yêu cầu tìm kiếm theo tên dịch vụ là A tại UDDI và được phản hồi
kết quả là 2 dịch vụ A
1
và A
2
trùng khớp với yêu cầu, kèm theo đó là serviceKey, tên
dịch vụ, mô tả của từng dịch vụ. Bên yêu cầu chọn dịch vụ A
1
, để biết thêm thông tin
về dịch vụ này, bên yêu cầu sẽ sử dụng serviceKey để lấy thông tin chi tiết dịch vụ từ
UDDI (qua hàm get_serviceDetail()). Qua đó, bên yêu cầu sẽ biết thêm về thông tin
của doanh nghiệp cung cấp dịch vụ này, địa chỉ của truy xuất dịch vụ Web (WSDL).
Để bắt đầu sử dụng dịch vụ, bên yêu cầu cần tiến hành truy xuất tới WSDL để xem:
mô tả các chức năng dịch vụ hỗ trợ, nơi dịch vụ Web tồn tại, cách truy cập dịch vụ
Web và cách gọi các phương thức từ xa được dịch vụ cung cấp. Từ đó, bên yêu cầu sử
dụng dịch vụ Web qua các phương thức từ xa mà dịch vụ cung cấp để đáp ứng những

yêu cầu của mình.
- Bên thứ 3 là nơi đăng ký dịch vụ Web (UDDI), đảm nhiệm chức năng cho phép
bên cung cấp tiến hành đăng ký dịch vụ, bên yêu cầu tiến hành tìm kiếm, truy xuất
thông tin. Chi tiết được trình bày ở mục 1.3.4 trong Chương này.
Cả yêu cầu và kết quả truy xuất UDDI đều có định dạng SOAP. Các thông điệp
SOAP được gửi đi chính xác bởi HTTP và TCP/IP.
Ứng dụng mà chúng ta sẽ xây dựng ở Chương cuối là dịch vụ Đặt vé tàu, được xây
dựng để mô phỏng công nghệ Web Service khi được áp dụng vào thực tế, nhưng trước
đó sẽ là việc sử dụng một thuật toán chuẩn hóa tối ưu để giúp người dùng lựa chọn ra
được một dịch vụ Web có chất lượng dịch vụ (QoS) tốt nhất dựa theo một số tiêu chí
chất lượng. Như vậy, ứng dụng Đặt vé tàu sẽ sử dụng dịch vụ Web Đặt vé tàu (mà cụ
thể là các phương thức của dịch vụ này) sau khi dịch vụ Web được lựa chọn dựa theo
QoS.
Web Service sử dụng một chồng giao thức, là tập hợp các giao thức mạng máy tính
được sử dụng để định nghĩa, xác định ví trị, thi hành và tạo nên dịch vụ Web tương tác
với những ứng dụng hay dịch vụ khác. Chồng giao thức này gồm 4 thành phần chính
[10]:
- Dịch vụ vận chuyển (Service Transport): có nhiệm vụ truyền thông điệp giữa
các ứng dụng mạng, bao gồm các giao thức như HTTP, SMTP, FTP và gần đây nhất là
giao thức thay đổi khối mở rộng BEEP (Blocks Extensible Exchange Protocol).
- Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML để
có thể hiểu được ở mức ứng dụng tương tác với người dùng. Hiện tại, những giao thức
thực hiện nhiệm vụ này là XML-RPC, SOAP và REST.
- Mô tả dịch vụ: được sử dụng để miêu tả các giao diện chung cho một dịch vụ
Web cụ thể. WSDL thường được sử dụng cho mục đích này. Dịch vụ Web sẽ sử dụng
ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà
dịch vụ Web cung cấp.
- Khám phá dịch vụ: tập trung dịch vụ vào một nơi đăng ký từ đó giúp một dịch
Web có thể dễ dàng khám phá ra những dịch vụ nào có trên mạng. Hiện tại, UDDI API
thường được sử dụng để thực hiện công việc này.

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 8

Kỹ thuật mô tả dịch vụ là một trong những thành phần chủ chốt của kiến trúc Web
Service. Các thông tin mô tả về kiến trúc Web Service được thể hiện trong hai tài liệu
riêng biệt, đó là NASSL- Network Accessible Service Specification Language và
WDS- Web-Defined Service. NASSL là một tài liệu dưới dạng chuẩn XML cho các
dịch vụ chạy trên nền Network để chỉ ra các thông tin hoạt động của Web Service,
chẳng hạn như danh sách các Service, các mô tả về Service, ngày hết hạn của Service
và các thông tin liên quan đến các bên cung cấp dịch vụ. Tài liệu WDS là một tài liệu
mang tính đáp ứng đầy đủ cho tài liệu NASSL. Khi ta kết hợp 2 tài liệu này với nhau,
ta sẽ có được mô tả đầy đủ về các dịch vụ để cho bên yêu cầu dịch vụ có thể dễ dàng
tìm kiếm và gọi các dịch vụ đó.
Như vậy, chúng ta đã cùng nhau tìm hiểu xong kiến trúc của công nghệ Web
Service, và có được cái nhìn khái quát về việc tương tác giữa các thành phần tham gia.
Trong đó, một số công nghệ như: SOAP, XML, WSDL, UDDI, đã được nhắc tới. Để
tìm hiểu cụ thể về các công nghệ này chúng ta hãy cùng nhau tìm hiểu nội dung tiếp
sau đây.
1.3. Các công nghệ của Web Service
Công nghệ Web Service sử dụng một loạt các giao thức chuẩn mở giúp cho dịch
vụ Web được chấp nhận rộng rãi trên các máy khách có hỗ trợ chuẩn này. Và từ đó,
dịch vụ Web đã làm một cuộc cách mạng trong tính toán phân tán và là dấu hiệu của
một kỷ nguyên mới cho việc phát triển các ứng dụng phân tán lightweight nhờ ưu
điểm của những tính năng mềm dẻo. Vậy chúng ta sẽ cùng nhau tìm hiểu xem những
giao thức và công nghệ nào được Web Service sử dụng [1, 10].
1.3.1. XML
Đầu tiên, điều mà chúng ta không thể không nhắc tới chính là XML (eXtensible
Markup Language)- ngôn ngữ đánh dấu dữ liệu, là ngôn ngữ mở rộng của HTML.
Người dùng có thể tự định nghĩa các thẻ. Bất kỳ bản ghi XML nào cũng có dạng là

Document Type Definition (DTD) hay Schema, các kiểu dữ liệu đặc trưng khác,
element, thuộc tính của element, các subelement. Bản ghi XML có thể được sử dụng
để thể hiện và chuyển đổi dữ liệu có cấu trúc trong các thẻ element phân cấp. Các bản
ghi XML với Schema hoặc DTD có thể được chấp nhận bởi bất kỳ chương trình hay
phần mềm nào một cách dễ dàng nếu có hỗ trợ XML API.
Ví dụ về bản ghi XML về student
<?xml version = “1.0”?>
<students>
<student id=1234>
<name>John Smith</name>
<gpa>3.5</gpa>
</student>
<student id=2345>
<name>Scott Tiger</name>
<gpa>4.0</gpa>
</student>
</students>
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 9

Trong ví dụ này, có hai bản ghi cho đối tượng student, trong đó lưu name và
gpa (-điểm trung bình khóa học) bằng việc sử dụng hai thẻ:<name></name> và
<gpa></gpa> nằm trong thẻ <student></student>.
Tất cả các bản ghi XML phải có siêu dữ liệu (metadata) của mình như việc một
bản ghi dữ liệu trong một bảng dữ liệu của bất kỳ cơ sở dữ liệu nào cũng phù hợp với
định nghĩa kiểu dữ liệu của bảng, đây được gọi là Schema của cơ sở dữ liệu. Có nhiều
định dạng khác nhau của XML Schema như internal DTD bên trong tập tin XML,
separate external DTD, . XML Schema Document(XSD) là một siêu dữ liệu cho bản
ghi XML. XSD chỉ rõ các cú pháp, cấu trúc và các ràng buộc bên trong XML tương

ứng, bao gồm kiểu dữ liệu hay các kiểu dữ liệu khác của element, các thuộc tính của
element.
Ví dụ sau thể hiện Schema, mô tả cấu trúc của bản ghi XML. Trong đó thẻ
complexType được dùng để định nghĩa các kiểu dữ liệu khác
<element name = “student”
<complexType>
<element name = “name” type = “xsd: string” />
<element name = “gpa” type = “xsd: float” />
</complexType>
</element>
Ví dụ về một XSD:
<?xml version=”1.0” encoding=”UTF-8”?>
<xsd:schema xmlns:xsd=
targetNamespace=”
xmlns=””>
<xsd:element name = “students”>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=”student”
minOccurs=”1”
maxOccurs=”unbounded”/>
</xsd:sequence/>
</xsd:complexType/>
</xsd:element>
<xsd:element name=”student”>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=”name”/>
<xsd:element ref=“gpa”/>
</xsd:sequence>

</xsd:complexType>
</xsd:element>
<xsd:element name=”name” type=”xsd:string”/>
<xsd:element name=”gpa” type=”xsd:float”/>
</xsd:schema>
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng
các tính năng và đặc trưng của các thành phần đó để giao tiếp. XML là công cụ chính
để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web,
tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML. Khi đó các thông tin mã hóa sẽ
hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML-RPC và có thể
tương tác với nhau trong một thể thống nhất [10].

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 10

1.3.2. SOAP
SOAP là viết tắt cho cụm từ Simple Object Access Protocol. SOAP là một giao
thức đóng gói cho các dữ liệu chia sẻ giữa các ứng dụng. Về cơ bản, SOAP là XML,
nhưng nó phù hợp với XML Schema đặc tả. SOAP được xây dựng từ các chuẩn XML
như XML Schema và XML Namespaces dùng cho việc định nghĩa SOAP và các chức
năng của nó. SOAP cung cấp một cơ chế đơn giản và gọn nhẹ cho việc trao đổi thông
tin có cấu trúc và định dạng giữa các thành phần trong một môi trường phân tán sử
dụng XML. SOAP được thiết kế dựa trên những chuẩn nhằm giảm chi phí tích hợp các
hệ thống phân tán xây dựng trên nhiều nền tảng khác nhau ở mức càng thấp càng tốt.
SOAP được sử dụng để đặc tả định dạng của thông điệp yêu cầu và phản hồi, từ đó tạo
và gửi các thông điệp qua HTTP port bằng phương thức HTTP POST [1].
Các đặc trưng của SOAP [14, 16]:
- SOAP được thiết kế đơn giản và dễ mở rộng.
- Tất cả các message SOAP đều được mã hóa sử dụng XML.

- SOAP sử dụng giao thức truyền dữ liệu riêng.
- SOAP không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình nào hoặc công nghệ
nào.
Vì đặc trưng này, SOAP không quan tâm đến công nghệ gì được sử dụng để thực
hiện miễn là người dùng sử dụng các message theo định dạng XML. Tương tự, service
có thể được thực hiện trong bất kỳ ngôn ngữ nào, miễn là nó có thể xử lý được những
message theo định dạng XML [16].
Khi trao đổi các thông điệp SOAP, có hai thành phần liên quan: Bên gửi và bên
nhận. Thông điệp sẽ được chuyển từ bên gửi sang bên nhận. Đây là ý niệm đơn giản
nhất trong trao đổi thông điệp SOAP.
Cấu trúc của một thông điệp SOAP có dạng như sau:

Hình 1. 2: Cấu trúc của một thông điệp SOAP
Thông điệp SOAP bao gồm phần tử gốc envelope bao trùm toàn bộ nội dung thông
điệp SOAP, và các phần tử header và body. Thành phần envelope của SOAP phải có
một subelement, chính là Body. Body của thông điệp SOAP có thể chính là dữ liệu,
tên của phương thức được gọi, đối số của một phương thức được gọi, một thông điệp
SOAP yêu cầu kết quả trả về từ một thông điệp SOAP phản hồi. Ngoài ra, envelope
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 11

của SOAP có thể có subelement Header hoặc không, đây là tùy chọn, chỉ ra siêu dữ
liệu của thông điệp.
Bảng 1. 1: Các thành phần của một thông điệp SOAP
Thành phần
Ý nghĩa
<SOAP-ENV:Envelop>
Phần tử bao trùm nội dung thông điệp, khai báo văn bản
XML như là một điệp SOAP.

<SOAP-ENV:Header>
Chứa các thông tin tiêu đề cho trang, phần tử này không
bắt buộc khai báo trong văn bản. Header còn có thể mang
dữ liệu chứng thực, chữ ký số, thông tin mã hóa hay cài
đặt cho các giao dịch khác. Nếu phần tử envelop mà chứa
phần tử header, thì nó chỉ chứa không nhiều hơn một
phần tử Header và phần tử Header này bắt buộc phải là
phần tử con đầu tiên của phần tử envelop. Mỗi thành
phần con của Header gọi là Header Entry, dùng để diễn
giải, quy định một số ngữ nghĩa của thông điệp SOAP.
Các ứng dụng có thể xử lý và định tuyến các thông điệp
dựa trên thông tin header và thông tin bên trong thông
điệp đó. Đây là ưu điểm mà các mô hình kiến trúc
DCOM, CORBA và RMI không có được, vì các protocol
header của chúng phải được chỉ định chi tiết cho mỗi ứng
dụng.
<SOAP-ENV:Body>
Phần tử khai báo nội dung chính trong thông điệp, chứa
các thông tin yêu cầu và thông tin được phản hồi.
Ví dụ sau là một thông điệp SOAP yêu cầu yêu cầu WS chuyển đổi 0
o
C sang
o
F
[1]:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-
ENV:encodingStyle="
xmlns:SOAPENV="
xmlns:xsd="

xmlns:xsi="
xmlns:SOAPENC="
<SOAP-ENV:Body>
<toFahrenheit>
<celsius xsi:type="xsd:string">0</celsius>
</toFahrenheit>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Trong thành phần Body của thông điệp SOAP yêu cầu có dữ liệu kiểu String là
“0” là đối số của phương thức toFahrenheit từ xa của WS.
Thông điệp SOAP phản hồi sau khi chuyển đổi sang
o
F:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="
xmlns:xsd="
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 12

xmlns:xsi="
<SOAP-ENV:Body>
<toFahrenheitResponse SOAP-ENV:encodingStyle=
"
<toFahrenheitResult xsi:type=
"xsd:string">32</toFahrenheitResult>
</toFahrenheitResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Kiểu truyền thông của SOAP [10,16]: có 2 kiểu truyền thông:
- Remote procedure call (RPC) cho phép gọi hàm hoặc thủ tục qua mạng. Kiểu
này được khai thác bởi nhiều dịch vụ Web.
- Document: được biết đến như kiểu hướng thông điệp. Nó cung cấp giao tiếp ở
mức trừu tượng thấp, khó hiểu và yêu cầu lập trình viên mất công sức hơn.
Cấu trúc dữ liệu: cung cấp những định dạng và khái niệm cơ bản giống như các
ngôn ngữ lập trình khác như kiểu dữ liệu (int,string,date,…) hay những kiểu phức tạp
hơn như struct, array, vector,… Định nghĩa cấu trúc dữ liệu SOAP được đặt trong
namespace SOAP-ENC.
1.3.3. WSDL
WSDL- Web Service Description Language, định nghĩa cách mô tả dịch vụ Web
theo cú pháp tổng quát của XML, mô tả các chức năng WS hỗ trợ, nơi WS tồn tại, và
cách truy cập WS và gọi các phương thức từ xa được cung cấp bởi WS. WSDL được
sử dụng cho bên yêu cầu dịch vụ. Bên yêu cầu dịch vụ sẽ sử dụng các thông tin về giao
diện định nghĩa trong lược đồ WSDL để triệu gọi dịch vụ Web. WSDL thường được
sử dụng kết hợp với XML Schema và SOAP để cung cấp Web Service qua Internet.
Client khi kết nối tới Web Service có thể đọc WSDL để xác định những chức năng có
sẵn trên server. Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có
trong WSDL [1].
Một tài liệu WSDL mô tả 1 dịch vụ Web như một tập các đối tượng trừu tượng
gọi là các “ports” và “endpoint”. Một tài liệu WSDL cũng định nghĩa bên trong nó các
phương thức của dịch vụ Web. Các phương thức tương ứng với “operation” và dữ liệu
trao đổi tương ứng với “message”. Một tập các phương thức liên quan được nhóm lại
vào trong một “portType”. Một ràng buộc kết nối (binding) chỉ định một giao thức
mạng và đặc tả định dạng dữ liệu cho một portType cụ thể. Nếu một client có được
một tài liệu WSDL và tìm thấy binding, địa chỉ cho mỗi port, nó có thể gọi các phương
thức của dịch vụ theo đúng giao thức và định dạng dữ liệu đã đặc tả [1].
Một tài liệu WSDL bao gồm hai phần: phần giao diện (mô tả giao diện và
phương thức kết nối) và phần thi hành mô tả thông tin truy xuất cơ sở dữ liệu. Cả 2
phần này sẽ được lưu trong 2 tập tin XML tương ứng là tập tin giao diện dịch vụ và tập

tin thi hành dịch vụ.
Phần đặc tả giao diện của WS được chia làm 4 phần là: Type, Message,
portType và binding.
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 13

Bảng 1. 2: Các thành phần đặc tả giao diện của WSDL
Thành phần
Ý nghĩa
<types …>
Định nghĩa kiểu dữ liệu được sử dụng cho Web Service. Để đảm
bảo tính không phụ thuộc vào platform, WSDL sử dụng cấu trúc
của XML Schema để định nghĩa kiểu dữ liệu.
<message …>
Mô tả cho các thông điệp được sử dụng trong element portType.
Định nghĩa các thành phần dữ liệu và các thông điệp mà nó được
gọi tới. Mỗi message có thể bao gồm một hoặc nhiều phần, các
thành phần này có thể so sánh với các câu lệnh của các lời gọi hàm
trong các ngôn ngữ lập trình truyền thống.
<portType …>
Mô tả tập trừu tượng của các phương thức được sử dụng lại bởi
một hoặc nhiều điểm cuối WS (port). Là thành phần quan trọng
nhất trong một tài liệu WSDL, được sử dụng để mô tả Web
Service, các thao tác được thực thi và các lời gọi thông điệp.
Thành phần portType có thể so sánh với thư viện hàm (hoặc các
module, các lớp) trong các ngôn ngữ lập trình. Thành phần
portType thường có 4 kiểu thao tác được WSDL định nghĩa là:
- One-way: thao tác này thể hiện rằng nó chỉ nhận các lời gọi
thông điệp nhưng không trả lại thông điệp đáp ứng.

- Request-response: thao tác này bao gồm việc nhận các
thông điệp yêu cầu và trả về các thông điệp đáp ứng.
- Solicit-response: thao tác này sẽ gửi đi các yêu cầu và đợi
các đáp ứng.
- Notification: thao tác này sẽ gửi đi các yêu cầu nhưng
không đợi để nhận các đáp ứng.
<binding …>
Đưa ra đặc tả định dạng thông điệp và định nghĩa đặc tả giao thức
kết nối như SOAP, HTTP và MINE. Định nghĩa cách các dịch vụ
Web kết hợp với nhau.
Trong phần thi hành, có 2 thành phần: port và service. Trong đó, thành phần
service là thành phần bên ngoài của thành phần port, nơi tập hợp của các đầu cuối Web
Service hay port liên quan đến nhau. Bản ghi XML của WSDL định nghĩa Web
Service như một nơi chứa các đầu cuối hay port.
Từ đó, chúng ta có thể có cấu trúc của một tập tin WSDL như sau:
<definition >
<types >
<message >
<portType >
<binding >
<service >
<port >
</service>
</definition>
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chương I: Công nghệ Web Service

SVTH: Bùi Quang Huy, lớp D07CNPM1 14

Mô hình tham chiếu giữa các thành phần của WSDL [18]:


Hình 1. 3: Tham chiếu giữa các thành phần của WSDL
Một ví dụ cụ thể [1]:
<wsdl:definitions . . .
<wsdl:message name="toFahrenheitResponse">
<wsdl:part name="return" type="SOAP-ENC:string"/>
</wsdl:message>
<wsdl:message name="toFahrenheitRequest">
<wsdl:part name="in0" type="SOAP-ENC:string"/>
</wsdl:message>
<wsdl:portType name="Convert">
<wsdl:operation name="toFahrenheit" parameterOrder="in0">
<wsdl:input message="intf:toFahrenheitRequest"/>
<wsdl:output message="intf:toFahrenheitResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ConvertSoapBinding" type="intf:Convert">
<wsdlsoap:binding style="rpc"
transport="
<wsdl:operation name="toFahrenheit">
<wsdlsoap:operation soapAction=""/>
<wsdl:input>
<wsdlsoap:body
encodingStyle=" />ding/" namespace="urn:myDirectory" use="encoded"/>
</wsdl:input>
<wsdl:output>
<wsdlsoap:body
encodingStyle=" />ding/"
namespace="urn:myDirectory" use="encoded"/>
</wsdl:output>
</wsdl:operation>

</wsdl:binding>
<wsdl:service name="ConvertService">
<wsdl:port binding="intf:ConvertSoapBinding" name="Convert">
<wsdlsoap:address
location="http://localhost:8080/axis/services/Convert"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Trong đó:

×