lOMoARcPSD| 58815430
HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
---------------------------
PHẠM VĂN CƢỜNG
BÀI GIẢNG
PHÁT TRIỂN PHẦN MỀM
HƢỚNG DỊCH VỤ
HÀ NỘI 2014
lOMoARcPSD| 58815430
LỜI NÓI ĐẦU
Hiện tại World-Wide Web (WWW) ang ƣợc sử dụng rộng rãi bởi con ngƣời. Nhƣng theo
nhà sáng lập ra WWW Tim Berners-Lee cho rằng WWW sẽ phải tiến hóa các chƣơng trình
máy tính có thể sử dụng ƣợc. Sự tiến hóa này ƣợc trông ợi từ việc thiết kế, phát triển và triển
khai các dịch vụ Web và dịch vụ Web là cụm từ ể chỉ các tiêu chuẩn cơ bản cho phép tích hợp
các ứng dụng web ó các ứng dụng thể sử dụng các thành phần khác nhau tạo thành
một dịch vụ. Trên thực tế, các thành phần của Web ang ngày càng trở nên phbiến (ubiquitous),
phân tán (distributed), không ồng nhất (heterogeneous), xu thế tự trị (autonomous), tùy
biến ể cho phép ngƣời dùng dễ dàng tƣơng tác thậm chí các thành phần này thể tƣơng
tác ƣợc với nhau trên nền tảng của Web ngữ nghĩa.
Bài giảng ―Phát triển phần mềm hƣớng dịch vụ‖ sẽ cung cấp một số kiến thức bản
về các công cụ ể phát triển các dịch vụ Web, các khái niệm bản thể, các công cụ xây dựng dịch
vụ, khám phá và lựa chọn Web ngữ nghĩa. Bài giảng ƣợc chia thành 8 chƣơng:
Chƣơng 1 trình bầy một bức tranh tổng quan về tiến hóa của web, dịch vụ web và vai trò
của web ngữ nghĩa.
Chƣơng 2 thảo luận về các chuẩn bản thiết kế, phát triển sử dụng dịch vụ Web.
Trong ó các ngôn ngữ ánh dấu mở rộng (XML), giao thức truy nhập ối tƣợng ơn giản (SOAP),
ngôn ngữ tả dịch vụ web (WSDL) ngôn ngữ tả, khám phá, tích hợp dịch vụ
(UDDI) cũng ƣợc trình bày trong chƣơng này.
Chƣơng 3 trình bầy về các nền tảng công cụ phổ biến hiện nay phát triển dịch vụ
Web. Trong ó 2 công nghệ chính J2EE .NET cũng nhƣ công nghệ tƣơng tác giữa các
thành phần dịch vụ cũng ƣợc thảo luận. Một ví dụ chi tiết ể minh họa quá trình tạo và sử dụng
dịch vụ web cũng ƣợc ề cập trong chƣơng này.
Chƣơng 4 trình bầy về các nguyên lý tính toán ớng dịch vụ. Nền tảng kiến truc hƣớng
dịch vụ (SOA), cũng nhƣ vấn ề hình hóa tiến trình nghiệp vụ và các công cụ hợp dịch vụ
cũng ƣợc ề cập trong chƣơng này.
Chƣơng 5 trình bầy các khái niệm bản thể tri thức cũng nhƣ ngô ngữ tả nguồn
cùng các mô hình OWL; cuối chƣơng giới thiệu cách cài ặt và sử dụng công cụ Protégé ể phát
triển các ứng dụng OWL.
Chƣơng 6 trình bầy về Web ngữ nghĩa; biểu diễn ngữ nghĩa cho dịch vụ Web; các khối
xây dựng của bản thể; và công cụ Protégé ể phát triển các ứng dụng OWL-S.
Chƣơng 7&8 trình bầy các khái niệm bản về khám phá và lựa chọn dịch vụ Web ngữ
nghĩa. Các thuật toán ối sánh và các kỹ thuật tƣ vấn cũng ƣợc ề cập trong chƣơng này.
Trong quá trình biên soạn, do kinh nghiệm còn hạn chế nên cuốn bài giảng có thể tồn tại
những thiếu sót. Tác giả rất mong nhận ƣợc ý kiến óng góp từ phía ộc giả. Mọi ý kiến óng góp
xin ƣợc gửi về hòm thƣ cuongpv@ptit.edu.vn .
Hà nội, tháng 12/2014
lOMoARcPSD| 58815430
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT THUẬT NGỮ ............................................................. 3
CHƢƠNG 1 GIỚI THIỆU ..................................................................................................... 3
1.1 TIẾN HÓA CỦA WEB HIỆN NAY ................................................................................. 3
1.2 DỊCH VỤ WEB ................................................................................................................ 4
1.3 WEB NGỮ NGHĨA ......................................................................................................... 4
1.4 BÀI TẬP ........................................................................................................................... 5
CHƢƠNG 2 CÁC CHUẨN CƠ BẢN CỦA DỊCH VỤ WEB .............................................. 6
2.1 NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG XML ................................................................. 7
2.2 GIAO THỨC TRUY NHẬP ĐỐI TƢỢNG ĐƠN GIẢN SOAP ..................................... 7
2.2.1 Cấu trúc và chức năng của SOAP.............................................................................. 9
2.2.2 Body và Header ......................................................................................................... 9
2.3 WSDL ............................................................................................................................. 10
2.3.1 Cấu trúc của WSDL ................................................................................................. 10
2.3.2 Chức năng của WSDL ............................................................................................. 13
2.3.3 Xây dựng WSDL ..................................................................................................... 14
2.4 UDDI (Universal Description, Discovery, and Integration) ........................................... 14
2.4.1 Cấu trúc của UDDI .................................................................................................. 14
2.4.2 Chức năng của UDDI .............................................................................................. 15
2.4.3 Xây dựng UDDI ...................................................................................................... 17
2.5 BÀI TẬP ......................................................................................................................... 24
CHƢƠNG 3 CÔNG NGHỆ CHO PHÁT TRIỂN DỊCH VỤ WEB .................................... 28
3.1 NỀN TẢNG CHO PHÁT TRIỂN DỊCH VỤ WEB ....................................................... 28
3.1.1 J2EE ......................................................................................................................... 28
3.1.2 .NET ........................................................................................................................ 30
3.2 TƢƠNG TÁC GIỮA CÁC THÀNH PHẦN DỊCH VỤ ................................................ 30
3.3 PHÁT TRIỂN VÀ SỬ DỤNG DỊCH VỤ WEB ............................................................ 31
3.4 CÔNG CỤ CHO PHÁT TRIỂN DỊCH VỤ WEB ......................................................... 37
3.4.1 Lập trình WSDL ...................................................................................................... 37
3.4.2 Lập trình Web Service với Java ............................................................................... 38
3.5 BÀI TẬP ......................................................................................................................... 39
CHƢƠNG 4 CÁC NGUYÊN LÝ TÍNH TOÁN HƢỚNG DỊCH VỤ ............................... 40
4.1 CÁC THỂ HIỆN ỨNG DỤNG CỦA DỊCH VỤ WEB .................................................. 40
4.1.1 Việc phối hợp các ứng dụng trong một doanh nghiệp ............................................. 40
4.1.2 Việc phối hợp các ứng dụng giữa các doanh nghiệp ............................................... 41
4.1.3 Cấu hình ứng dụng .................................................................................................. 41
4.1.4 Lựa chọn ộng ........................................................................................................... 42
4.1.5 Khả năng chịu lỗi của phần mềm ............................................................................ 42
4.1.6 Lƣới ......................................................................................................................... 43
4.1.7 Phát triển phần mềm ................................................................................................ 43
lOMoARcPSD| 58815430
4.2 KIẾN TRÚC HƢỚNG DỊCH VỤ ................................................................................. 43
4.2.1 Các yếu tố của kiến trúc hƣớng dịch vụ .................................................................. 43
4.2.2 So sánh lời gọi thủ tục từ xa (RPC) với ịnh hƣớng tài liệu (OD) ........................... 44
4.3 TIẾN TRÌNH NGHIỆP VỤ ............................................................................................ 45
4.3.1 Tiến trình nghiệp vụ (business process) .................................................................. 45
4.3.2 Mô tả tiến trình nghiệp vụ ....................................................................................... 46
4.4 HỢP DỊCH VỤ ............................................................................................................... 49
4.4.1 Hợp dịch vụ ............................................................................................................. 49
4.4.2 Công cụ BPEL cho hợp nghiệp vụ .......................................................................... 52
4.5 BÀI TẬP ......................................................................................................................... 56
CHƢƠNG 5 ONTOLOGY VÀ OWL ................................................................................. 57
5.1 KHÁI NIỆM BẢN THỂ (ONTOLOGY) TRI THỨC ............................................. 58
5.2 NGÔN NGỮ MÔ TẢ NGUỒN RDF ............................................................................. 58
5.3 NGÔN NGỮ MÔ TẢ NGUỒN RDF ............................................................................. 59
5.3.1 Xác ịnh lớp dựa trên OWL ...................................................................................... 59
5.3.2 Xác ịnh các tính chất dựa trên OWL ....................................................................... 61
5.3.3 Ba mô hình với OWL .............................................................................................. 62
5.3.4 Ví dụ ........................................................................................................................ 62
5.4 CÔNG CỤ PROTÉGÉ CHO XÂY DỰNG OWL ......................................................... 64
5.5 BÀI TẬP ......................................................................................................................... 68
CHƢƠNG 6 DỊCH VỤ WEB NGỮ NGHĨA VÀ OWL-S .................................................. 70
6.1 BIỂU DIỄN NGỮ NGHĨA CỦA DỊCH VỤ WEB ........................................................ 70
6.2 BIỂU DIỄN NGỮ NGHĨA CỦA DỊCH VỤ WEB ........................................................ 71
6.3 CÁC KHỐI XÂY DỰNG OWL-S ................................................................................. 71
6.3.1 Bản thể OWL-S profile ............................................................................................ 71
6.3.2 Bản thể OWL-S process .......................................................................................... 73
6.3.3 Bản thể OWL-S grounding ...................................................................................... 75
6.4 CÔNG CỤ PROTÉGÉ CHO XÂY DỰNG OWL-S ...................................................... 76
6.5 BÀI TẬP ......................................................................................................................... 81
CHƢƠNG 7 KHÁM PHÁ DỊCH VỤ WEB NGỮ NGHĨA ................................................ 81
7.1 KHÁM PHÁ DỊCH VỤ WEB NGỮ NGHĨA ................................................................ 81
7.2 THIẾT KẾ CƠ CHẾ KHÁM PHÁ DỊCH VỤ WEB NGỮ NGHĨA ............................. 82
7.2.1 Kiến trúc cơ chế khám phá ...................................................................................... 82
7.2.2 Các thuật toán ối sánh .............................................................................................. 84
7.2.3 Chi tiết cài ặt ............................................................................................................ 86
CHƢƠNG 8 LỰA CHỌN DỊCH VỤ WEB NGỮ NGHĨA ................................................ 87
8.1 KHÁI NIỆM LỰA CHỌN DỊCH VỤ ............................................................................ 87
8.2 LỰA CHỌN DỰA TRÊN ĐỐI SÁNH NGỮ NGHĨA ................................................... 88
8.3 LỰA CHỌN DỰA TRÊN MÔ HÌNH XÃ HỘI ............................................................. 90
8.3.1 Các kỹ thuật tƣ vấn ................................................................................................. 90
8.3.2 Lựa chọn dịch vụ dựa trên tƣ vấn ........................................................................... 91
TÀI LIỆU THAM KHẢO ........................................................................................................ 92
lOMoARcPSD| 58815430
Danh mục các từ viết tắt và thuật ngữ
DANH MỤC CÁC TỪ VIẾT TẮT THUẬT NGỮ
B2B
Business-to-Business
B2C
Business-to-Consumer
BPEL
Business Process Execution Language
BPEL4WS
Business Process Execution Language for Web Services
BPML
Business Process Management Language
ebXML
Electronic Business eXtensible Markup Language
EDI
Electronic Data Interchange
HTTP
Hypertext Transfer Protocol
IDL
Interface Definition Language
OWL
Web Ontology Language
OWL-S
OWL service
RDF
Resource Description Framework
RPC
Remote Procedure Call
SOAP
Simple Object Access Protocol
TCP
Transmission Control Protocol
UDDI
Universal Description, Discovery, and Integration protocol
URI
Uniform resource identifier
WSCI
Web Service Choreography Interface
WSDL
Web Services Description Language
WSML
Web Service Markup Language
WWW
World Wide Web
XACML
eXtensible Access Control Markup Language
XML
EXtensible Markup Language
XPDL
XML Process Definition Language
iii
CHƢƠNG 1 GIỚI THIỆU
1.1 TIẾN HÓA CỦA WEB HIỆN NAY
Mặc hiện tại World-Wide Web (WWW) ƣợc sử dụng bởi con ngƣời. Tuy nhiên,
theo hầu hết các chuyên gia cũng nhƣ nhà sáng lập ra WWW, Tim Berners-Lee, ã cho rằng
WWW sẽ phải tiến hóa các hệ thống máy nh thể sử dụng ƣợc. Sự tiến hóa này ƣợc
trông ợi từ việc thiết kế, phát triển và triển khai các dịch vụ Web. Cụm từ dịch vụ Web ể chỉ
các tiêu chuẩn bản cho phép tích hợp các ứng dụng web mà các ứng dụng này có thể sử
dụng các thành phần khác nhau ể tạo thành một dịch vụ.
Các thành phần của Web ngày càng trở nên phổ biến (ubiquitous), phân tán
(distributed), không ồng nhất (heterogeneous) và có xu thế tự trị (autonomous). Ban ầu, các
thành phần của môi trƣờng này là các trang Web. Nói cách khác, các trang Web cung cấp cả
nội dung dịch vụ. Nhƣng ngày một nhiều trong tƣơng lai Web cũng trở nên ngày càng
tiến hóa các thành phần của ngày càng có khả năng tùy biến. Trong ó các thành phần
của Web cho phép ngƣời dùng dễ dàng tƣơng c thậm chí các thành phần này thể
tƣơng tác với nhau nhƣ những chƣơng trình máy tính. Cụ thể, web ã tiến triển từ thế hệ ầu
tiên với công nghệ trình duyệt thông thƣờng, cho ến nay thế hệ thứ 4 với các dịch vụ
web dựa trên ngữ nghĩa. Bảng 1.1 minh họa iều này.
lOMoARcPSD| 58815430
Bảng 1.1: Tiến hóa web
Thế hệ web
Phạm vi
Công nghệ
Ví dụ thực tế
1
Tất cả
Trình duyệt
Các trang HTML
2
Chƣơng trình
Giao tác với màn
hình
Phát sinh nội dung HTML một
cách có hệ thống
3
Theo tiêu chuẩn
Các dịch vụ web
Các dịch vụ ƣợc mô tả hình
thức
4
Ngữ nghĩa
Các dịch vụ web ngữ
nghĩa
Các dịch vụ ƣợc mô tả theo ngữ
nghĩa
1.2 DỊCH VỤ WEB
Cũng giống nhƣ khái niệm ối tượng (object) của thế hệ trƣớc ây, khái niệm dịch vụ
(service) là từ ƣợc sử dụng rộng rãi hiện nay. Khái niệm dịch vụ có thể có các ý nghĩa khác
nhau ối với những ngƣời khác nhau. Nhƣng nhìn chung dịch vụ Web (Web service) thể
ƣợc ịnh nghĩa là:
Một phần của nhà cung cấp (piece of business) có thể truy cập thông qua Internet bằng
cách sử dụng các tiêu chuẩn mở ( ịnh nghĩa của công ty Microsoft);
Bao phủ, lỏng lẻo, giao tác bằng các hàm thông qua các giao thức chuẩn trên Web (
ịnh nghĩa của công ty DestiCorp);
Thành phần phần mềm kết nối lỏng lẻo cùng tƣơng tác với nhau thông qua các chuẩn
công nghệ Internet ( ịnh nghĩa của công ty Gartner);
Một ứng dụng phần mềm nhận dạng bằng một ịnh dạng tài nguyên thống nhất
(Uniform Resource Identifier), có giao diện và bắt buộc có khả năng ƣợc xác ịnh, mô
tả, và phát hiện bởi bằng ngôn ngữ ánh dấu mở rộng (XML), và hỗ trợ tƣơng tác trực
tiếp với các ứng dụng phần mềm khác sử dụng các thông iệp XML dựa trên các giao
thức Internet ( ịnh nghĩa của tổ chức W3C).
1.3 WEB NGỮ NGHĨA
Tim Berners-Lee, cha ẻ của World Wide Web, ã tả rằng: các thành phần của web sẽ
không tập trung xu hƣớng phân tán khắp nơi, không ồng nhất tự trị. Đó chính
web ngữ nghĩa (Web Semantics). Thông tin trên web ƣợc ánh dấu (markup) lên ể trình diễn
và ƣợc hiển thị bằng một trình duyệt. Con ngƣời có thể giải thích nội dung của thông tin vì
họ ã có nền tảng tri thức mà họ chia sẻ với những ngƣời tạo ra các trang web ó. Trừ khi các
chƣơng trình ƣợc tạo ra biểu diễn khai thác tri thức nhƣ vậy. Việc xử vấn này
thƣờng bị giới hạn các chƣơng trình ƣợc lập trình sẵn (hard-coded); iều này không
phù hợp với một thiết lập ộng (dynamic) vì các chi tiết về thông tin trên web có thể dễ dàng
thay ổi theo thời gian.
dụ, chúng ta thể viết một chƣơng trình sao chép màn hình (screen-scraping)
trích xuất (extract) giá một cuốn sách từ một trang kết quả tìm kiếm trên trang thƣơng mại
iện tử amazon.com. Chƣơng trình này sẽ dựa vào cú pháp của các trang web ã ƣợc mã hóa
theo một ngữ pháp hình thức (formal gramma). Bằng trực giác, một chƣơng trình có thể ƣợc
hƣớng dẫn ọc giá từ các trang kết quả phân tích một cách thích hợp. Tùy thuộc vào cấu
lOMoARcPSD| 58815430
trúc của trang tại các trang web nhất ịnh những hƣớng dẫn này thể phải thay ổi
không ƣợc báo trƣớc (ad hoc). Ví dụ, thông tin về giá của cuốn sách A ở dòng thứ 2, cột 3
bảng thứ 4 trong khung (frame) thứ 5 vào hôm nay; nhƣng hôm sau do việc bổ sung thêm
một vài loại hàng hóa khác có thể khiến thông tin về giá của cuốn sách A không còn ở vị trí
cũ nữa. Mặc dù có một số công cụ hiện tại cho phép ơn giản hóa việc phân tích và khai thác
nhƣ vậy, nhƣng nhiệm vụ này vẫn òi hỏi công sức rất lớn của các lập trình viên. Hơn nữa,
chƣơng trình thể vẫn lỗi khi cấu trúc của bất kỳ của các trang Web ọc bị thay
ổi.
Trong Web ngữ nghĩa, trang sẽ ƣợc ánh dấu lên không chỉ với các thông tin chi tiết cần
hiển thi; mà còn ƣợc ánh dấu dựa trên ý nghĩa của nội dung. Nói cách khác, nhƣ ví dụ trên
thì trang kết quả chứa những gì giá là. Một chƣơng trình sẽ trích xuất giá sẽ tìm thấy những
giá ngay cả khi bố trí của trang ã ƣợc thay ổi. In other words, the Nói cách khác, ánh dấu
trên Web sẽ tiến triển từ các cú pháp chỉ ơn thuần là cấu trúc của các thông tin ến ngữ nghĩa
ể bắt ý nghĩa của các thông tin.
1.4 BÀI TẬP
Sử dụng một công cụ lập trình Web nhƣ Java Server Pages (JSP) hoặc Active Server
Pages (ASP) xây dựng một Website cho cửa hàng bán sách trực tuyến. Mỗi cuốn sách
các thông tin về tác giả, tựa ề sách, nhà xuất bản, năm xuất bản, và giá. Yêu cầu:
- Xây dựng cơ sở dữ liệu quản lý sách cho cửa hàng;
- Phát triển các trang Web cho phép ngƣời quản trị cập nhật, bổ sung, sửa, xóa, thống
kê các quyển sách ã ƣợc bán và còn lại theo thời iểm nào ó;
- Phát triển các trang Web cho phép ngƣời dùng có thể tìm kiếm và ặt mua sách.
lOMoARcPSD| 58815430
CHƢƠNG 2
CÁC CHUẨN CƠ BẢN CỦA DỊCH VỤ WEB
Mặc dù vấn ề dịch vụ Web ang ƣợc quan tâm; song ý tƣởng của cung cấp các dịch vụ
trên Web là khá cũ. Nhìn lại chúng ta thể thấy rằng việc cung cấp và sử dụng dịch vụ Web
ã có từ nhiều năm trƣớc ây. Ví dụ, danh sách ịa chỉ thƣ iện tử của những ngƣời phản hồi là
những dịch vụ ta thể ăng ký, hay những catalogue trực tuyến của c danh sách gửi
thƣ với các chủ ề cụ thể mà ta ang quan tâm. Sự khác biệt chính giữa các dịch vụ cũ và các
dịch vụ Web hiện ại là ối với các dịch vụ cũ thì cần thiết phải có sự can thiệp của con ngƣời.
Ngày nay, các dịch vụ ƣợc tả sử dụng theo các chuẩn. hình kiến trúc chung cho
các dịch vụ Web ƣợc thể hiện trong hình vẽ 2.1; Nó bao gồm ba ối tƣợng:
1. Cung cấp dịch vụ (service provider): nhà tạo ra các dịch vụ Web và quảng cáo
cho ngƣời sử dụng tiềm năng ăng ký các dịch vụ Web với các nhà môi giới dịch vụ.
2. Môi giới dịch vụ (service broker): duy trì một ăng các dịch vụ xuất bản
giới thiệu các nhà cung cấp dịch vụ ến những ngƣời yêu cầu dịch vụ.
3- Ngƣời yêu cầu dịch vụ (service resquestor): ngƣời tìm kiếm, ăng ký và yêu cầu sử
dụng dịch vụ phù hợp từ môi giới dịch vụ.
Các kiến trúc cho các dịch vụ Web ƣợc thành lập trên nguyên tắc tiêu chuẩn kết
nối, truyền thông, mô tả, và khai phá. Đối với các nhà cung cấp và yêu cầu của các dịch vụ
ƣợc thông tin kết nối và trao ổi thì cần thiết phải có một ngôn ngữ chung. Đó chính là ngôn
ngữ ánh dẫu mở rộng (eXtensible Markup Language hay XML). Một giao thức chung cũng
cần thiết cho hệ thống giao tiếp với nhau ngƣời dùng thể yêu cầu dịch vụ ó chính
giao thức truy cập ối tƣợng ơn giản (Simple Object Access Protocol, SOAP).
Hình 2.1: Mô hình kiến trúc chung cho các dịch vụ Web
Các dịch vụ phải ƣợc tả theo một ịnh dạng máy có thể ọc ƣợc, mà tên của các hàm,
các tham số, và các kết quả có thể ƣợc xác ịnh. Điều này ƣợc cung cấp bởi ngôn ngữ mô tả
lOMoARcPSD| 58815430
dịch vụ Web (Web Services Description Language hay WSDL). Cuối cùng, ngƣời dùng
các doanh nghiệp cần một cách tìm các dịch vụ họ yêu cầu. Điều này thể ƣợc
giải quyết bởi chuẩn tả, khai phá, tích hợp (Universal Description Discovery
Integration hay UDDI). Bên cạnh các chuẩn XML, SOAP, WSDL, UDDI cần các phƣơng
pháp cho ại diện ngữ nghĩa của các dịch vụ sẽ ƣợc trình bày ở các chƣơng tiếp theo. Trong
chƣơng này ta sẽ tìm hiểu bốn chuẩn ngôn ngữ bản cho dịch vụ Web XML, SOAP,
WSDL và UDDI.
2.1 NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG XML
Ngôn ngữ cơ bản nhất của các ngôn ngữ trên là ngôn ngữ ánh dấu mở rộng XML. Các
thẻ XML truyền ạt thông tin về ý nghĩa của dữ liệu. Không chỉ tả cách thức dữ liệu sẽ
hiển thi nhƣ là trƣờng hợp của HTML. XML tuân thủ cú pháp của HTML, vì vậy việc phân
tích và xử lý trở nên dễ dàng hơn. XML thể cung cấp các thẻ tả tài liệu cấu trúc
hoặc phi cầu trúc. XML còn cho phép truy vấn dữ liệu cảm cấu trúc (structure-sensitive), có
nghĩa chúng ta thể truy vấn một tài liệu XML dựa trên cấu trúc của theo lĩnh vực
khác nhau. Ngoài ra, dữ liệu XML ƣợc gắn thẻ có thể ƣợc xác nhận một cách máy móc. Nói
tóm lại, XML cung cấp một ịnh dạng dữ liệu cho các tài liệu dữ liệu cấu trúc, nhƣng
không xác ịnh ngữ nghĩa của các ịnh dạng ể chia sẻ thông tin và tri thức cũng nhƣ tƣơng tác
giữa các ứng dụng khác nhau.
Cú pháp XML cung cấp một tập luật ểtả nội dung chứ không chỉ hiển thị nội dung,
ƣợc sử dụng cung cấp cấu trúc cho dữ liệu. Một tài liệu XML tƣơng ứng với một
cấu trúc cây. Các phần tử chức năng (element function) ƣợc ặt vào trong các cặp dấu ngoặc.
Ví dụ về một tài liệu XML ơn giản ƣợc trình bầy trong hình 1.1a.
Hình 1.1a: một tài liệu XML ơn giản
Trong ví dụ trên có thẻ mở là <temperature> và thẻ óng là </temperature>. Các phần
tử có thể chứa (nesting) dữ liệu văn bản hoặc chứa các phần tử khác. Các phần tử có thể có
một số thuộc tính (attribute) mà mỗi thuộc tính gắn với một giá trị. Giá trị của thuộc tính
phải là xâu kí tự (có thể ƣợc óng gói vào cặp dấu ‗ ‘ hoặc ― ‖). Thuộc tính ƣợc ặt vào sau
thẻ mở của phần tử (xem ví dụ trên ta thấy <temperature scale=”Celsius”>. Một tài liệu
XML gồm một phần tử gốc (top-level element) có thể chứa các phần tử. Nói cách khác cây
tài liệu có gốc là phần tử gốc.
2.2 GIAO THỨC TRUY NHẬP ĐỐI TƢỢNG ĐƠN GIẢN SOAP
Dự ịnh ban ầu SOAP ƣợc phát triển cung cấp cho các máy tính ƣợc nối mạng với
các dịch vụ gọi thủ tục từ xa (Remote Procedure Call -RPC) ƣợc viết bằng XML. ã trở
thành một giao thức ơn giản và nhẹ ể trao ổi thông iệp XML trên Web sử dụng HTTP
lOMoARcPSD| 58815430
(HyperText Transfer Protocol), SMTP (Simple Mail Transfer Protocol), SIP (Session
Initiation Protocol).
Trong thực tế, HTTPgiao thức phổ biến nhất cho SOAP lựa chọn cho các chuẩn
tƣơng thích, chẳng hạn nhƣ BP (Business Process) 1.0.
Thông iệp SOAP ƣợc thể ƣợc chuyển từ một bên gửi ến bên nhận. Các thông iệp
SOAP ƣợc ịnh dạng nhƣ các tài liệu XML. Nói một cách khác SOAP không ịnh ra các ngữ
nghĩa ứng dụng hoặc cài ặt chi tiết chỉ cung cấp một chế gọn nhẹ, hiệu quả cho
phép trao ổi thông tin cấu trúc ịnh dạng giữa các thành phần (components) trong môi
trƣờng phân tán bằng các tài liệu XML. Chính vì lẽ ó mà SOAP cho phép các ứng dụng chạy
trên các nền tảng khác nhau thể trao ổi thông tin cho nhau. Các ặc trƣng của SOAP bao
gồm:
- Tính ơn giản và dễ dàng mở rộng;
- Các thông iệp ều ƣợc ịnh dạng XML;
- Giao thức truyền dữ liệu riêng;
- Kết nối giữa bên gửi và bên nhận là lỏng lẻo (loosed coupling); nghĩa không
cần cơ chế tham chiếu;
- Độc lập với nền tảng (platform independent) và ộc lập với ngôn ngữ lập trình.
Hình 2.2: Một yêu cầu SOAP
Hình 2.2 là ví dụ về một thông iệp SOAP. Trong ví dụ này, một công ty sản xuất có thể
trực tiếp (ví dụ Dell) gọi một nhà cung cấp (ví dụ Intel) các danh mục hoặc ơn ặt hàng, hoặc
thể gửi một ơn ặt hàng ến các nhà cung cấp. Khi ó dịch vụ ƣợc hình hóa nhƣ các
phƣơng thức, sau ó thành phần dịch vụ ƣợc thực hiện thông qua các kịch bản (scripts) ể gọi
ến phƣơng thức.
lOMoARcPSD| 58815430
2.2.1 Cấu trúc và chức năng của SOAP
Thành phần gốc của một thông iệp SOAP là phong thƣ (envelope). Phong thƣ chứa
các thành phần Header và Body. Trong Header có các thành phần con gọi là Header entry
dùng ể diễn giải các ngữ nghĩa cho thông iệp SOAP. Nhờ ó, thông iệp SOAP ƣợc ịnh tuyến
dựa trên các thông tin trong phần Header.
Header
Header entry
Header entry
Header entry
Body
Hình 2.3: Cấu trúc thông iệp SOAP
Hình 2.4 cho thấy một thông iệp SOAP ƣợc óng gói trong phƣơng thức POST của giao
thức HTTP. Phƣơng thức POST của HTTP ƣợc sdụng thay phƣơng thức GET. Thông
iệp ƣợc gửi ến www.socweather.com yêu cầu các dịch vụ Web thực thi hàm GetTemp sử
dụng "Honolulu" nhƣ giá trị của tham số City và "now" làm giá trị của tham số When. Các
thông iệp kết quả SOAP chứa nhiệt ộ là tham số DegreesCelsius với giá trị 30.
2.2.2 Body và Header
Mỗi thông iệp SOAP phải bao gồm phần body, thƣờng ƣợc thông dịch (interpreted) bởi
ultimateReceiver. Header cung cấp thông tin về các iểm ến trung hoặc cuối cùng của thông
iệp SOAP (xem hình 2.2a).
lOMoARcPSD| 58815430
Hình 2.2a: ví dụ về SOAP header
Hình 2.4: Một thông iệp SOAP
2.3 WSDL
2.3.1 Cấu trúc của WSDL
Mô hình kiến trúc cho các dịch vụ Web giả thiết là các dịch vụ có thể ƣợc tìm ra và sử
dụng. Nghĩa là chúng ta sẽ các tả về dịch vụ một cách chính xác. Ngôn ngữ tả dịch
vụ Web (Web Services Description Language hay WSDL) là một ngôn ngữ XML dùng ể mô
tả một giao diện lập trình cho một dịch vụ Web [Christensen et al., 2001]. Mô tả bao gồm
ịnh nghĩa của các kiểu dữ liệu, ịnh dạng của thông iệp ầu vào ầu ra, các hoạt ộng ƣợc
cung cấp bởi dịch vụ (nhƣ GetTemp), ịa chỉ mạng, và các ràng buộc giao thức. Để hiểu ƣợc
WSDL một cách rõ ràng nhất, xem ví dụ ở hình 2.5 sau ây.
<?xml version ="1.0"?>
<!−− the root element , w s d l : d e f i n i t i o n s , d e f i n e s a s e t of −−>
<!−− r e l a t e d s e r v i c e s −−>
<w s d l : d e f i n i t i o n s name="Temperature"
targetNamespace="hp://www.socweather.com/schema" x m l n
s : t s="hp://www.socweather.com/TempSvc.wsdl" x m l n s : t s
x s d="hp://schemas.socweather.com/TempSvc.xsd"
xmlns:soap="hp://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="hp://schemas.xmlsoap.org/wsdl/">
<!−− ws d l : t y p e s e n c a p s u l a t e s schema d e f i n i t i o n s of
−−> <!−− communicaon t y p e s ; here using xsd −−> <w s d l : t y p e
s>
<!−− a l l type d e c l a r a t i o n s are expressed in xsd −−>
<xsd:schema
targetNamespace="hp://namespaces.socweather.com"
xmlns:xsd="hp://www.w3.org/1999/XMLSchema">
<!−− xsd d e f : GetTemp [ Ci ty s t r i n g , When s t r i n g ] −−>
<x s d : e l e m e n t name="GetTemp">
<xsd:complexType>
<xsd:sequence>
lOMoARcPSD| 58815430
<x s d : e l e m e n t name="City" type="string"/>
<x s d : e l e m e n t name="When" type="string"/>
</ xsd:sequence>
</xsd:complexType>
</ xsd:element>
<!−− xsd d e f : GetTempResponse [ DegreesCel s ius i n t e g e r ] −−>
<x s d : e l e m e n t name="GetTempResponse">
<!−− XML Schema e n t r y as above −−>
</ xsd:element>
<!−− xsd d e f : GetTempFault [ errorMessage s t r i n g ] −−>
<x s d : e l e m e n t name="GetTempFault">
<!−− XML Schema e n t r y as above −−>
</ xsd:element>
</xsd:schema>
</ w s d l : t y p e s>
<!−− wsdl :message element s d e s c r i b e p o t e n t i a l t r a n s a c t i o n s −−>
<!−− Most messages , as here , have only one par t . M u l t i p l e −−>
<!−− par t s provide a way t o aggregate complex messages −−>
<!−− r e q u e s t GetTempRequest i s of type GetTemp −−>
<wsdl:message name="GetTempRequest">
<w s d l : p a r t name="body" element="tsxsd:GetTemp"/>
</ wsdl:message>
<!−− response GetTempResponse i s of t y p e GetTempResponse −−>
<wsdl:message name="GetTempResponse">
<w s d l : p a r t name="body" element="tsxsd:GetTempResponse"/>
</ wsdl:message>
<!−− wsdl :por tType d e s c r ib e s messages in an o p e r a t i o n −−>
<wsdl:portType name="GetTempPortType">
<!−− w s d l : o p e r a t i o n de s c r ibe s the e n t i r e pr o t o c o l from −−>
<!−− input to o u t p u t or f a u l t −−>
<w s d l : o p e r a t i o n name="GetTemp">
<!−− The order input preceding o u t p u t i n d i c a t e s the −−>
<!−− request−response o p e r a t i o n t y p e −−>
<w s d l : i n p u t message="ts:GetTempRequest"/>
<w s d l : o u t p u t message="ts:GetTempResponse"/>
<w s d l : f a u l t message="ts:GetTempFault"/>
</ w s d l : o p e r a t i o n >
</ wsdl:portType>
<!−− w s d l : b i n d i n g s p e c i f i e s a s e r i a l i z a t i o n pr o t o c o l −−>
<w s d l : b i n d i n g name="TempSvcSoapBinding"
type="ts:GetTempPortType">
<!−− l e v e r a g e o f f s o a p : b i n d i n g document s t y l e −−>
<s o a p : b i n d i n g s t y l e ="document"
t r a n s p o r t ="hp://schemas.xmlsoap.org/soap/hp"/>
<!−− semi−opaque c o n t a i n e r of network t r a n s p o r t d e t a i l s −−>
<!−− c l a s s e d by soap:bi n d i n g above @@@−−>
<w s d l : o p e r a t i o n name="GetTemp">
<s o a p : o p e r a t i o n
soapAcon="hp://www.socweather.com/TempSvc"/>
<!−− f u r t h e r s p e c i f y that the messages in the −−>
lOMoARcPSD| 58815430
<!−− w s d l : o p e r a t i o n "GetTemp" us e SOAP ? @@@ −−>
<w s d l : i n p u t>
<soap:body use="literal"
namespace="hp://schemas.socweather.com/TempSvc.xsd"/>
lOMoARcPSD| 58815430
</ w s d l : i n p u t>
<!−− As above f o r ws d l : o u t p u t and ws d l : f a u l t −−>
</ w s d l : o p e r a t i o n >
</ wsdl:binding>
<!−− w s d l : s e r v i c e names a new s e r v i c e "TemperatureService" −−>
<w s d l : s e r v i c e name="TemperatureService">
<wsdl:documentaon>socweather . com t e m p e r a t u r e s e r v i c e
</wsdl:documentaon>
<!−− connect i t to the binding "TempSvcSoapBinding" above −−>
<w s d l : p o r t name="GetTempPort" binding="ts:TempSvcSoapBinding">
<!−− g i v e t h e binding a network addr e s s −−>
<s o a p : a d d r e s s l o c a t i o n ="hp://www.socweather.com/TempSvc"/>
</ws d l : p o r t>
</ w s d l : s e r v i c e >
</ w s d l : d e f i n i t i o n s >
Hình 2.5: Một ví dụ WSDL
WSDL cho biết tên của các dịch vụ, nhƣ GetTemp, các loại thông số ầu vào, nhƣ
String, c loại thông số ầu ra, nhƣ Integer, cấu trúc ịnh nghĩa lƣợc XML (từ xSD
namespace) cho các ầu vào và ầu ra, các hoạt ộng ƣợc cung cấp bởi dịch vụ nhƣ GetTemp,
thứ tự giao thức của mỗi hoạt ộng từ ầu vào ến ầu ra hoặc lỗi. Thêm nữa giao thức
serialization có có thể ƣợc dùng trong trao ổi thông tin nhƣ SOAP. Ngoài ra các ịa chỉ mạng
ể có thể tìm thấy các dịch vụ ƣợc ặt trong khuôn dạng URL.
2.3.2 Chức năng của WSDL
WSDLtả bốn kiểu hoạt ộng, ặc trƣng cho các hành vi của một ầu cuối. Chúng ƣợc
xác ịnh từ quan iểm của việc xây dựng nên các dịch vụ Web.
One-way: Nhận một thông iệp.
Notification: Gửi một thông iệp.
Request-response: Nhận một yêu cầu và ƣa ra một trả lời tƣơng ứng.
Solicit-response: Tạo ra một yêu cầu và nhận lại một trả lời tƣơng ứng.
Các kiểu hoạt ộng có thể ƣợc thiết kế dựa trên các kiểu ơn hƣớng, nhƣng chúng ƣợc
xác ịnh nhƣ trên ây thể hiện của các mẫu thiết kế quan trọng. dụ, nếu máy chủ
trong các lời gọi thủ tục từ xa (Remote Procedure Call hay RPC) thì tƣơng ứng với
Requestresponse, còn nếu là máy khách trong RPC thì tƣơng ứng với Solicit-response. Nhƣ
vậy, những kiểu hoạt ộng này ã tả trƣớc các mẫu trao ổi thông iệp của SOAP. Trong số
các kiểu trên, one-way và request–response những hoạt ộng ang ƣợc sdụng nhiều
chúng ƣợc hỗ trợ bởi HTTP cùng với các phƣơng pháp lập trình hƣớng ối tƣợng phổ biến.
WSDL 2.0 có một tập các kiểu hoạt ộng phong phú hơn. Những hoạt ộng này bao gồm
nhận hoặc gửi nhiều câu trả lời cho một truy vấn ơn. Tuy nhiên trong giới hạn ở ây sẽ không
mô tả chi tiết về các hoạt ộng này.
lOMoARcPSD| 58815430
2.3.3 Xây dựng WSDL
Việc xây dựng WSDL giúp phân chia ặc tả WSDL thành hai phần chính: phần giao diện
(interface) và phần cài ặt (implementation). Việc phân chia ặc tả WSDL nhƣ thế này sẽ làm
tăng khả năng un a phân ch ƣợc giao diện dịch vụ từ ó thể tái sử dụng
giúp tạo thêm nhiều phƣơng pháp thực hiện.
Phần giao diện WSDL (interface) thành phần trừu tƣợng hơn tả một dịch vụ
bằng cách bổ sung phần tử definition cho các phần tử con nhƣ types, import, message,
portType và binding. Nghĩa là một giao diện có thể sử dụng các giao diện khác.
Để thực hiện dịch vụ WSDL cần phải xem xét ến các chi tiết cụ thể của việc gắn kết
(binding) dịch vụ. Phần tử definition của dịch vụ phải một phần tử import kết nhập ít
nhất một giao diện WSDL một phần tử service (dịch vụ), trong ó bao gồm các phần tử
port (cổng). Phần tử import xác ịnh một ịnh danhvị trí cho namespace (không gian tên)
ƣợc kết nhập.
2.4 UDDI (Universal Description, Discovery, and Integration)
Đặc tả UDDI (Universal Description, Discovery, and Integration) [UDDI, 2000]
tả cơ chế ăng ký và ịnh vị các dịch vụ Web. Đặc tả này ịnh nghĩa một registry (cơ sở dữ liệu
ăng ký) trực tuyến ể các tổ chức (ví dụ các nhà cung cấp dịch vụ) có thể mô tả về tổ chức
ăng ký dịch vụ Web của họ. Registry sau ó có thể ƣợc sử dụng bởi các bên yêu cầu dịch vụ
và ngƣời sử dụng ể xác ịnh vị trí các dịch vụhọ cần. UDDI giúp các nhà cung cấp dịch
vụ liên kết các dịch vụ của họ với nhau giúp các bên yêu cầu trong việc khám phá (tìm
ra) các dịch vụ. Đây là một iều kiện tiên quyết cho việc tạo ra các dịch vụ Web.
2.4.1 Cấu trúc của UDDI
Một UDDI registry bao gồm 3 thành phần:
Trang trắng (White Pages) — ịa chỉ, thông tin liên hệ, và các ịnh danh ã biết;
Trang vàng (Yellow Pages) — phân loại dựa trên nguyên tắc phân loại tiêu chuẩn;
Trang xanh (Green Pages) — thông tin kỹ thuật về các dịch vụ ƣa ra của các doanh
nghiệp.
Trang trắng cung cấp thông tin về các doanh nghiệp cung cấp dịch vụ. Thông tin này
bao gồm tên của doanh nghiệp và một mô tả về doanh nghiệp - có thể bằng nhiều ngôn ngữ.
Sử dụng thông tin này có thể giúp tìm thấy một dịch vụ khi ã biết một số thông tin (ví dụ,
xác ịnh một dịch vụ dựa theo tên của nhà cung cấp).
Thông tin liên lạc cho các doanh nghiệp cũng ƣợc cung cấp - dụ ịa chỉ doanh nghiệp,
số iện thoại và các thông tin khác.
Các trang vàng ƣợc thực hiện theo các cặp tên-giá trị nhằm cho phép bất kỳ ịnh danh
phân loại hợp lệ nào ều ƣợc gắn vào các trang trắng cho một doanh nghiệp. Việc tìm kiếm
trong một trang vàng thể ƣợc thực hiện xác ịnh loại ngành công nghiệp hoặc loại sản
phẩm cụ thể của doanh nghiệp, hoặc xác ịnh vị trí ịa lý của doanh nghiệp.
c trang xanh chứa những thông tin doanh nghiệp sử dụng tả cách các doanh
nghiệp khác có thể tiến hành thƣơng mại iện tử với họ. Thông tin trang xanh là một mô hình
lOMoARcPSD| 58815430
lồng nhau bao gồm các quy trình kinh doanh, giới thiệu dịch vụ thông tin kết nối. Các
thông tin không phụ thuộc vào ngôn ngữ, nền tảng cách cài ặt. Các dịch vụ cũng thể
ƣợc phân loại.
2.4.2 Chức năng của UDDI
UDDI chính là một dịch vụ Web dựa trên XMLSOAP. Ví dụ, một bản ăng ký kinh
doanh một tài liệu XML. Khách hàng sử dụng một tập các giao diện SOAP (SOAP
interfaces) ƣợc xác ịnh trƣớc tìm kiếm ăng cho một dịch vụ web mong muốn. Nhà cung
cấp sử dụng giao diện SOAP ăng hai loại thông tin: (1) hình kỹ thuật (tModel),
các giao thức dịch vụ trừu tƣợng tả hành vi của một dịch vụ Web riêng lẻ, (2) các thực
thể kinh doanh (businessEntity), trong ó mô tả một cài ặt dịch vụ cung cấp mô tả về các
ặc tả của nhiều tModels. Lƣu ý mỗi ặc tả, vận chuyển, giao thức, hoặc không gian tên
riêng biệt ƣợc trình bày bởi một tModel. Tuy nhiên, một UDDI registry không thực sự lƣu
trữ các ặc tả chi tiết nvậy. Một UDDI tModel chỉ ơn giản chứa các ịa chỉ (URL) nơi
chứa những tài liệu kỹ thuật, siêu dữ liệu về các tài liệu và một khóa ể nhận biết tModel.
Hình 2.6: Các trang biểu diễn một thực thể doanh nghiệp trong UDDI registry
Hình 2.6 cho thấy các trang vàng, trắng xanh cho một doanh nghiệp. Một
businessEntity cấu trúc mức cao nhất cho tất cả các thông tin liên quan ến một doanh
nghiệp, ƣợc thể hiện hơn trong hình 2.7. Các thành phần chính của một businessEntity
UDDI và các mối quan hệ giữa chúng ƣợc thể hiện trong hình 2.8.
lOMoARcPSD| 58815430
Hình 2.7: Mô hình thông tin UML cho một thực thể doanh nghiệp trong UDDI registry
lOMoARcPSD| 58815430
Hình 2.8: Các cấu trúc dữ liệu lõi và các mối quan hệ giữ chúng cho một thực thể
doanh nghiệp UDDI
Trong nội dung này sẽ chỉ quan tâm chủ yếu ến việc ăng ký các dịch vụ Web, vì vậy
chúng ta sẽ chỉ ánh xạ mô tả WSDL của dịch vụ Web tới các mô tả dịch vụ UDDI. Hình 2.9
cho thấy sự tƣơng ứng giữa các trƣờng của một mô tả WSDL và các trƣờng của một UDDI
businessService.
Hình 2.9: So sánh giữa một tài liệu WSDL và một tài liệu ăng ký UDDI
2.4.3 Xây dựng UDDI
UDDI xác ịnh hai hàm giao diện lập trình ứng dụng (Application Programming
Interface API) cho việc truy cập ến một UDDI registry: Inquiry API lấy thông tin từ một
registry API Publish dùng lƣu trữ thông tin ó. Publish API yêu cầu truy nhập ƣợc xác
thực (việc này khá ặc biệt cho một registry không theo quy ịnh của UDDI) nhƣng Inquiry
API thì không. Các API hiện hỗ trợ 28 thông iệp SOAP, sau ây một số thông iệp quan
trọng:
Inquiry API
Tìm một doanh nghiệp hoặc dịch vụ của doanh nghiệp và các ặc tính của nó
Lấy thông tin chi tiết cần ể tƣơng tác với một doanh nghiệp Publishing API
Lƣu lại thông tin về một doanh nghiệp hoặc dịch vụ của doanh nghiệp
Xóa
An toàn
2.4.3.1 Đăng ký và công bố một dịch vụ
Sau khi ã tìm hiểu các thành phần bản của một UDDI, chúng ta sẽ xem xét một
dụ ăng từ công ty WeatherService cách thức ể dịch vụ ―thông báo nhiệt hiện thời‖
của công ty thể ƣợc tìm thấy sau ó ƣợc sử dụng bởi khách hàng. Đầu tiên, công ty
lOMoARcPSD| 58815430
WeatherService sẽ trao ổi hai thông iệp SOAP với một UDDI registry (có thể registry này
ƣợc duy trì bởi IBM tại https://uddi.ibm.com/ubr). Thông iệp SOAP ầu tiên sẽ gọi hoạt ộng
getauthToken ể thiết lập xác thực. Tiếp theo, nhƣ trong hình 2.10, sẽ ăng ký WeatherService
là một thực thể kinh doanh.
POST / HTTP / 1 . 1
Host: www. socweather . com
ContentType: t e x t / xml ; c h a r s e t ="u-8"
ContentLength: nnnn
SOAPAcon: ""
<?xml version ="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:env="hp://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<s a v e b u s i n e s s xmlns="urn:uddi-org:api_v3">
<b u s i n e s s D e t a i l t r u n c a t e d ="false">
<b u s i n e s s E n t i t y businessKey="...K1...">
<discoveryURLs>
<discoveryURL useType="homepage"> h t t p : / /www.
socweather . com/ WeatherService . html
</discoveryURL>
</discoveryURLs>
<name xml:lang="en">WeatherService Inc . </name>
<d e s c r i p t i o n xml:lang="en">P r o v i d e r of t e m p e r a t u r e s e r v i c e s
</ de s c r i p t i o n >
<c o n t a c t s >
<c o n t a c t>

Preview text:

lOMoAR cPSD| 58815430
HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
--------------------------- PHẠM VĂN CƢỜNG BÀI GIẢNG
PHÁT TRIỂN PHẦN MỀM HƢỚNG DỊCH VỤ HÀ NỘI 2014 lOMoAR cPSD| 58815430 LỜI NÓI ĐẦU
Hiện tại World-Wide Web (WWW) ang ƣợc sử dụng rộng rãi bởi con ngƣời. Nhƣng theo
nhà sáng lập ra WWW Tim Berners-Lee cho rằng WWW sẽ phải tiến hóa ể các chƣơng trình
máy tính có thể sử dụng ƣợc. Sự tiến hóa này ƣợc trông ợi từ việc thiết kế, phát triển và triển
khai các dịch vụ Web và dịch vụ Web là cụm từ ể chỉ các tiêu chuẩn cơ bản cho phép tích hợp
các ứng dụng web mà ở ó các ứng dụng có thể sử dụng các thành phần khác nhau ể tạo thành
một dịch vụ. Trên thực tế, các thành phần của Web ang ngày càng trở nên phổ biến (ubiquitous),
phân tán (distributed), không ồng nhất (heterogeneous), có xu thế tự trị (autonomous), và tùy
biến ể cho phép ngƣời dùng dễ dàng tƣơng tác và thậm chí các thành phần này có thể tƣơng
tác ƣợc với nhau trên nền tảng của Web ngữ nghĩa.
Bài giảng ―Phát triển phần mềm hƣớng dịch vụ‖ sẽ cung cấp một số kiến thức cơ bản
về các công cụ ể phát triển các dịch vụ Web, các khái niệm bản thể, các công cụ xây dựng dịch
vụ, khám phá và lựa chọn Web ngữ nghĩa. Bài giảng ƣợc chia thành 8 chƣơng:
Chƣơng 1 trình bầy một bức tranh tổng quan về tiến hóa của web, dịch vụ web và vai trò của web ngữ nghĩa.
Chƣơng 2 thảo luận về các chuẩn cơ bản ể thiết kế, phát triển và sử dụng dịch vụ Web.
Trong ó các ngôn ngữ ánh dấu mở rộng (XML), giao thức truy nhập ối tƣợng ơn giản (SOAP),
ngôn ngữ mô tả dịch vụ web (WSDL) và ngôn ngữ mô tả, khám phá, và tích hợp dịch vụ
(UDDI) cũng ƣợc trình bày trong chƣơng này.
Chƣơng 3 trình bầy về các nền tảng và công cụ phổ biến hiện nay ể phát triển dịch vụ
Web. Trong ó 2 công nghệ chính là J2EE và .NET cũng nhƣ công nghệ tƣơng tác giữa các
thành phần dịch vụ cũng ƣợc thảo luận. Một ví dụ chi tiết ể minh họa quá trình tạo và sử dụng
dịch vụ web cũng ƣợc ề cập trong chƣơng này.
Chƣơng 4 trình bầy về các nguyên lý tính toán hƣớng dịch vụ. Nền tảng kiến truc hƣớng
dịch vụ (SOA), cũng nhƣ vấn ề mô hình hóa tiến trình nghiệp vụ và các công cụ hợp dịch vụ
cũng ƣợc ề cập trong chƣơng này.
Chƣơng 5 trình bầy các khái niệm bản thể và tri thức cũng nhƣ ngô ngữ mô tả nguồn
cùng các mô hình OWL; cuối chƣơng giới thiệu cách cài ặt và sử dụng công cụ Protégé ể phát
triển các ứng dụng OWL.
Chƣơng 6 trình bầy về Web ngữ nghĩa; biểu diễn ngữ nghĩa cho dịch vụ Web; các khối
xây dựng của bản thể; và công cụ Protégé ể phát triển các ứng dụng OWL-S.
Chƣơng 7&8 trình bầy các khái niệm cơ bản về khám phá và lựa chọn dịch vụ Web ngữ
nghĩa. Các thuật toán ối sánh và các kỹ thuật tƣ vấn cũng ƣợc ề cập trong chƣơng này.
Trong quá trình biên soạn, do kinh nghiệm còn hạn chế nên cuốn bài giảng có thể tồn tại
những thiếu sót. Tác giả rất mong nhận ƣợc ý kiến óng góp từ phía ộc giả. Mọi ý kiến óng góp
xin ƣợc gửi về hòm thƣ cuongpv@ptit.edu.vn .
Hà nội, tháng 12/2014 lOMoAR cPSD| 58815430 MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ ............................................................. 3
CHƢƠNG 1 GIỚI THIỆU ..................................................................................................... 3
1.1 TIẾN HÓA CỦA WEB HIỆN NAY ................................................................................. 3
1.2 DỊCH VỤ WEB ................................................................................................................ 4
1.3 WEB NGỮ NGHĨA ......................................................................................................... 4
1.4 BÀI TẬP ........................................................................................................................... 5
CHƢƠNG 2 CÁC CHUẨN CƠ BẢN CỦA DỊCH VỤ WEB .............................................. 6
2.1 NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG XML ................................................................. 7
2.2 GIAO THỨC TRUY NHẬP ĐỐI TƢỢNG ĐƠN GIẢN SOAP ..................................... 7
2.2.1 Cấu trúc và chức năng của SOAP.............................................................................. 9
2.2.2 Body và Header ......................................................................................................... 9
2.3 WSDL ............................................................................................................................. 10
2.3.1 Cấu trúc của WSDL ................................................................................................. 10
2.3.2 Chức năng của WSDL ............................................................................................. 13
2.3.3 Xây dựng WSDL ..................................................................................................... 14
2.4 UDDI (Universal Description, Discovery, and Integration) ........................................... 14
2.4.1 Cấu trúc của UDDI .................................................................................................. 14
2.4.2 Chức năng của UDDI .............................................................................................. 15
2.4.3 Xây dựng UDDI ...................................................................................................... 17
2.5 BÀI TẬP ......................................................................................................................... 24
CHƢƠNG 3 CÔNG NGHỆ CHO PHÁT TRIỂN DỊCH VỤ WEB .................................... 28
3.1 NỀN TẢNG CHO PHÁT TRIỂN DỊCH VỤ WEB ....................................................... 28
3.1.1 J2EE ......................................................................................................................... 28
3.1.2 .NET ........................................................................................................................ 30
3.2 TƢƠNG TÁC GIỮA CÁC THÀNH PHẦN DỊCH VỤ ................................................ 30
3.3 PHÁT TRIỂN VÀ SỬ DỤNG DỊCH VỤ WEB ............................................................ 31
3.4 CÔNG CỤ CHO PHÁT TRIỂN DỊCH VỤ WEB ......................................................... 37
3.4.1 Lập trình WSDL ...................................................................................................... 37
3.4.2 Lập trình Web Service với Java ............................................................................... 38
3.5 BÀI TẬP ......................................................................................................................... 39
CHƢƠNG 4 CÁC NGUYÊN LÝ TÍNH TOÁN HƢỚNG DỊCH VỤ ............................... 40
4.1 CÁC THỂ HIỆN ỨNG DỤNG CỦA DỊCH VỤ WEB .................................................. 40
4.1.1 Việc phối hợp các ứng dụng trong một doanh nghiệp ............................................. 40
4.1.2 Việc phối hợp các ứng dụng giữa các doanh nghiệp ............................................... 41
4.1.3 Cấu hình ứng dụng .................................................................................................. 41
4.1.4 Lựa chọn ộng ........................................................................................................... 42
4.1.5 Khả năng chịu lỗi của phần mềm ............................................................................ 42
4.1.6 Lƣới ......................................................................................................................... 43
4.1.7 Phát triển phần mềm ................................................................................................ 43 lOMoAR cPSD| 58815430
4.2 KIẾN TRÚC HƢỚNG DỊCH VỤ ................................................................................. 43
4.2.1 Các yếu tố của kiến trúc hƣớng dịch vụ .................................................................. 43
4.2.2 So sánh lời gọi thủ tục từ xa (RPC) với ịnh hƣớng tài liệu (OD) ........................... 44
4.3 TIẾN TRÌNH NGHIỆP VỤ ............................................................................................ 45
4.3.1 Tiến trình nghiệp vụ (business process) .................................................................. 45
4.3.2 Mô tả tiến trình nghiệp vụ ....................................................................................... 46
4.4 HỢP DỊCH VỤ ............................................................................................................... 49
4.4.1 Hợp dịch vụ ............................................................................................................. 49
4.4.2 Công cụ BPEL cho hợp nghiệp vụ .......................................................................... 52
4.5 BÀI TẬP ......................................................................................................................... 56
CHƢƠNG 5 ONTOLOGY VÀ OWL ................................................................................. 57
5.1 KHÁI NIỆM BẢN THỂ (ONTOLOGY) VÀ TRI THỨC ............................................. 58
5.2 NGÔN NGỮ MÔ TẢ NGUỒN RDF ............................................................................. 58
5.3 NGÔN NGỮ MÔ TẢ NGUỒN RDF ............................................................................. 59
5.3.1 Xác ịnh lớp dựa trên OWL ...................................................................................... 59
5.3.2 Xác ịnh các tính chất dựa trên OWL ....................................................................... 61
5.3.3 Ba mô hình với OWL .............................................................................................. 62
5.3.4 Ví dụ ........................................................................................................................ 62
5.4 CÔNG CỤ PROTÉGÉ CHO XÂY DỰNG OWL ......................................................... 64
5.5 BÀI TẬP ......................................................................................................................... 68
CHƢƠNG 6 DỊCH VỤ WEB NGỮ NGHĨA VÀ OWL-S .................................................. 70
6.1 BIỂU DIỄN NGỮ NGHĨA CỦA DỊCH VỤ WEB ........................................................ 70
6.2 BIỂU DIỄN NGỮ NGHĨA CỦA DỊCH VỤ WEB ........................................................ 71
6.3 CÁC KHỐI XÂY DỰNG OWL-S ................................................................................. 71
6.3.1 Bản thể OWL-S profile ............................................................................................ 71
6.3.2 Bản thể OWL-S process .......................................................................................... 73
6.3.3 Bản thể OWL-S grounding ...................................................................................... 75
6.4 CÔNG CỤ PROTÉGÉ CHO XÂY DỰNG OWL-S ...................................................... 76
6.5 BÀI TẬP ......................................................................................................................... 81
CHƢƠNG 7 KHÁM PHÁ DỊCH VỤ WEB NGỮ NGHĨA ................................................ 81
7.1 KHÁM PHÁ DỊCH VỤ WEB NGỮ NGHĨA ................................................................ 81
7.2 THIẾT KẾ CƠ CHẾ KHÁM PHÁ DỊCH VỤ WEB NGỮ NGHĨA ............................. 82
7.2.1 Kiến trúc cơ chế khám phá ...................................................................................... 82
7.2.2 Các thuật toán ối sánh .............................................................................................. 84
7.2.3 Chi tiết cài ặt ............................................................................................................ 86
CHƢƠNG 8 LỰA CHỌN DỊCH VỤ WEB NGỮ NGHĨA ................................................ 87
8.1 KHÁI NIỆM LỰA CHỌN DỊCH VỤ ............................................................................ 87
8.2 LỰA CHỌN DỰA TRÊN ĐỐI SÁNH NGỮ NGHĨA ................................................... 88
8.3 LỰA CHỌN DỰA TRÊN MÔ HÌNH XÃ HỘI ............................................................. 90
8.3.1 Các kỹ thuật tƣ vấn ................................................................................................. 90
8.3.2 Lựa chọn dịch vụ dựa trên tƣ vấn ........................................................................... 91
TÀI LIỆU THAM KHẢO ........................................................................................................ 92 lOMoAR cPSD| 58815430
Danh mục các từ viết tắt và thuật ngữ
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ B2B Business-to-Business B2C Business-to-Consumer BPEL
Business Process Execution Language
BPEL4WS Business Process Execution Language for Web Services BPML
Business Process Management Language ebXML
Electronic Business eXtensible Markup Language EDI Electronic Data Interchange HTTP Hypertext Transfer Protocol IDL Interface Definition Language OWL Web Ontology Language OWL-S OWL service RDF
Resource Description Framework RPC Remote Procedure Call SOAP Simple Object Access Protocol TCP Transmission Control Protocol UDDI
Universal Description, Discovery, and Integration protocol URI Uniform resource identifier WSCI
Web Service Choreography Interface WSDL
Web Services Description Language WSML Web Service Markup Language WWW World Wide Web XACML
eXtensible Access Control Markup Language XML EXtensible Markup Language XPDL
XML Process Definition Language iii
CHƢƠNG 1 GIỚI THIỆU 1.1
TIẾN HÓA CỦA WEB HIỆN NAY
Mặc dù hiện tại World-Wide Web (WWW) ƣợc sử dụng bởi con ngƣời. Tuy nhiên,
theo hầu hết các chuyên gia cũng nhƣ nhà sáng lập ra WWW, Tim Berners-Lee, ã cho rằng
WWW sẽ phải tiến hóa ể các hệ thống máy tính có thể sử dụng ƣợc. Sự tiến hóa này ƣợc
trông ợi từ việc thiết kế, phát triển và triển khai các dịch vụ Web. Cụm từ dịch vụ Web ể chỉ
các tiêu chuẩn cơ bản cho phép tích hợp các ứng dụng web mà các ứng dụng này có thể sử
dụng các thành phần khác nhau ể tạo thành một dịch vụ.
Các thành phần của Web ngày càng trở nên phổ biến (ubiquitous), phân tán
(distributed), không ồng nhất (heterogeneous) và có xu thế tự trị (autonomous). Ban ầu, các
thành phần của môi trƣờng này là các trang Web. Nói cách khác, các trang Web cung cấp cả
nội dung và dịch vụ. Nhƣng ngày một nhiều trong tƣơng lai Web cũng trở nên ngày càng
tiến hóa và các thành phần của nó ngày càng có khả năng tùy biến. Trong ó các thành phần
của Web cho phép ngƣời dùng dễ dàng tƣơng tác và thậm chí các thành phần này có thể
tƣơng tác với nhau nhƣ những chƣơng trình máy tính. Cụ thể, web ã tiến triển từ thế hệ ầu
tiên với công nghệ trình duyệt thông thƣờng, và cho ến nay là thế hệ thứ 4 với các dịch vụ
web dựa trên ngữ nghĩa. Bảng 1.1 minh họa iều này. lOMoAR cPSD| 58815430
Bảng 1.1: Tiến hóa web Thế hệ web Phạm vi Công nghệ Ví dụ thực tế 1 Tất cả Trình duyệt Các trang HTML 2 Chƣơng trình Giao tác với màn
Phát sinh nội dung HTML một hình cách có hệ thống 3
Theo tiêu chuẩn Các dịch vụ web
Các dịch vụ ƣợc mô tả hình thức 4 Ngữ nghĩa
Các dịch vụ web ngữ Các dịch vụ ƣợc mô tả theo ngữ nghĩa nghĩa 1.2 DỊCH VỤ WEB
Cũng giống nhƣ khái niệm ối tượng (object) của thế hệ trƣớc ây, khái niệm dịch vụ
(service) là từ ƣợc sử dụng rộng rãi hiện nay. Khái niệm dịch vụ có thể có các ý nghĩa khác
nhau ối với những ngƣời khác nhau. Nhƣng nhìn chung dịch vụ Web (Web service) có thể ƣợc ịnh nghĩa là:
▪ Một phần của nhà cung cấp (piece of business) có thể truy cập thông qua Internet bằng
cách sử dụng các tiêu chuẩn mở ( ịnh nghĩa của công ty Microsoft);
▪ Bao phủ, lỏng lẻo, giao tác bằng các hàm thông qua các giao thức chuẩn trên Web (
ịnh nghĩa của công ty DestiCorp);
▪ Thành phần phần mềm kết nối lỏng lẻo cùng tƣơng tác với nhau thông qua các chuẩn
công nghệ Internet ( ịnh nghĩa của công ty Gartner);
▪ Một ứng dụng phần mềm nhận dạng bằng một ịnh dạng tài nguyên thống nhất
(Uniform Resource Identifier), có giao diện và bắt buộc có khả năng ƣợc xác ịnh, mô
tả, và phát hiện bởi bằng ngôn ngữ ánh dấu mở rộng (XML), và hỗ trợ tƣơng tác trực
tiếp với các ứng dụng phần mềm khác sử dụng các thông iệp XML dựa trên các giao
thức Internet ( ịnh nghĩa của tổ chức W3C). 1.3 WEB NGỮ NGHĨA
Tim Berners-Lee, cha ẻ của World Wide Web, ã mô tả rằng: các thành phần của web sẽ
không tập trung mà có xu hƣớng phân tán khắp nơi, không ồng nhất và tự trị. Đó chính là
web ngữ nghĩa (Web Semantics). Thông tin trên web ƣợc ánh dấu (markup) lên ể trình diễn
và ƣợc hiển thị bằng một trình duyệt. Con ngƣời có thể giải thích nội dung của thông tin vì
họ ã có nền tảng tri thức mà họ chia sẻ với những ngƣời tạo ra các trang web ó. Trừ khi các
chƣơng trình ƣợc tạo ra ể biểu diễn và khai thác tri thức nhƣ vậy. Việc xử lý vấn ề này
thƣờng bị giới hạn vì các mã chƣơng trình ƣợc lập trình sẵn (hard-coded); iều này không
phù hợp với một thiết lập ộng (dynamic) vì các chi tiết về thông tin trên web có thể dễ dàng thay ổi theo thời gian.
Ví dụ, chúng ta có thể viết một chƣơng trình sao chép màn hình (screen-scraping) ể
trích xuất (extract) giá một cuốn sách từ một trang kết quả tìm kiếm trên trang thƣơng mại
iện tử amazon.com. Chƣơng trình này sẽ dựa vào cú pháp của các trang web ã ƣợc mã hóa
theo một ngữ pháp hình thức (formal gramma). Bằng trực giác, một chƣơng trình có thể ƣợc
hƣớng dẫn ể ọc giá từ các trang kết quả phân tích một cách thích hợp. Tùy thuộc vào cấu lOMoAR cPSD| 58815430
trúc của trang tại các trang web nhất ịnh mà những hƣớng dẫn này có thể phải thay ổi mà
không ƣợc báo trƣớc (ad hoc). Ví dụ, thông tin về giá của cuốn sách A ở dòng thứ 2, cột 3
bảng thứ 4 trong khung (frame) thứ 5 vào hôm nay; nhƣng hôm sau do việc bổ sung thêm
một vài loại hàng hóa khác có thể khiến thông tin về giá của cuốn sách A không còn ở vị trí
cũ nữa. Mặc dù có một số công cụ hiện tại cho phép ơn giản hóa việc phân tích và khai thác
nhƣ vậy, nhƣng nhiệm vụ này vẫn òi hỏi công sức rất lớn của các lập trình viên. Hơn nữa,
chƣơng trình có thể vẫn có lỗi khi cấu trúc của bất kỳ của các trang Web mà nó ọc bị thay ổi.
Trong Web ngữ nghĩa, trang sẽ ƣợc ánh dấu lên không chỉ với các thông tin chi tiết cần
hiển thi; mà còn ƣợc ánh dấu dựa trên ý nghĩa của nội dung. Nói cách khác, nhƣ ví dụ trên
thì trang kết quả chứa những gì giá là. Một chƣơng trình sẽ trích xuất giá sẽ tìm thấy những
giá ngay cả khi bố trí của trang ã ƣợc thay ổi. In other words, the Nói cách khác, ánh dấu
trên Web sẽ tiến triển từ các cú pháp chỉ ơn thuần là cấu trúc của các thông tin ến ngữ nghĩa
ể bắt ý nghĩa của các thông tin. 1.4 BÀI TẬP
Sử dụng một công cụ lập trình Web nhƣ Java Server Pages (JSP) hoặc Active Server
Pages (ASP) ể xây dựng một Website cho cửa hàng bán sách trực tuyến. Mỗi cuốn sách có
các thông tin về tác giả, tựa ề sách, nhà xuất bản, năm xuất bản, và giá. Yêu cầu:
- Xây dựng cơ sở dữ liệu quản lý sách cho cửa hàng;
- Phát triển các trang Web cho phép ngƣời quản trị cập nhật, bổ sung, sửa, xóa, thống
kê các quyển sách ã ƣợc bán và còn lại theo thời iểm nào ó;
- Phát triển các trang Web cho phép ngƣời dùng có thể tìm kiếm và ặt mua sách. lOMoAR cPSD| 58815430 CHƢƠNG 2
CÁC CHUẨN CƠ BẢN CỦA DỊCH VỤ WEB
Mặc dù vấn ề dịch vụ Web ang ƣợc quan tâm; song ý tƣởng của cung cấp các dịch vụ
trên Web là khá cũ. Nhìn lại chúng ta có thể thấy rằng việc cung cấp và sử dụng dịch vụ Web
ã có từ nhiều năm trƣớc ây. Ví dụ, danh sách ịa chỉ thƣ iện tử của những ngƣời phản hồi là
những dịch vụ mà ta có thể ăng ký, hay những catalogue trực tuyến của các danh sách gửi
thƣ với các chủ ề cụ thể mà ta ang quan tâm. Sự khác biệt chính giữa các dịch vụ cũ và các
dịch vụ Web hiện ại là ối với các dịch vụ cũ thì cần thiết phải có sự can thiệp của con ngƣời.
Ngày nay, các dịch vụ ƣợc mô tả và sử dụng theo các chuẩn. Mô hình kiến trúc chung cho
các dịch vụ Web ƣợc thể hiện trong hình vẽ 2.1; Nó bao gồm ba ối tƣợng: 1.
Cung cấp dịch vụ (service provider): nhà tạo ra các dịch vụ Web và quảng cáo
cho ngƣời sử dụng tiềm năng ăng ký các dịch vụ Web với các nhà môi giới dịch vụ. 2.
Môi giới dịch vụ (service broker): duy trì một ăng ký các dịch vụ xuất bản và
giới thiệu các nhà cung cấp dịch vụ ến những ngƣời yêu cầu dịch vụ.
3- Ngƣời yêu cầu dịch vụ (service resquestor): ngƣời tìm kiếm, ăng ký và yêu cầu sử
dụng dịch vụ phù hợp từ môi giới dịch vụ.
Các kiến trúc cho các dịch vụ Web ƣợc thành lập trên nguyên tắc và tiêu chuẩn ể kết
nối, truyền thông, mô tả, và khai phá. Đối với các nhà cung cấp và yêu cầu của các dịch vụ
ƣợc thông tin kết nối và trao ổi thì cần thiết phải có một ngôn ngữ chung. Đó chính là ngôn
ngữ ánh dẫu mở rộng (eXtensible Markup Language hay XML). Một giao thức chung cũng
cần thiết cho hệ thống ể giao tiếp với nhau ể ngƣời dùng có thể yêu cầu dịch vụ ó chính là
giao thức truy cập ối tƣợng ơn giản (Simple Object Access Protocol, SOAP).
Hình 2.1: Mô hình kiến trúc chung cho các dịch vụ Web
Các dịch vụ phải ƣợc mô tả theo một ịnh dạng máy có thể ọc ƣợc, mà tên của các hàm,
các tham số, và các kết quả có thể ƣợc xác ịnh. Điều này ƣợc cung cấp bởi ngôn ngữ mô tả lOMoAR cPSD| 58815430
dịch vụ Web (Web Services Description Language hay WSDL). Cuối cùng, ngƣời dùng và
các doanh nghiệp cần có một cách ể tìm các dịch vụ mà họ yêu cầu. Điều này có thể ƣợc
giải quyết bởi chuẩn mô tả, khai phá, và tích hợp (Universal Description Discovery
Integration hay UDDI). Bên cạnh các chuẩn XML, SOAP, WSDL, UDDI cần có các phƣơng
pháp cho ại diện ngữ nghĩa của các dịch vụ sẽ ƣợc trình bày ở các chƣơng tiếp theo. Trong
chƣơng này ta sẽ tìm hiểu bốn chuẩn ngôn ngữ cơ bản cho dịch vụ Web là XML, SOAP, WSDL và UDDI.
2.1 NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG XML
Ngôn ngữ cơ bản nhất của các ngôn ngữ trên là ngôn ngữ ánh dấu mở rộng XML. Các
thẻ XML truyền ạt thông tin về ý nghĩa của dữ liệu. Không chỉ mô tả cách thức dữ liệu sẽ
hiển thi nhƣ là trƣờng hợp của HTML. XML tuân thủ cú pháp của HTML, vì vậy việc phân
tích và xử lý trở nên dễ dàng hơn. XML có thể cung cấp các thẻ ể mô tả tài liệu có cấu trúc
hoặc phi cầu trúc. XML còn cho phép truy vấn dữ liệu cảm cấu trúc (structure-sensitive), có
nghĩa là chúng ta có thể truy vấn một tài liệu XML dựa trên cấu trúc của nó theo lĩnh vực
khác nhau. Ngoài ra, dữ liệu XML ƣợc gắn thẻ có thể ƣợc xác nhận một cách máy móc. Nói
tóm lại, XML cung cấp một ịnh dạng dữ liệu cho các tài liệu và dữ liệu có cấu trúc, nhƣng
không xác ịnh ngữ nghĩa của các ịnh dạng ể chia sẻ thông tin và tri thức cũng nhƣ tƣơng tác
giữa các ứng dụng khác nhau.
Cú pháp XML cung cấp một tập luật ể mô tả nội dung chứ không chỉ hiển thị nội dung,
và nó ƣợc sử dụng ể cung cấp cấu trúc cho dữ liệu. Một tài liệu XML tƣơng ứng với một
cấu trúc cây. Các phần tử chức năng (element function) ƣợc ặt vào trong các cặp dấu ngoặc.
Ví dụ về một tài liệu XML ơn giản ƣợc trình bầy trong hình 1.1a.
Hình 1.1a: một tài liệu XML ơn giản
Trong ví dụ trên có thẻ mở là và thẻ óng là . Các phần
tử có thể chứa (nesting) dữ liệu văn bản hoặc chứa các phần tử khác. Các phần tử có thể có
một số thuộc tính (attribute) mà mỗi thuộc tính gắn với một giá trị. Giá trị của thuộc tính
phải là xâu kí tự (có thể ƣợc óng gói vào cặp dấu ‗ ‘ hoặc ― ‖). Thuộc tính ƣợc ặt vào sau
thẻ mở của phần tử (xem ví dụ trên ta thấy <temperature scale=”Celsius”>. Một tài liệu
XML gồm một phần tử gốc (top-level element) có thể chứa các phần tử. Nói cách khác cây
tài liệu có gốc là phần tử gốc.
2.2 GIAO THỨC TRUY NHẬP ĐỐI TƢỢNG ĐƠN GIẢN SOAP
Dự ịnh ban ầu SOAP ƣợc phát triển ể cung cấp cho các máy tính ƣợc nối mạng với
các dịch vụ gọi thủ tục từ xa (Remote Procedure Call -RPC) ƣợc viết bằng XML. Nó ã trở
thành một giao thức ơn giản và nhẹ ể trao ổi thông iệp XML trên Web sử dụng HTTP lOMoAR cPSD| 58815430
(HyperText Transfer Protocol), SMTP (Simple Mail Transfer Protocol), và SIP (Session Initiation Protocol).
Trong thực tế, HTTP là giao thức phổ biến nhất cho SOAP và là lựa chọn cho các chuẩn
tƣơng thích, chẳng hạn nhƣ BP (Business Process) 1.0.
Thông iệp SOAP ƣợc có thể ƣợc chuyển từ một bên gửi ến bên nhận. Các thông iệp
SOAP ƣợc ịnh dạng nhƣ các tài liệu XML. Nói một cách khác SOAP không ịnh ra các ngữ
nghĩa ứng dụng hoặc cài ặt chi tiết mà nó chỉ cung cấp một cơ chế gọn nhẹ, hiệu quả cho
phép trao ổi thông tin có cấu trúc và ịnh dạng giữa các thành phần (components) trong môi
trƣờng phân tán bằng các tài liệu XML. Chính vì lẽ ó mà SOAP cho phép các ứng dụng chạy
trên các nền tảng khác nhau có thể trao ổi thông tin cho nhau. Các ặc trƣng của SOAP bao gồm:
- Tính ơn giản và dễ dàng mở rộng;
- Các thông iệp ều ƣợc ịnh dạng XML;
- Giao thức truyền dữ liệu riêng;
- Kết nối giữa bên gửi và bên nhận là lỏng lẻo (loosed coupling); nghĩa là không cần cơ chế tham chiếu;
- Độc lập với nền tảng (platform independent) và ộc lập với ngôn ngữ lập trình.
Hình 2.2: Một yêu cầu SOAP
Hình 2.2 là ví dụ về một thông iệp SOAP. Trong ví dụ này, một công ty sản xuất có thể
trực tiếp (ví dụ Dell) gọi một nhà cung cấp (ví dụ Intel) các danh mục hoặc ơn ặt hàng, hoặc
có thể gửi một ơn ặt hàng ến các nhà cung cấp. Khi ó dịch vụ ƣợc mô hình hóa nhƣ các
phƣơng thức, sau ó thành phần dịch vụ ƣợc thực hiện thông qua các kịch bản (scripts) ể gọi ến phƣơng thức. lOMoAR cPSD| 58815430
2.2.1 Cấu trúc và chức năng của SOAP
Thành phần gốc của một thông iệp SOAP là phong thƣ (envelope). Phong thƣ chứa
các thành phần Header và Body. Trong Header có các thành phần con gọi là Header entry
dùng ể diễn giải các ngữ nghĩa cho thông iệp SOAP. Nhờ ó, thông iệp SOAP ƣợc ịnh tuyến
dựa trên các thông tin trong phần Header. Envelope Header Header entry Header entry Header entry Body
Hình 2.3: Cấu trúc thông iệp SOAP
Hình 2.4 cho thấy một thông iệp SOAP ƣợc óng gói trong phƣơng thức POST của giao
thức HTTP. Phƣơng thức POST của HTTP ƣợc sử dụng thay vì phƣơng thức GET. Thông
iệp ƣợc gửi ến www.socweather.com ể yêu cầu các dịch vụ Web thực thi hàm GetTemp sử
dụng "Honolulu" nhƣ giá trị của tham số City và "now" làm giá trị của tham số When. Các
thông iệp kết quả SOAP chứa nhiệt ộ là tham số DegreesCelsius với giá trị 30.
2.2.2 Body và Header
Mỗi thông iệp SOAP phải bao gồm phần body, thƣờng ƣợc thông dịch (interpreted) bởi
ultimateReceiver. Header cung cấp thông tin về các iểm ến trung hoặc cuối cùng của thông iệp SOAP (xem hình 2.2a). lOMoAR cPSD| 58815430
Hình 2.2a: ví dụ về SOAP header
Hình 2.4: Một thông iệp SOAP 2.3 WSDL
2.3.1 Cấu trúc của WSDL
Mô hình kiến trúc cho các dịch vụ Web giả thiết là các dịch vụ có thể ƣợc tìm ra và sử
dụng. Nghĩa là chúng ta sẽ có các mô tả về dịch vụ một cách chính xác. Ngôn ngữ mô tả dịch
vụ Web (Web Services Description Language hay WSDL) là một ngôn ngữ XML dùng ể mô
tả một giao diện lập trình cho một dịch vụ Web [Christensen et al., 2001]. Mô tả bao gồm
ịnh nghĩa của các kiểu dữ liệu, ịnh dạng của thông iệp ầu vào và ầu ra, các hoạt ộng ƣợc
cung cấp bởi dịch vụ (nhƣ GetTemp), ịa chỉ mạng, và các ràng buộc giao thức. Để hiểu ƣợc
WSDL một cách rõ ràng nhất, xem ví dụ ở hình 2.5 sau ây.
<?xml version ="1.0"?>
<!−− the root element , w s d l : d e f i n i t i o n s , d e f i n e s a s e t of −−>
<
!−− r e l a t e d s e r v i c e s −−>
<w s d l : d e f i n i t i o n s name="Temperature"
targetNamespace="http://www.socweather.com/schema" x m l n
s : t s="http://www.socweather.com/TempSvc.wsdl" x m l n s : t s
x s d="http://schemas.socweather.com/TempSvc.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<!−− ws d l : t y p e s e n c a p s u l a t e s schema d e f i n i t i o n s of
−−> <
!−− communication t y p e s ; here using xsd −−> <w s d l : t y p e s>
<!−− a l l type d e c l a r a t i o n s are expressed in xsd −−> <xsd:schema
targetNamespace="http://namespaces.socweather.com"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<!−− xsd d e f : GetTemp [ Ci ty s t r i n g , When s t r i n g ] −−>
<x s d : e l e m e n t name="GetTemp">
<xsd:complexType>
<xsd:sequence> lOMoAR cPSD| 58815430
<x s d : e l e m e n t name="City" type="string"/>
<x s d : e l e m e n t name="When" type="string"/>
</ xsd:sequence>
</xsd:complexType>
</ xsd:element>
<!−− xsd d e f : GetTempResponse [ DegreesCel s ius i n t e g e r ] −−>
<x s d : e l e m e n t name="GetTempResponse">
<!−− XML Schema e n t r y as above −−>
</ xsd:element>
<!−− xsd d e f : GetTempFault [ errorMessage s t r i n g ] −−>
<x s d : e l e m e n t name="GetTempFault">
<!−− XML Schema e n t r y as above −−>
</ xsd:element>
</xsd:schema>
</ w s d l : t y p e s>
<!−− wsdl :message element s d e s c r i b e p o t e n t i a l t r a n s a c t i o n s −−>
<!−− Most messages , as here , have only one par t . M u l t i p l e −−>
<!−− par t s provide a way t o aggregate complex messages −−>
<!−− r e q u e s t GetTempRequest i s of type GetTemp −−>
<wsdl:message name="GetTempRequest">
<w s d l : p a r t name="body" element="tsxsd:GetTemp"/>
</ wsdl:message>
<!−− response GetTempResponse i s of t y p e GetTempResponse −−>
<
wsdl:message name="GetTempResponse">
<w s d l : p a r t name="body" element="tsxsd:GetTempResponse"/>
<
/ wsdl:message>
<!−− wsdl :por tType d e s c r ib e s messages in an o p e r a t i o n −−>
<wsdl:portType name="GetTempPortType">
<!−− w s d l : o p e r a t i o n de s c r ibe s the e n t i r e pr o t o c o l from −−>
<!−− input to o u t p u t or f a u l t −−>
<w s d l : o p e r a t i o n name="GetTemp">
<!−− The order input preceding o u t p u t i n d i c a t e s the −−>
<!−− request−response o p e r a t i o n t y p e −−>
<w s d l : i n p u t message="ts:GetTempRequest"/>
<w s d l : o u t p u t message="ts:GetTempResponse"/>
<w s d l : f a u l t message="ts:GetTempFault"/>
</ w s d l : o p e r a t i o n >
</ wsdl:portType>
<!−− w s d l : b i n d i n g s p e c i f i e s a s e r i a l i z a t i o n pr o t o c o l −−>
<w s d l : b i n d i n g name="TempSvcSoapBinding"
type="ts:GetTempPortType">
<!−− l e v e r a g e o f f s o a p : b i n d i n g document s t y l e −−>
<s o a p : b i n d i n g s t y l e ="document"
t r a n s p o r t ="http://schemas.xmlsoap.org/soap/http"/>
<!−− semi−opaque c o n t a i n e r of network t r a n s p o r t d e t a i l s −−>
<!−− c l a s s e d by soap:bi n d i n g above @@@−−>
<w s d l : o p e r a t i o n name="GetTemp">
<s o a p : o p e r a t i o n
soapAction="http://www.socweather.com/TempSvc"/>
<!−− f u r t h e r s p e c i f y that the messages in the −−> lOMoAR cPSD| 58815430
<!−− w s d l : o p e r a t i o n "GetTemp" us e SOAP ? @@@ −−>
<
w s d l : i n p u t>
<soap:body use="literal"
namespace="http://schemas.socweather.com/TempSvc.xsd"/> lOMoAR cPSD| 58815430
</ w s d l : i n p u t>
<!−− As above f o r ws d l : o u t p u t and ws d l : f a u l t −−>
<
/ w s d l : o p e r a t i o n >
</ wsdl:binding>
<!−− w s d l : s e r v i c e names a new s e r v i c e "TemperatureService" −−>
<w s d l : s e r v i c e name="TemperatureService">
<wsdl:documentation>socweather . com t e m p e r a t u r e s e r v i c e
</wsdl:documentation>
<!−− connect i t to the binding "TempSvcSoapBinding" above −−>
<w s d l : p o r t name="GetTempPort" binding="ts:TempSvcSoapBinding">
<!−− g i v e t h e binding a network addr e s s −−>
<s o a p : a d d r e s s l o c a t i o n ="http://www.socweather.com/TempSvc"/>
<
/ws d l : p o r t>
</ w s d l : s e r v i c e >
</ w s d l : d e f i n i t i o n s >
Hình 2.5: Một ví dụ WSDL
WSDL cho biết tên của các dịch vụ, nhƣ GetTemp, các loại thông số ầu vào, nhƣ
String, các loại thông số ầu ra, nhƣ Integer, cấu trúc ịnh nghĩa lƣợc ồ XML (từ xSD
namespace) cho các ầu vào và ầu ra, các hoạt ộng ƣợc cung cấp bởi dịch vụ nhƣ GetTemp,
thứ tự giao thức của mỗi hoạt ộng từ ầu vào ến ầu ra hoặc lỗi. Thêm nữa giao thức
serialization có có thể ƣợc dùng trong trao ổi thông tin nhƣ SOAP. Ngoài ra các ịa chỉ mạng
ể có thể tìm thấy các dịch vụ ƣợc ặt trong khuôn dạng URL.
2.3.2 Chức năng của WSDL
WSDL mô tả bốn kiểu hoạt ộng, ặc trƣng cho các hành vi của một ầu cuối. Chúng ƣợc
xác ịnh từ quan iểm của việc xây dựng nên các dịch vụ Web.
▪ One-way: Nhận một thông iệp.
▪ Notification: Gửi một thông iệp.
▪ Request-response: Nhận một yêu cầu và ƣa ra một trả lời tƣơng ứng.
▪ Solicit-response: Tạo ra một yêu cầu và nhận lại một trả lời tƣơng ứng.
Các kiểu hoạt ộng có thể ƣợc thiết kế dựa trên các kiểu ơn hƣớng, nhƣng chúng ƣợc
xác ịnh nhƣ trên vì ây là thể hiện của các mẫu thiết kế quan trọng. Ví dụ, nếu là máy chủ
trong các lời gọi thủ tục từ xa (Remote Procedure Call hay RPC) thì tƣơng ứng với
Requestresponse, còn nếu là máy khách trong RPC thì tƣơng ứng với Solicit-response. Nhƣ
vậy, những kiểu hoạt ộng này ã mô tả trƣớc các mẫu trao ổi thông iệp của SOAP. Trong số
các kiểu trên, one-way và request–response là những hoạt ộng ang ƣợc sử dụng nhiều và
chúng ƣợc hỗ trợ bởi HTTP cùng với các phƣơng pháp lập trình hƣớng ối tƣợng phổ biến.
WSDL 2.0 có một tập các kiểu hoạt ộng phong phú hơn. Những hoạt ộng này bao gồm
nhận hoặc gửi nhiều câu trả lời cho một truy vấn ơn. Tuy nhiên trong giới hạn ở ây sẽ không
mô tả chi tiết về các hoạt ộng này. lOMoAR cPSD| 58815430
2.3.3 Xây dựng WSDL
Việc xây dựng WSDL giúp phân chia ặc tả WSDL thành hai phần chính: phần giao diện
(interface) và phần cài ặt (implementation). Việc phân chia ặc tả WSDL nhƣ thế này sẽ làm
tăng khả năng mô un hóa và phân tách ƣợc giao diện dịch vụ ể từ ó có thể tái sử dụng và
giúp tạo thêm nhiều phƣơng pháp thực hiện.
Phần giao diện WSDL (interface) là thành phần trừu tƣợng hơn ể mô tả một dịch vụ
bằng cách bổ sung phần tử definition cho các phần tử con nhƣ types, import, message,
portType và binding. Nghĩa là một giao diện có thể sử dụng các giao diện khác.
Để thực hiện dịch vụ WSDL cần phải xem xét ến các chi tiết cụ thể của việc gắn kết
(binding) dịch vụ. Phần tử definition của dịch vụ phải có một phần tử import ể kết nhập ít
nhất một giao diện WSDL và một phần tử service (dịch vụ), trong ó bao gồm các phần tử
port (cổng). Phần tử import xác ịnh một ịnh danh và vị trí cho namespace (không gian tên) ƣợc kết nhập.
2.4 UDDI (Universal Description, Discovery, and Integration)
Đặc tả UDDI (Universal Description, Discovery, and Integration) [UDDI, 2000] mô
tả cơ chế ăng ký và ịnh vị các dịch vụ Web. Đặc tả này ịnh nghĩa một registry (cơ sở dữ liệu
ăng ký) trực tuyến ể các tổ chức (ví dụ các nhà cung cấp dịch vụ) có thể mô tả về tổ chức và
ăng ký dịch vụ Web của họ. Registry sau ó có thể ƣợc sử dụng bởi các bên yêu cầu dịch vụ
và ngƣời sử dụng ể xác ịnh vị trí các dịch vụ mà họ cần. UDDI giúp các nhà cung cấp dịch
vụ liên kết các dịch vụ của họ với nhau và giúp các bên yêu cầu trong việc khám phá (tìm
ra) các dịch vụ. Đây là một iều kiện tiên quyết cho việc tạo ra các dịch vụ Web.
2.4.1 Cấu trúc của UDDI
Một UDDI registry bao gồm 3 thành phần:
▪ Trang trắng (White Pages) — ịa chỉ, thông tin liên hệ, và các ịnh danh ã biết;
▪ Trang vàng (Yellow Pages) — phân loại dựa trên nguyên tắc phân loại tiêu chuẩn;
▪ Trang xanh (Green Pages) — thông tin kỹ thuật về các dịch vụ ƣa ra của các doanh nghiệp.
Trang trắng cung cấp thông tin về các doanh nghiệp cung cấp dịch vụ. Thông tin này
bao gồm tên của doanh nghiệp và một mô tả về doanh nghiệp - có thể bằng nhiều ngôn ngữ.
Sử dụng thông tin này có thể giúp tìm thấy một dịch vụ khi ã biết một số thông tin (ví dụ,
xác ịnh một dịch vụ dựa theo tên của nhà cung cấp).
Thông tin liên lạc cho các doanh nghiệp cũng ƣợc cung cấp - ví dụ ịa chỉ doanh nghiệp,
số iện thoại và các thông tin khác.
Các trang vàng ƣợc thực hiện theo các cặp tên-giá trị nhằm cho phép bất kỳ ịnh danh
phân loại hợp lệ nào ều ƣợc gắn vào các trang trắng cho một doanh nghiệp. Việc tìm kiếm
trong một trang vàng có thể ƣợc thực hiện ể xác ịnh loại ngành công nghiệp hoặc loại sản
phẩm cụ thể của doanh nghiệp, hoặc xác ịnh vị trí ịa lý của doanh nghiệp.
Các trang xanh chứa những thông tin doanh nghiệp sử dụng ể mô tả cách các doanh
nghiệp khác có thể tiến hành thƣơng mại iện tử với họ. Thông tin trang xanh là một mô hình lOMoAR cPSD| 58815430
lồng nhau bao gồm các quy trình kinh doanh, giới thiệu dịch vụ và thông tin kết nối. Các
thông tin không phụ thuộc vào ngôn ngữ, nền tảng và cách cài ặt. Các dịch vụ cũng có thể ƣợc phân loại.
2.4.2 Chức năng của UDDI
UDDI chính là một dịch vụ Web dựa trên XML và SOAP. Ví dụ, một bản ăng ký kinh
doanh là một tài liệu XML. Khách hàng sử dụng một tập các giao diện SOAP (SOAP
interfaces) ƣợc xác ịnh trƣớc ể tìm kiếm ăng ký cho một dịch vụ web mong muốn. Nhà cung
cấp sử dụng giao diện SOAP ể ăng ký hai loại thông tin: (1) mô hình kỹ thuật (tModel), là
các giao thức dịch vụ trừu tƣợng mô tả hành vi của một dịch vụ Web riêng lẻ, và (2) các thực
thể kinh doanh (businessEntity), trong ó mô tả một cài ặt dịch vụ và cung cấp mô tả về các
ặc tả của nhiều tModels. Lƣu ý là mỗi ặc tả, vận chuyển, giao thức, hoặc không gian tên
riêng biệt ƣợc trình bày bởi một tModel. Tuy nhiên, một UDDI registry không thực sự lƣu
trữ các ặc tả và chi tiết nhƣ vậy. Một UDDI tModel chỉ ơn giản chứa các ịa chỉ (URL) nơi
chứa những tài liệu kỹ thuật, siêu dữ liệu về các tài liệu và một khóa ể nhận biết tModel.
Hình 2.6: Các trang biểu diễn một thực thể doanh nghiệp trong UDDI registry
Hình 2.6 cho thấy các trang vàng, trắng và xanh cho một doanh nghiệp. Một
businessEntity là cấu trúc mức cao nhất cho tất cả các thông tin liên quan ến một doanh
nghiệp, ƣợc thể hiện rõ hơn trong hình 2.7. Các thành phần chính của một businessEntity
UDDI và các mối quan hệ giữa chúng ƣợc thể hiện trong hình 2.8. lOMoAR cPSD| 58815430
Hình 2.7: Mô hình thông tin UML cho một thực thể doanh nghiệp trong UDDI registry lOMoAR cPSD| 58815430
Hình 2.8: Các cấu trúc dữ liệu lõi và các mối quan hệ giữ chúng cho một thực thể
doanh nghiệp UDDI
Trong nội dung này sẽ chỉ quan tâm chủ yếu ến việc ăng ký các dịch vụ Web, vì vậy
chúng ta sẽ chỉ ánh xạ mô tả WSDL của dịch vụ Web tới các mô tả dịch vụ UDDI. Hình 2.9
cho thấy sự tƣơng ứng giữa các trƣờng của một mô tả WSDL và các trƣờng của một UDDI businessService.
Hình 2.9: So sánh giữa một tài liệu WSDL và một tài liệu ăng ký UDDI
2.4.3 Xây dựng UDDI
UDDI xác ịnh hai hàm giao diện lập trình ứng dụng (Application Programming
Interface API) cho việc truy cập ến một UDDI registry: Inquiry API ể lấy thông tin từ một
registry và API Publish dùng ể lƣu trữ thông tin ó. Publish API yêu cầu truy nhập ƣợc xác
thực (việc này khá ặc biệt cho một registry và không theo quy ịnh của UDDI) nhƣng Inquiry
API thì không. Các API hiện hỗ trợ 28 thông iệp SOAP, sau ây là một số thông iệp quan trọng: ▪ Inquiry API
✓ Tìm một doanh nghiệp hoặc dịch vụ của doanh nghiệp và các ặc tính của nó
✓ Lấy thông tin chi tiết cần ể tƣơng tác với một doanh nghiệp ▪ Publishing API
✓ Lƣu lại thông tin về một doanh nghiệp hoặc dịch vụ của doanh nghiệp ✓ Xóa ✓ An toàn
2.4.3.1 Đăng ký và công bố một dịch vụ
Sau khi ã tìm hiểu các thành phần cơ bản của một UDDI, chúng ta sẽ xem xét một ví
dụ ăng ký từ công ty WeatherService và cách thức ể dịch vụ ―thông báo nhiệt ộ hiện thời‖
của công ty có thể ƣợc tìm thấy và sau ó ƣợc sử dụng bởi khách hàng. Đầu tiên, công ty lOMoAR cPSD| 58815430
WeatherService sẽ trao ổi hai thông iệp SOAP với một UDDI registry (có thể registry này
ƣợc duy trì bởi IBM tại https://uddi.ibm.com/ubr). Thông iệp SOAP ầu tiên sẽ gọi hoạt ộng
getauthToken ể thiết lập xác thực. Tiếp theo, nhƣ trong hình 2.10, sẽ ăng ký WeatherService
là một thực thể kinh doanh. POST / HTTP / 1 . 1 Host: www. socweather . com
ContentType: t e x t / xml ; c h a r s e t ="utf-8" ContentLength: nnnn SOAPAction: ""
<?xml version ="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body>
<s a v e b u s i n e s s xmlns="urn:uddi-org:api_v3">
<b u s i n e s s D e t a i l t r u n c a t e d ="false">
<b u s i n e s s E n t i t y businessKey="...K1...">
<discoveryURLs>
<discoveryURL useType="homepage"> h t t p : / /www.
socweather . com/ WeatherService . html
</discoveryURL>
</discoveryURLs>
<name xml:lang="en">WeatherService Inc . </name>
<d e s c r i p t i o n xml:lang="en">P r o v i d e r of t e m p e r a t u r e s e r v i c e s
</ de s c r i p t i o n >
<c o n t a c t s >
<c o n t a c t>