Chúng cho phép ta sử dụng dịch vụ ñược cung cấp bởi các ứng dụng khác, thông qua các giao thức và ñịnh dạng dữ liệu tiêu chuẩn.. Chính vì vậy, các phần mềm ñược viết bởi những ngôn ngữ l
Trang 1Đại học Công nghệ
- - - = - = - = - - -
Báo cáo môn Hệ phân tán
Tìm hiểu về Web Services
* * * * * * * *
Giảng viên:
Trần Thị Minh Châu
Nhóm sinh viên thực hiện:
• Trịnh Tiến Lương
• Nguyễn Thạc Huy
Trang 21. Giới thiệu 1
2. Đặc ñiểm của Web Service 2
2.1 Đặc ñiểm 2
2.2 Ưu ñiểm và nhược ñiểm 3
3. Mô hình hoạt ñộng của Web Services 3
4. Kiến trúc giao thức của Web Services 4
5. Các thành phần của Web Service 5
5.1 XML 5
5.2 WSDL 6
5.3 UDDI 10
5.4 SOAP 12
6. Kết luận 14
TÀI LIỆU THAM KHẢO 15
Trang 3Tìm hiểu về Web Services
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Trịnh Tiến Lương Nguyễn Thạc Huy
Với sự phát triển và lớn mạnh của Internet như hiện nay, Web Services (dịch vụ Web) thực sự ñáng ñược quan tâm bởi chúng mang lại khả năng ñiện toán hướng-dịch-vụ thông qua môi trường Web Chúng cho phép ta sử dụng dịch vụ
ñược cung cấp bởi các ứng dụng khác, thông qua các giao thức và ñịnh dạng dữ
liệu tiêu chuẩn Chính vì vậy, các phần mềm ñược viết bởi những ngôn ngữ lập trình khác nhau, chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web
ñể chuyển ñổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên
trong một máy tính Sử dụng web services, ta có thể liên kết các hệ thống ñơn lẻ sẵn có mà không cần quan tâm ñến nền tảng phát triển bên dưới của chúng
Báo cáo này mô tả sơ lược các công nghệ cần thiết ñể tạo nên một Web service, cũng như các khái niệm liên quan
1 Giới thiệu
Theo ñịnh nghĩa của W3C [1] (World Wide Web Consortium), dịch vụ Web là một hệ thống phần mềm ñược thiết kế ñể hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, với giao diện chung ñược mô tả bằng XML Web service có thể xác ñịnh bằng ñịa chỉ URL, thực hiện các chức năng và ñưa ra các thông tin người dùng yêu cầu Các chức năng này có thể ñược yêu cầu bởi các client bằng cách sử dụng giao thức SOAP [2] thông qua HTTP Web services ñộc lập về ngôn ngữ và nền tảng bởi vì nó tách biệt ñặc tả ra khỏi cài ñặt Web services dựa trên kiến trúc phân tán trong ñó không có bất kì dịch vụ xử lý trung tâm nào và tất cả dạng truyền thông ñều sử dụng các giao thức chuẩn
Một trong những ñặc tính quan trọng của mô hình tính toán dựa trên Web services là ở ñó cả các client và Web services ñều không cần biết cài ñặt của nhau Web services hứa hẹn mang ñến khả năng tạo ra các môi trường phân tán trong ñó bất kì ứng dụng nào, hoặc bất kì component ứng dụng nào cũng ñều có thể kết hợp với nhau dễ dàng với tính ñộc lập nền tảng và ñộc lập ngôn ngữ Điểm khác biệt chính của Web services với các công nghệ phân tán trước ñây như Win32, J2EE,
… là ở sự chuẩn hoá Web services sử dụng XML, một ngôn ngữ ñộc lập trong việc biểu diễn dữ liệu, làm ngôn ngữ trao ñổi thông tin Bởi vậy khi ñược kết hợp với nhau, khả năng tích hợp phần mềm, tính liên tác và sử dụng lại của các hệ
Trang 4Hiện nay các ứng dụng có tích hợp dịch vụ Web là rất phổ biến, ví dụ như chọn lọc và phân loại tin tức (thư viện có kết nối ñến các web portal ñể tìm kiếm các thông tin từ các nhà xuất bản), hay ứng dụng cho các dịch vụ ñại lý du lịch (cung cấp giá vé, thông tin về ñịa ñiểm du lịch), bán hàng, ñấu giá qua mạng Đặc biệt trong thời ñại thương mại ñiện tử và Internet phát triển mạnh mẽ như hiện nay thì các dịch vụ Web ngày càng ñược quan tâm phát triển và sử dụng rộng rãi hơn
2 Đặc ñiểm của Web Services
Trước khi ñi vào nghiên cứu chi tiết về mô hình và kiến trúc, chúng ta sẽ xem xét qua những ñặc ñiểm chính của Web Services Từ ñó có thể thấy ñược ưu
và nhược ñiểm của nó so với các hệ thống hiện tại
2.1 Đặc ñiểm
- Độc lập về ngôn ngữ, nền tảng:
Dịch vụ web cho phép Client và Server tương tác ñược với nhau ngay cả trong những môi trường khác nhau Đó là vì web service sử dụng XML, một chuẩn mở ñã ñược công nhận và có thể ñược hiểu bởi bất kỳ ngôn ngữ lập trình nào
- Khả năng tự mô tả:
Giao diện của dịch vụ web ñược xuất bản thông qua tài liệu WSDL [3] Tài liệu này ñịnh nghĩa cấu trúc thông ñiệp trao ñổi và cấu trúc dữ liệu sử dụng trong thông ñiệp ñó
- Tách biệt giữa mô tả và nội dung:
Đây là một trong những ñặc tính then chốt làm nên thành công cho Web
Services
- Web service không ñòi hỏi phía client phải cài ñặt bất cứ một thành phần mới nào Còn ở phía server, ñể triển khai Web service thì chỉ cần có Servlet engine, Apache hoặc NET Runtime,… Khi ñã ñược triển khai thì client có thể sử dụng ngay các dịch vụ Điều này khác với các công nghệ khác như DCOM hay RMI, khi mà client phải cài ñặt Client stub ñể có thể truy cập dịch vụ
- Dựa trên các chuẩn mở: XML, SOAP, WSDL, UDDI
- Truy cập thông qua môi trường Web:
Web service ñược phát hành, xác ñịnh và gọi ñều thông qua môi trường Web Trong ñó các mô tả về dịch vụ ñược xuất bản sử dụng WSDL, người dùng tìm kiếm và xác ñịnh dịch vụ nhờ sự trợ giúp của UDDI và yêu cầu dịch vụ bằng SOAP Tất cả các giao thức này ñều dựa trên Web
2.2 Ưu ñiểm và nhược ñiểm
Trang 52.2.1 Ưu ñiểm
- Cung cấp khả năng tương tác rộng lớn hơn: Web service có thể ñược truy xuất bởi con người thông qua trình duyệt web, bởi các ứng dụng chạy trên các nền tảng khác nhau và thậm chí là cả các web service khác
- Dựa trên các chuẩn mở ñã ñược chấp nhận rộng rãi, giúp cho các lập trình viên dễ dàng hiểu ñược
- Nâng cao khả năng tái sử dụng và ñóng gói lại phần mềm trong giao diện Web Service
- Tạo ra sự kết nối linh hoạt, mềm dẻo giữa các thành phần trong hệ thống, giảm ñộ phức tạp của 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 sự phát triển của các hệ thống tích hợp, dẫn ñến khả năng phát triển hệ thống nhanh với giá thành hạ, nhờ có sự tương tác hiệu quả với các phần mềm, hệ thống khác thông qua dịch vụ Web
- Web Services phụ thuộc vào môi trường web, vì vậy khi một Web Service không hoạt ñộng sẽ gây ảnh hưởng tới tất cả các ứng dụng phụ thuộc và sử dụng dịch vụ nó cung cấp
- Web Service dựa trên quá nhiều chuẩn mở khiến người dùng, người phát triển hệ thống khó nắm bắt và cập nhật
- Vấn ñề an toàn và bảo mật của Web Service cũng cần ñược quan tâm, ngoài việc bảo vệ an toàn thông tin trước hacker khi truyền qua môi trường mạng, còn cần lưu tâm ñến an toàn thông tin giữa các bên cung cấp dịch vụ
3 Mô hình hoạt ñộng của Web Services
Trong mô hình hoạt ñộng của dịch vụ Web, có ba thực thể cơ bản là: bên cung cấp dịch vụ (Service provider), bên sử dụng dịch vụ (Service requestor) và
ñơn vị quản lý ñăng ký dịch vụ (Service registry) Service provider có một dịch
vụ, nó sẽ phát hành giao diện và mô tả dịch vụ ñó Dịch vụ này ñược ñăng ký với thực thể Service registry bằng cách gửi mô tả dịch vụ tới ñó Mô tả dịch vụ này chứa tất cả các thông tin cần thiết ñể một Service requestor có thể tìm thấy và sử dụng dịch vụ, bao gồm kiểu dữ liệu, giao diện mô tả các hàm chức năng, ñịa chỉ của dịch vụ trong mạng, thông tin cần thiết ñể thiết lập kết nối Các bên sử dụng dịch vụ có thể tìm kiếm dịch vụ mình cần trên Service registry – ñược mô tả sử dụng UDDI (Universal Description, Discovery and Integration)
Trang 6Hình 1: Mô hình Web Service
Một Web Service cũng có thể ñóng vai trò một Service requestor, bằng cách sử dụng dịch vụ của các Web Service khác ñể thực hiện mục tiêu của mình
4 Kiến trúc giao thức của Web Services
Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration) Trong ñó UDDI ñược sử dụng ñể ñăng
ký và khám phá dịch vụ Web ñã ñược miêu tả cụ thể trong WSDL Giao tác UDDI
sử dụng SOAP ñể nói chuyện với UDDI server, sau ñó các ứng dụng SOAP yêu cầu một dịch vụ Web Các thông ñiệp SOAP ñược gửi ñi chính xác bởi HTTP và TCP/IP
Kiến trúc chồng giao thức của Web Services ñược mô tả như hình dưới
ñây:
- Tầng vận chuyển (Transport): có nhiệm vụ truyền thông ñiệp giữa các ứng dụng mạng, bao gồm các giao thức như HTTP, SMTP, FTP, JSM
- Tầng giao thức truyền thông dịch vụ (Service Communication Protocol): với công nghệ tiêu chuẩn là SOAP, cho phép người dùng gọi một dịch vụ
từ xa thông qua một thông ñiệp XML
Trang 7Hình 2: Kiến trúc chồng giao thức của Web Service
- Tầng mô tả dịch vụ (Service Description): ñược sử dụng ñể miêu tả giao diện chung cho một dịch vụ Web cụ thể WSDL là ngôn ngữ ñược sử dụng
ñể phục vụ cho mục ñích này, ñó là một ngôn ngữ mô tả giao tiếp và thực
thi dựa trên XML Web Service sử dụng ngôn ngữ này ñể truyền tham số và các kiểu dữ liệu cho dịch vụ thực sự bên trong ñể thực thi
- Tầng dịch vụ (Service): chứa cài ñặt chi tiết của dịch vụ
- Tầng ñăng ký dịch vụ (Service Registry) với công nghệ tiêu chuẩn là UDDI
ñược sử dụng cho cả bên yêu cầu dịch vụ và bên cung cấp dịch vụ Một
dịch vụ cần ñược ñăng ký thì bên sử dụng mới có thể tìm thấy và sử dụng
- Bên cạnh ñó còn có một số tầng khác như Policy, Security, Transaction, Management phục vụ các yêu cầu về bảo mật, toàn vẹn thông tin, …
5 Các thành phần của Web Service
5.1 XML – eXensible Markup Language
XML do W3C ñề ra và ñược phát triển từ SGML XML là một ngôn ngữ
mô tả văn bản với cấu trúc do người sử dụng ñịnh nghĩa Người sử dụng hay các chương trình có thể quy ước ñịnh dạng các tag XML ñể giao tiếp với nhau Thông tin cần truyền tải ñược chứa trong các tag XML, ngoài ra không chứa bất cứ thông tin nào khác về cách sử dụng hay hiển thị những thông tin ấy
Web service là sự kết hợp của nhiều thành phần khác nhau Do ñó web services sử dụng các tính năng và ñặc trưng của các thành phần này ñể giao tiếp
Vì vậy XML là công cụ cốt lõi ñể giải quyết vấn ñề này
Trang 85.2 WSDL – Web Service Description Language
Web Sevice Description Language (WSDL) ñịnh nghĩa một tài liệu XML
mô tả giao diện của các dịch vụ web Tài liệu WSDL này ñược sử dụng cho bên yêu cầu dich vụ (service requester) Bên yêu cầu dịch vụ sẽ sử dụng các thông tin
về giao diện ñịnh nghĩa trong lược ñồ WSDL ñể gọi dịch vụ web
Một tài liệu WSDL mô tả một Web Service như một tập các ñối tượng trừu tượng gọi là các “ports” và “endpoint” Một tài liệu WSDL cũng ñịnh nghĩa bên trong nó các phương thức của web service Các phương thức tương ứng với
“operation” và dữ liệu trao ñổi tương ứng với “message” Một tập các phương thức liên quan ñược nhóm lại vào trong một “portType” Một ràng buộc kết nối (binding) chỉ ñịnh một giao thức mạng và ñặc tả ñịnh dạng dữ liệu cho một portType cụ thể Kế ñến một port ñược ñịnh nghĩa bằng cách kết hợp một ñịa chỉ mạng với một binding Nếu một client có ñược một tài liệu WSDL và tìm thấy binding và ñịa chỉ cho mỗi port, nó có thể gọi các phương thức của dịch vụ theo
ñúng giao thức và ñịnh dạng dữ liệu ñã ñặc tả
Phần tử gốc của tất cả các tài liệu WSDL luôn là phần tử <definitions> Nó chứa bên trong sáu thành phần chia thành hai nhóm: thông tin trừa tượng và thông tin cụ thể
Hình 3: Cấu trúc WSDL
- Thông tin trừu tượng:
o types
o messages
o portType
Trang 9- Thông tin cụ thể:
o bindings
o services
WSDL ñịnh nghĩa cách mô tả web service theo cú pháp tổng quát XML, bao gồm các thông tin :
- Tên dịch vụ
- Giao thức và kiểu mã hóa sẽ ñược sử dụng khi gọi các hàm của web service
- Loại thông tin: Những thao tác, những tham số, và những kiểu dữ liệu gồm có giao diện của web service, cộng với tên cho giao diện này
Một WSDL hợp lệ gồm có hai phần (xem thêm trong [4]):
- Phần giao diện mô tả giao diện và giao thức kết nối
- Phần thi hành mô tả thông tin ñể truy xuất dịch vụ
Hai phần trên sẽ ñược lưu trong 2 tập tin XML:
- Tập tin giao diện dịch vụ (cho phần 1)
- Tập tin thi hành dịch vụ (cho phần 2)
Hình 4: 2 file XML của WSDL
5.2.1 Tập tin giao diện - Service Interface
WSDL mô tả các loại thông tin chính sau: import, types, message , portType, binding
a Types:
Định nghĩa các kiểu dữ liệu của thông ñiệp gửi
Trang 10<definitions >
<types>
<xsd:schema />*
</types>
</definitions>
b Message:
Mô tả thông ñiệp ñược gửi giữa client và server
<definitions >
<message name="nmtoken"> *
<part name="nmtoken" element="qname"? type="qname"?/> *
</message>
</definitions>
Những ñịnh nghĩa message ñược sử dụng bởi phần tử thi hành dịch vụ Nhiều thao tác có thể tham chiếu tới cùng ñịnh nghĩa thông ñiệp
Thao tác và các thông ñiệp ñược mô hình riêng rẽ ñể hỗ trợ tính linh hoạt
và ñơn giản hóa việc tái sử dụng Chẳng hạn, hai thao tác với cùng tham số có thể
chia sẻ một ñịnh nghĩa message
c Port type:
Mô tả cách gửi và nhận thông ñiệp
<wsdl:definitions >
<wsdl:portType name="nmtoken">
<wsdl:operation name="nmtoken" /> *
</wsdl:portType>
</wsdl:definitions>
WSDL ñịnh nghĩa bốn kiểu thao tác mà một cổng có thể hỗ trợ:
- One-way: Cổng nhận một message, message ñó là message nhập
- Request-response : Cổng nhận một message và gửi một message phản hồi
- Solicit-response: Cổng gửi một message và nhận về một message
- Notification: Cổng gửi một message, message ñó là message xuất Mỗi kiểu thao tác có cú pháp biến ñổi tùy theo thứ tự của các message nhập, xuất và lỗi Ví dụ :
Trang 11<wsdl:definitions >
<wsdl:portType > *
<wsdl:operation name="nmtoken" parameterOrder="nmtokens">
<wsdl:input name="nmtoken"? message="qname"/>
<wsdl:output name="nmtoken"? message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
d Binding:
Định nghĩa cách các web services kết hợp với nhau, bao gồm:
- Những giao thức mở rộng cho những giao tác và những message bao gồm thông tin URN và mã hóa cho SOAP
- Mỗi một kết hợp tham chiếu ñến một loại cổng, một kiểu cổng (portType) có thể ñược sử dụng trong nhiều mối kết hợp Tất cả các thao tác ñịnh nghĩa bên trong kiểu cổng phải nằm trong phạm vi mối kết hợp
WSDL mô tả 2 loại thông tin chính bao gồm: service và port
a Service: Nó sẽ thực hiện những gì ñã ñược ñịnh nghĩa trong tập tin giao diện và cách gọi dịch vụ web theo thủ tục và phương thức nào
<wsdl:definitions >
<wsdl:service name="nmtoken"> *
<wsdl:port />*
</wsdl:service>
</wsdl:definitions>
b Port: là một cổng ñầu cuối, nó ñịnh nghĩa là một tập hợp của ñiểm kết nối
và một ñịa chỉ mạng
<wsdl:definitions >
<wsdl:service > *
<wsdl:port name="nmtoken" binding="qname"> *
</wsdl:port>