ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
--------
NGUYỄN THỊ THÚY NGA
KIỂM CHỨNG CÁC DỊCH VỤ WEB
LUẬN VĂN THẠC SĨ
Hà Nội, 2011
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
--------
NGUYỄN THỊ THÚY NGA
KIỂM CHỨNG CÁC DỊCH VỤ WEB
Ngành
: Công nghệ thông tin
Chuyên ngành : Công nghệ phần mềm
Mã số
: 60 48 10
LUẬN VĂN THẠC SĨ
HƯỚNG DẪN KHOA HỌC: TS. TRƯƠNG NINH THUẬN
Hà Nội, 2011
2
MỤC LỤC
DANH SÁCH CÁC HÌNH MINH HỌA ................................................................... 4
CHƯƠNG 1. ĐẶT VẤN ĐỀ ...................................................................................... 5
1.1 Lý do chọn đề tài.................................................................................................... 5
1.2 Mục tiêu của luận văn ............................................................................................ 6
1.3 Cấu trúc của luận văn ............................................................................................ 7
CHƯƠNG 2. DỊCH VỤ WEB VÀ CHẤT LƯỢNG DỊCH VỤ CỦA DỊCH VỤ
WEB ........................................................................................................................... 8
2.1 Dịch vụ web ........................................................................................................... 8
2.2. Chất lượng dịch vụ của dịch vụ web .................................................................... 25
CHƯƠNG 3. TỔNG QUAN VỀ PHƯƠNG PHÁP B ............................................ 31
3.1 Giới thiệu chung .................................................................................................. 31
3.2 Khái niệm máy trừu tượng ................................................................................... 31
3.3 Trạng thái ban đầu của thiết kế............................................................................ 32
3.4 Cải tiến ................................................................................................................ 33
CHƯƠNG 4. TỔNG QUAN VỀ OWL-S ................................................................ 37
4.1 Ngôn ngữ OWL-S ................................................................................................. 37
4.2 ServiceProfile và các thuộc tính ........................................................................... 38
4.3 Mô hình dịch vụ thành các tiến trình .................................................................... 43
CHƯƠNG 5. KIỂM CHỨNG SỰ PHÙ HỢP CHỨC NĂNG TRONG MÔ HÌNH
WSD ......................................................................................................................... 47
5.1 Phương pháp kiểm chứng..................................................................................... 47
5.2 Ví dụ minh họa ..................................................................................................... 50
5.3 Hình thức hóa và kiểm chứng ............................................................................... 53
CHƯƠNG 6. KẾT LUẬN........................................................................................ 63
TÀI LIỆU THAM KHẢO ....................................................................................... 64
Thank you for evaluating AnyBizSoft PDF Splitter.
A watermark is added at the end of each output PDF file.
To remove the watermark, you need to purchase the software from
http://www.anypdftools.com/buy/buy-pdf-splitter.html
5
CHƯƠNG 1. ĐẶT VẤN ĐỀ
1.1 Lý do chọn đề tài
Dịch vụ web là một chương trình có thể truy cập được nếu được công bố
trên mạng và được các chương trình khác sử dụng. Các ví dụ về dịch vụ web
như: dịch vụ đăng ký vé máy bay, dịch vụ dự báo thời tiết,… đều được tạo ra
trên Internet. Dịch vụ web thường được truy cập trực tiếp bằng các ứng dụng.
Trong trường hợp này, một dịch vụ web có thể được coi như một “giao diện
chương trình” cho phép các ứng dụng có thể giao tiếp với nhau.
Khám phá dịch vụ web WSD (Web service discovery) là một tiến trình
tìm kiếm một dịch vụ web phù hợp với một nhiệm vụ cho trước. Mục đích là để
khách hàng có thể dùng một dịch vụ, nhà cung cấp thường thêm vào cuối dịch
vụ web một đặc tả giao diện dùng WSDL (Web Services Description
Language). Một nhà cung cấp đăng ký một dịch vụ với nơi đăng ký dịch vụ
(Web service registry) như UDDI (Universal Description, Discovery, and
Integration) hoặc công bố thêm các tài liệu WSIL (Web Services Inspection
Language) dự tính để việc khám phá được dễ dàng. Những Người yêu cầu dịch
vụ hoặc khách hàng có thể tìm kiếm dịch vụ web bằng tay hoặc tự động.
Với sự phát triển của dịch vụ web như là một giải pháp thương mại để
doanh nghiệp tích hợp các ứng dụng, chất lượng của các dịch vụ (Quality of
Service - QoS) cung cấp bởi dịch vụ web sẽ trở thành ưu thế số một cho bên
cung cấp dịch vụ. Do chất lượng của các nhà cung cấp dịch vụ và môi trường tự
nhiên của web là không thể dự đoán được nên việc chọn một QoS phù hợp thực
sự là một thách thức lớn của những tổ chức yêu cầu dịch vụ. QoS của dịch vụ
web chính là chất lượng, cả chức năng cũng như phi chức năng, một hướng phát
triển của một dịch vụ web. Điều này bao gồm, tính thực thi, độ tin cậy, tính toàn
vẹn, tính truy cập được, độ sẵn sàng, và độ an toàn. Việc tích hợp các QoS trong
WSD được thực hiện trong pha triển khai.
6
Tuy nhiên, các dịch vụ cung cấp và yêu cầu thường có cách nhìn và sự
hiểu biết khác nhau về cùng một dịch vụ. Nó không hiện thực hóa các quảng bá
và yêu cầu mong đợi tương ứng. Điều này gây ra nhiều khó khăn khi tìm kiếm
các dịch vụ cung cấp phù hợp trong các ứng dụng có sử dụng dịch vụ web.
Trong pha phân tích của phát triển phần mềm, sự mô phỏng và kiểm tra
các mô hình phần mềm là một nguyên tắc quan trọng. Hành động này cho phép
chúng ta phát hiện lỗi tại giai đoạn đầu của phát triển và xem xét tính khả thi của
hệ thống trước khi triển khai. Các phương pháp hình thức được sử dụng do tính
hiệu quả của nó, nghĩa là việc phân tích phần mềm có thể nhờ vào các mô hình
toán học và các công cụ hỗ trợ hiệu quả cao của nó.
Phương pháp hình thức B có một cơ chế đặc biệt được dùng để chuyển
từng bước một một đặc tả trừu tượng sang cụ thể. Vì vậy thật là hợp lý và thích
hợp là dùng khái niệm B để hình thức hóa các yêu cầu mong đợi của bên yêu
cầu dịch vụ web và các chức năng của nhà cung cấp dịch vụ web. Thêm nữa, các
bước chứng minh của đặc tả B được tạo ra và chứng minh một cách tự động bởi
sự hỗ trợ của các công cụ như AtelierB, B-Toolkit và B4Free. Chúng cho phép
chúng ta phân tích sự đối sánh giữa hai khía cạnh hình thức của hai mô hình
dịch vụ web.
1.2 Mục tiêu của luận văn
Luận văn này đề xuất một hướng tiếp cận hình thức và kiểm chứng các
mô hình WSD dùng cải tiến B, gồm cả khía cạnh chức năng và phi chức năng.
Cụ thể:
Người yêu cầu dịch vụ web đưa ra các yêu cầu mong muốn để gọi một
dịch vụ web. Các yêu cầu mong muốn này được hình thức hóa thành một
máy trừu tượng B.
7
Các chức năng của nhà cung cấp dịch vụ web được mô tả bởi một máy cải
tiến B.
Sự phù hợp giữa các yêu cầu mong muốn của người dùng dịch vụ web và
các chức năng của nhà cung cấp dịch vụ web được phân tích bởi các công
cụ hỗ trợ B.
1.3 Cấu trúc của luận văn
Phần còn lại của luận văn gồm các chương sau:
Chương 2: Đưa ra cái nhìn tổng quát về dịch vụ web, tìm hiểu về các thành
phần chuẩn được sử dụng trong dịch vụ web, kiến trúc của dịch vụ web. Đồng
thời cũng tìm hiểu cơ bản về chất lượng dịch vụ của dịch vụ web.
Chương 3: Đưa ra cái nhìn tổng quan về phương pháp B, tìm hiểu các khái
niệm cơ bản thông qua một ví dụ cụ thể.
Chương 4: Đưa ra cái nhìn tổng quát về ngôn ngữ OWL-S, các nguyên tắc
để chuyển các yêu cầu của bên yêu cầu dịch vụ thành máy trừu tượng B và
chuyển các chức năng của nhà cung cấp dịch vụ thành máy cải tiến B.
Chương 5: Đưa ra ví dụ thực nghiệm để minh họa cho các nguyên tắc đã
đưa ra trong chương 4, và đưa ra các tìm hiểu về công cụ Atelier B dùng để
kiểm chứng sự phù hợp giữa các yêu cầu mong muốn của bên yêu cầu dịch vụ
và các chức năng được cung cấp bởi nhà cung cấp dịch vụ.
Chương 6: Đánh giá kết quả của luận văn và đưa ra các hướng phát triển
của luận văn.
8
CHƯƠNG 2. DỊCH VỤ WEB VÀ CHẤT LƯỢNG DỊCH VỤ CỦA
DỊCH VỤ WEB
2.1 Dịch vụ web
Dịch vụ web là một giao diện truy cập mạng đến các ứng dụng chức năng,
được xây dựng từ việc sử dụng các công nghệ chuẩn Internet [1]. Được minh
hoạ trong hình dưới đây.
Hình 2.1 Dịch vụ cho phép truy cập tới các code ứng dụng sử dụng chuẩn công
nghệ Internet
Thuật ngữ dịch vụ web diễn tả một cách thức tích hợp các ứng dụng trên
nền web lại với nhau bằng cách sử dụng các công nghệ XML, SOAP, WSDL, và
UDDI trên nền tảng các giao thức Internet với mục tiêu tích hợp ứng dụng và
truyền thông điệp. XML được sử dụng để đánh dấu dữ liệu, SOAP được dùng để
truyền dữ liệu, WSDL được sử dụng để mô tả các dịch vụ có sẵn và UDDI được
sử dụng để liệt kê những dịch vụ nào hiện tại đang sẵn sàng để dùng.
Không giống như mô hình Client/Server truyền thống, chắng hạn như hệ
thống Webserver/webpage, dịch vụ web không cung cấp cho người dùng giao
diện đồ hoạ, mà đơ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 nguời phát triển dịch vụ web hoàn toàn có thể
dịch vụ web vào một giao diện đồ hoạ người dùng (chẳng hạn như là một trang
9
web hoặc một chương trình thực thi nào đó) để có thể cung cấp thêm các chức
năng đặc biệt cho người dùng.
Ngày này, dịch vụ web có thể được triển khai trên Internet dưới dạng một
Website HTML, chính vì thế, các dịch vụ ứng dụng cần phải có một cơ thế cho
việc công bố, quản lý, tìm kiếm và phục hồi nội dung được người sử dụng truy
cập thông qua giao thức chuẩn HTTP và định dạng dữ liệu HTML. Các ứng
dụng Client (như Web Browser) cần phải hiểu các chuẩn mà dịch vụ web hỗ trợ
để có thể tương tác với các dịch vụ nhằm thực thi một nhiệm vụ như việc đặt
mua sách, gửi thiệp mừng hoặc là đọc bản tin ...
Dịch vụ web cung cấp tính trừu tượng cho các giao diện chuẩn, cho nên sẽ
không nảy sinh ra bất kì vấn đề gì trong quá trình tương tác khi các dịch vụ
được viết trên Java và trình duyệt được viết bằng C++, hoặc các dịch vụ được
triển khai trên Unix trong khi các trình duyệt lại được triển khai trên Windows.
Dịch vụ web cho phép giao tiếp giữa các platform khác nhau có thể hoạt động
cùng nhau theo nguyên tắc tạo ra một platform trung gian có liên quan.
Tính tương thích là một lợi thế vô cùng mạnh mẽ của dịch vụ web, thông
thường, các công nghệ Java và công nghệ của Microsoft rất khó có thể tích hợp
được với nhau, nhưng với dịch vụ web thì các ứng dụng và máy khách sử dụng
2 công nghệ trên hoàn toàn có khả năng tương tác với nhau thông qua dịch vụ
web.
Rất nhiều nhà cung cấp ứng dụng như IBM và Microsoft đều đã hỗ trợ
dịch vụ web trong các sản phẩm của họ. IBM hỗ trợ dịch vụ web thông qua gói
WebSphere, Tivoli, Lotus và DB2 và Microsoft với .NET cũng đã hỗ trợ dịch vụ
web.
2.1.1 Đặc điểm của dịch vụ web
Dịch vụ web là các ứng dụng độc lập, tự mô tả và modun hóa có thể được
công bố, nằm hoặc gọi trên Web. Các dịch vụ web thực hiện các chức năng, từ
các yêu cầu đơn giản đến việc kết hợp các tiến trình nghiệp vụ. Một dịch vụ web
10
được triển khai, các ứng dụng khác (và cả các dịch vụ web khác) có thể phát
hiện ra và gọi dịch vụ đã triển khai.
Dịch vụ web cho phép các ứng dụng khác nhau từ các nguồn khác nhau
có thể giao tiếp với các ứng dụng khác mà không đòi hỏi nhiều thời gian coding,
do tất cả các quá trình giao tiếp đều tuân theo định dạng XML, cho nên dịch vụ
web không bị phụ thuộc vào bất kì hệ điều hành hay ngôn ngữ lập trình nào. Ví
dụ, chương trình viết bằng ngôn ngữ Java cũng có thể trao đổi dữ liệu với các
chương trình viết bằng Perl, các ứng dụng chạy trên nền Windows cũng có thể
trao đổi dữ liệu với các ứng dụng chạy trên nền Linux. Dịch vự web không yêu
cầu phải sử dụng trình duyệt và ngôn ngữ HTML, đôi khi nó còn được gọi là các
dịch vụ ứng dụng.
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, đưa ra những lợi ích cho cả doanh nghiệp,
khách hàng, nhữ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; ứng dụng cho các dịch vụ du lịch (cung cấp giá vé,
thông tin về địa điểm…), thông tin thương mại như giá cả, tỷ giá hối đoái, đấu
giá qua mạng…hay dịch vụ giao dịch trực tuyến (cho cả B2B và B2C) như đặt
vé máy bay, mua sắm trực tuyến, …
Với những ưu điểm nổi trội trên, dịch vụ web đang được phát triển một
cách nhanh chóng và là ưu tiên hàng đầu của các doanh nghiệp hiện nay.
2.1.2 Ưu, nhược điểm của dịch vụ web
Ưu điểm:
Dịch vụ Web cung cấp chức năng hoạt động rộng lớn 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.
11
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 (text), giúp các lập trình viên dễ dàng hiểu được.
Có khả năng tái sử dụng cao. Do vậy và giảm chi phí sản xuất và phát
triển, tăng doanh thu cho doanh nghiệp.
Thúc đẩy đầu tư 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 dịch vụ Web.
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
hoạt động, 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.
Nhược điểm:
Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Dịch vụ Web,
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.
Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt.
Do phát triển trong môi trường internet, các dịch vụ web cần được quan
tâm nhiều hơn đến tính bảo mật và an toàn.
2.1.3 Kiến trúc của dịch vụ web
Kiến trúc của dịch vụ web yêu cầu phải có 3 thao tác cơ bản đó là: Find
(Tìm kiếm), Publish (Công bố), Bind (Kết nối)[2].
12
Service
provider
Publish
Service
broker
Bind
Find
Service
requester
Hình 2. 3 Kiến trúc của dịch vụ web.
Trong kiến trúc của dịch vụ web, nhà cung cấp dịch vụ công bố các dịch
vụ với nhà môi giới dịch vụ. Người yêu cầu dịch vụ tìm kiếm các dịch vụ mà họ
cần sử dụng tại nhà môi giới dịch vụ. Người yêu cầu dịch vụ có thể là một người
hoặc cũng có thể là một chương trình. Sau đó người yêu cầu dịch vụ sẽ kết nối
với nhà cung cấp dịch vụ để sử dụng dịch vụ.
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 dịch vụ web. Các thông tin mô tả đầy đủ nhất về kiến trúc dịch vụ web đượ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 của XML cho các dịch vụ chạy trên nền mạng, nó được sử
dụng để đưa ra các thông tin về hoạt động của dịch vụ web, chẳng hạn như danh
sách các dịch vụ, các mô tả về dịch vụ, ngày hết hạn của dịch vụ và các thông
tin liên quan đến các Nhà cung cấp dịch vụ, như tên, địa chỉ. 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 hai tài
liệu này với nhau ta sẽ có được sự mô tả một cách đầy đủ về các dịch vụ để cho
phía yêu cầu dịch vụ có thể dễ dàng tìm kiếm và gọi các dịch vụ đó.
Trong mô hình hoạt động của mỗi dịch vụ web, thông thường sẽ có 3
thành phần tham gia người yêu cầu dịch vụ, nhà cung cấp dịch vụ và các thành
13
phần cơ sở hạ tầng. Người yêu cầu dịch vụ tìm một dịch vụ để hoàn thành công
việc của mình, nhà cung cấp dịch vụ cung cấp một dịch vụ được tìm kiếm bởi
người yêu cầu.
Một đặc tả về dịch vụ mong đợi được gọi là một yêu cầu chức năng.
Trong phát triển dịch vụ web, nó là một tiến trình mà các client sử dụng một đặc
tả khai báo về một dịch vụ để yêu cầu cái gì đó của dịch vụ và đưa ra được câu
trả lời
2.1.4 Kiến trúc phân tầng của Web Service
Kiến trúc của dịch vụ web được thực hiện năm tầng như mô tả trong Hình
2.4 [1].
Hình 2.4 Kiến trúc phân tầng của dịch vụ web
Mô hình kiến trúc phân tầng của dịch vụ web tương tự với mô hình
TCP/IP được sử dụng để mô tả kiến trúc Internet.
Hình 2.5 Mô hình mạng TCP/IP
14
Các tầng truyền thống như Packaging, Description, và Discovery trong
kiến trúc phân tầng của dịch vụ web là những tầng cung cấp khả năng tích hợp
và cần thiết cho mô hình ngôn ngữ lập trình trung lập.
Tầng Khám phá (Discovery): Tầng khám phá cung cấp cơ chế cho
người dùng khả năng lấy các thông tin mô tả về các nhà cung cấp dịch vụ. Công
nghệ được sử dụng tại tầng này đó chính là UDDI (Universal Description,
Discovery and Integration).
Tầng Mô tả (Description): Khi dịch vụ web được thực thi, nó cần phải
đưa ra các quyết định về các giao thức trên các tầng Mạng, Vận chuyển và
Đóng gói mà nó sẽ hỗ trợ trong quá trình thực thi. Các mô tả về dịch vụ sẽ đưa
ra phương pháp để làm thế nào mà Người yêu cầu dịch vụ có thể liên kết và sử
dụng các dịch vụ đó. Tại tầng Mô tả, công nghệ được sử dụng ở đây chính là
WSDL. Ngoài ra, ít phổ biến hơn, chúng ta còn có 2 ngôn ngữ khác được định
nghĩa bởi tổ chức W3C đó là ngôn ngữ môt tả tài nguyên - W3C’s Resource
Desciption Framework (RDF) và ngôn ngữ đánh dấu sự kiện DARPA. Cả hai
ngôn ngữ này đều có khả năng cung cấp việc mô tả dịch vụ web mạnh hơn ngôn
ngữ WSDL tuy nhiên do tính phức tạp của chúng nên không được phát triển
rộng rãi.
Tầng Đóng gói (Packaging): Việc thực hiện vận chuyển các dữ liệu của
dịch vụ web được thực hiện bởi tầng Vận chuyển, tuy nhiên trước khi được vận
chuyển, các dữ liệu cần phải được đóng gói lại theo các định dạng đã định trước
để các thành phần tham gia vào mô hình dịch vụ web có thể hiểu được, việc
đóng gói dữ liệu được thi bởi tầng Đóng gói. Việc đóng gói dữ liệu bao gồm các
công việc định dạng dữ liệu, mã hóa các giá trị đi kèm dữ liệu đó và các công
việc khác.
Các dữ liệu có thể được đóng gói dưới dạng các tài liệu HTML, tuy nhiên
với các tài liệu HTML thường không thuận tiện cho yêu cầu này bởi vì HTML
chỉ có ưu điểm trong việc thể hiện dữ liệu hơn là trình bày ý nghĩa dữ liệu đó.
XML là một định dạng cơ bản nhất cho việc trình bày dữ liệu, bởi vì XML có
15
thể được sử dụng để trình bày ý nghĩa dữ liệu được vận chuyển, và hơn thế nữa,
hiện tại đa số các ứng dụng chạy trên nền Web-Base đều hỗ trợ các bộ phân tích
cú pháp XML. SOAP là công nghệ chủ yếu được sử dụng tại tầng này, nó là một
giao thức đóng gói dữ liệu phổ biến dựa trên nền tảng XML.
Tầng Vận chuyển (Transport): Tầng vận chuyển có vai trò đảm nhiệm
việc vận chuyển các thông điệp của dịch vụ web tại đây, bao gồm một vài dạng
công nghệ khác nhau cho phép các giao tiếp trực tiếp giữa các ứng dụng dựa
trên tầng Mạng. Mỗi công nghệ bao gồm các giao thức như TCP, HTTP, SMTP,
JABBER, …
Việc lựa chọn giao thức vận chuyển được dựa trên mỗi nhu cầu giao tiếp
của các dịch vụ web. Ví dụ: với giao thức HTTP là một giao thức vận chuyển
khá phổ biến được sử dụng cho các ứng dụng Web-Base, nhưng nó không cung
cấp cơ chế giao tiếp bất đối xứng. Jabber, xét trên phương diện khác, nó không
phải là một chuẩn nhưng có khả năng cung cấp tốt các kênh giao tiếp bất đối
xứng.
Tầng Mạng (Network): Tầng Mạng giống tầng Mạng trong mô hình giao
thức TCP/IP. Nó cung cấp khả năng giao tiếp cơ bản, định địa chỉ và định tuyến.
2.1.5 Các thành phần của dịch vụ web
2.1.4.1 SOAP
SOAP là một giao thức giao tiếp dùng trong dịch vụ web được xây dựng
dựa trên XML. SOAP được sử dụng để đặc tả và trao đổi thông tin về các cấu
trúc dữ liệu cũng như các kiểu dữ liệu giữa các thành phần trong hệ thống.
Sử dụng SOAP, ứng dụng có thể yêu cầu thực thi phương thức trên các
máy tính ở xa mà không cần quan tâm đến chi tiết về nền tảng cũng như các
phần mềm trên các máy tính đó.
SOAP có nhiều ưu điểm khi sử dụng như:
16
Cung cấp chức năng mở rộng phục vụ cho nhu cầu đặc thù của ứng dụng
và nhà cung cấp. Các chức năng về bảo mật, tăng độ tin cậy có thể đưa
vào phần mở rộng của SOAP. Các nhà cung cấp dịch vụ khác nhau, tùy
vào đặc điểm hệ thống của mình có thể định nghĩa thêm các chức năng
mở rộng nhằm tăng thêm lợi thế cạnh tranh cũng như cung cấp thêm tiện
ích cho người sử dụng.
Có thể hoạt động trên các giao thức mạng đã được chuẩn hóa (HTTP,
SMTP, FTP, TCP, ...)
Độc lập với nền tảng, ngôn ngữ lập trình hay mô hình lập trình được sử
dụng.
Các thành phần chuẩn của SOAP [1]
a. Thông điệp XML
Thông điệp XML là các tài liệu XML được dùng để trao đổi thông tin
giữa các ứng dụng. Nó cung cấp tính mềm dẻo cho các ứng dụng trong quá trình
giao tiếp với nhau và là một dạng cơ bản của SOAP.
Các thông điệp này có thể là bất cứ thứ gì: Hóa đơn thanh toán, yêu cầu
về giá cổ phiếu, một truy vấn tới một công cụ tìm kiếm hoặc có thể là bất kì
thông tin nào có quan hệ tới từng thành phần của ứng dụng.
Hình 2.6 Thông điệp XML
Do XML không phụ thuộc vào một ứng dụng cụ thể, hệ điều hành hay
ngôn ngữ lập trình nên các thông điệp XML có thể được sử dụng trong tất cả các
môi trường. Một chương trình Windows Perl có thể tạo ra một thông điệp XML,
trình bày thông điệp đó và gửi đến cho một chương trình cài đặt bằng ngôn ngữ
Java được triển khai trên nền Unix.
b. RPC và EDI
17
Sử dụng thông điệp XML, nên SOAP có 2 ứng dụng liên quan là: RPC và
EDI. Thủ tục gọi hàm từ xa RPC (Remote Procedure Call) là một dạng tính toán
phân tán cơ bản, mô tả cách thức để một chương trình tạo ra một thủ tục (hàm
hoặc phương thức) gọi một thủ thục (hàm hoặc phương thức) khác, truyền đối số
và lấy giá trị trả về. Trao đổi tài liệu điện tử EDI (Electronic Document
Interchange) là một giao dịch thương mại tự động cơ bản , nó định nghĩa các
chuẩn định dạng và thông dịch của các tài liệu, thông điệp tài chính và thương
mại.
Nếu sử dụng SOAP cho EDI, khi đó thông điệp XML có thể là các hóa
đơn thanh toán, trả tiền thuế, hoặc các tài liệu tương tự. Nếu sử dụng SOAP cho
RPC khi đó thông điệp XML có thể trình bày các đối số hoặc các giá trị trả về.
c. 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. Phần tử header chứa các
khối thông tin có liên quan đến cách thức các thông điệp được xử lý như thế
nào. Nó bao gồm việc định tuyến và các thiết lập cho việc phân phối các thông
điệp. Ngoài ra phần tử Header còn có thể chứa các thông tin về việc thẩm định
quyền, xác minh và các ngữ cảnh cho các transaction. Các dữ liệu thực sự được
lưu trữ tại phần tử body. Bất cứ thứ gì có thể trình bày cú pháp XML đều nằm
trong phần tử body của một thông điệp SOAP[3].
18
Hình 2.7 Cấu trúc của một thông điệp SOAP
Tất cả các phần tử envelope đều chứa chính xác một phần tử body. Thần
tử body có thể chứa các nốt con theo yêu cầu. Nội dung của phần tử body là các
thông điệp. Nếu phần tử envelope mà chứa phần tử header, 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ử envelope. Mỗi một phần tử chứa header đều được gọi
là header block. Mục đích của header block cung cấp giao tiếp các thông tin theo
ngữ cảnh có liên quan đến quy trình xử lý các thông điệp SOAP.
d. SOAP Faults
SOAP faults là một dạng thông điệp SOAP đặc biệt được dùng để thông
báo lỗi trong quá trình trao đổi thông tin, SOAP faults có thể xuất hiện trong quá
trình xử lý các thông điệp SOAP. Thông điệp SOAP faults có thể được mô tả
như sau:
Client.Authentication
Invalid credentials
http://acme.com
Các thông tin trong SOAP faults gồm:
Fault code: Các thuật toán phát hiện lỗi sẽ tự sinh ra các giá trị dùng để
phân biệt các kiểu lỗi xuất hiện. Các giá trị này phải là là các XML Qualified
Name, điều đó có nghĩa là các tên của mã lỗi chỉ có ý nghĩa duy nhất trong
vùng định nghĩa XML Namespace.
Fault string: Chỉ các lỗi mà người dùng có thể đọc hiểu được.
19
Fault actor: Là dấu hiệu nhận dạng duy nhất của các nốt xử lý các thông
điệp nơi mà các lỗi có khả năng xuất hiện.
Fault details: Được sử dụng để trình bày các thông tin cụ thể của ứng
dụng về lỗi mà nó xuất hiện. Nó phải được trình bày nếu có lỗi xuất hiện liên
quan trực tiếp đến phần thân của thông điệp. Fault details không cần phải sử
dụng, tuy nhiên nó dùng để mô tả thông tin về lỗi xuất hiện trong mối quan hệ
tới các phần còn lại của quy trình xử lý các thông điệp SOAP.
e. Các kiểu dữ liệu SOAP
Kiểu dữ liệu hỗ trợ kiểu mã hóa SOAP là các kiểu dữ liệu được định
nghĩa bởi các kiểu dữ liệu XML Schema. Tất cả các kiểu dữ liệu dùng trong
khối SOAP phải hoặc được lấy trực tiếp từ đặc tả XML Shema hoặc dẫn ra từ
các loại đó.
Mã SOAP cung cấp hai cú pháp thay thế để thể hiện các trường hợp của
các kiểu dữ liệu trong SOAP envelope. Ví dụ sau cho thấy hai biểu thức tương
đương về một số nguyên có giá trị bằng 36.
36
36
Phương pháp thứ nhất được biết đến với cái tên là truy cập nặc danh,
thường được tìm thấy trong các mảng mã hóa SOAP. Nó là “nặc danh” vì tên
của người truy cập có nghĩa là kiểu của nó hơn là xác định một giá trị. Phương
pháp thứ hai là một cú pháp truy cập có tên như chúng ta đã nhìn thấy. Cả hai sẽ
hợp lệ khi chúng có thể liên kết trực tiếp lại với các kiểu dữ liệu XML Schema.
f. Vận chuyển SOAP
SOAP được đặt ở tầng Packaging trong kiến trúc phân tầng của dịch vụ
web, nó đứng trên tầng Network và tầng Transport. Như một giao thức đóng gói,
SOAP không quan tâm đến việc giao thức vận chuyển nào được sử dụng trong
quá trình trao đổi các thông điệp, điều đó làm cho giao thức thực sự mềm dẻo tại
bất kì môi trường SOAP được triển khai nào. Tính mềm dẻo của SOAP được thể
20
hiện qua việc SOAP có thể sử dụng các giao thức vận chuyển khác nhau để trao
đổi các thông điệp, như HTTP, FTP, SMTP, POP3, MQUERY và Jabber.
Hiện nay, HTTP được sử dụng phổ biến trên Internet, chính vì tính phổ
biến của nó, cho nên HTTP hiện tại đang là giao thức vận chuyển phổ biến nhất
cho việc vận chuyển các thông điệp SOAP.
SOAP thông qua HTTP rất thuận tiện cho SOAP RPC trong việc gọi yêu
cầu và nhận các thông điệp đáp ứng bởi vì bản chất HTTP chính là giao thức
dựa trên nền tảng gọi các yêu cầu và nhận các đáp ứng. Các thông điệp yêu cầu
SOAP được gửi tới HTTP server và các thông điệp đáp ứng được trả lại trên một
kết nối HTTP tương tự .
Hình 2.7 Mô tả việc trao đổi thông điệp SOAP thông qua giao thức HTTP
2.1.4.2 WSDL
Việc đặc tả chức năng, giao diện giao tiếp của một dịch vụ web được thực
hiện dựa vào WSDL (Web Service Description Language). Việc đặc tả này bao
gồm giao thức được sử dụng, cấu trúc và định dạng dữ liệu dùng để giao tiếp...
- Xem thêm -