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 để triệu gọi (invoke) 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ể.
· Thông tin trừu tượng
a. types
b. messages
c. portType
· Thông tin cụ thể
bindings
services
Các thành phần chứa những tham chiếu lẫn nhau như trong hình.
Hình 1: Cấu trúc WSDL
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 ̣service.
– 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 :
1. Service Inteface mô tả giao diện và giao thức kết nối.
2. Service Implementation mô tả thông tin để truy xuất service
Cả 2 phần trên sẽ được lưu trong 2 tập tin XML, bao gồm:
– Tập tin cho Service Interface (cho phần 1).
– Tập tin cho Service Implementation (cho phần 2).
Hình 2: Cấu trúc WSDL
1. Tập tin giao diện – Service Interface
WSDL mô tả 5 loại thông tin chính bao gồm: import, types, message , portType, binding.
a. Types: WSDL định nghĩa các kiểu dữ liệu của thông điệp gửi .
<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 service. Nhiều thao tác có thể tham chiếu tới cùng định nghĩa message.
Thao tác và những message đượ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 lại. 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: WSDL 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ụ :
<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.
– 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.
2. Tập tin thi hành – Service Implementation
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 web services 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 như một tập hợp của binding và một địa chỉ mạng.
<wsdl:definitions …. >
<wsdl:service …. > *
<wsdl:port name=”nmtoken” binding=”qname”> *
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Ở đây chúng ta thấy rằng thuộc tính kết hợp tên là qname. Nó tham chiếu tới một mối kết hợp. Một cổng chứa đựng chính xác một địa chỉ mạng bất kỳ cổng nào trong phần thi hành phải tương ứng chính xác với một tham chiếu trong phần giao diện.