WSDL XML
- WSDL là viết tắt của Ngôn ngữ mô tả dịch vụ web
- WSDL được sử dụng để mô tả các dịch vụ web
- WSDL được viết bằng XML
- WSDL là khuyến nghị của W3C từ ngày 26 tháng 6 năm 2007
Tài liệu WSDL
Tài liệu WSDL mô tả một dịch vụ web. Nó chỉ định vị trí của dịch vụ và các phương thức của dịch vụ, sử dụng các yếu tố chính sau:
Element | Description |
---|---|
<types> | Defines the (XML Schema) data types used by the web service |
<message> | Defines the data elements for each operation |
<portType> | Describes the operations that can be performed and the messages involved. |
<binding> | Defines the protocol and data format for each port type |
Cấu trúc chính của tài liệu WSDL trông như thế này:
<definitions>
<types>
data type definitions........
</types>
<message>
definition of the data being communicated....
</message>
<portType>
set of operations......
</portType>
<binding>
protocol and data format specification....
</binding>
</definitions>
Ví dụ về WSDL
Đây là một phần đơn giản của tài liệu WSDL:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
Trong ví dụ này, phần tử <portType> định nghĩa "glossaryTerms" là tên của một cổng và "getTerm" là tên của một thao tác .
Thao tác "getTerm" có thông báo đầu vào có tên là "getTermRequest" và thông báo đầu ra có tên là "getTermResponse".
Phần tử <message> xác định các phần của mỗi thông báo và các kiểu dữ liệu liên quan.
Phần tử <portType>
Phần tử <portType> xác định một dịch vụ web , các hoạt động có thể được thực hiện và các thông báo liên quan.
Loại phản hồi yêu cầu là loại hoạt động phổ biến nhất, nhưng WSDL xác định bốn loại:
Type | Definition |
---|---|
One-way | The operation can receive a message but will not return a response |
Request-response | The operation can receive a request and will return a response |
Solicit-response | The operation can send a request and will wait for a response |
Notification | The operation can send a message but will not wait for a response |
Hoạt động một chiều WSDL
Ví dụ về hoạt động một chiều:
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
Trong ví dụ trên, portType "glossaryTerms" xác định thao tác một chiều được gọi là "setTerm".
Thao tác "setTerm" cho phép nhập các thông báo thuật ngữ thuật ngữ mới bằng cách sử dụng thông báo "newTermValues" với các tham số đầu vào là "thuật ngữ" và "giá trị". Tuy nhiên, không có đầu ra nào được xác định cho hoạt động.
Hoạt động phản hồi yêu cầu WSDL
Một ví dụ về hoạt động phản hồi yêu cầu:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
Trong ví dụ trên, portType "glossaryTerms" xác định thao tác phản hồi yêu cầu được gọi là "getTerm".
Thao tác "getTerm" yêu cầu thông báo đầu vào có tên là "getTermRequest" với tham số có tên là "term" và sẽ trả về thông báo đầu ra có tên là "getTermResponse" với tham số có tên là "value".
Liên kết WSDL với SOAP
Các ràng buộc WSDL xác định định dạng thông báo và chi tiết giao thức cho một dịch vụ web.
Một ví dụ về hoạt động phản hồi yêu cầu:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="https://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation
soapAction="https://example.com/getTerm"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
Phần tử liên kết có hai thuộc tính - tên và loại.
Thuộc tính name (bạn có thể sử dụng bất kỳ tên nào bạn muốn) xác định tên của liên kết và thuộc tính type trỏ đến cổng cho liên kết, trong trường hợp này là cổng "glossaryTerms".
Phần tử xà phòng:ràng buộc có hai thuộc tính - kiểu dáng và vận chuyển.
Thuộc tính style có thể là "rpc" hoặc "document". Trong trường hợp này chúng tôi sử dụng tài liệu. Thuộc tính vận chuyển xác định giao thức SOAP sẽ sử dụng. Trong trường hợp này chúng tôi sử dụng HTTP.
Phần tử hoạt động xác định từng hoạt động mà portType hiển thị.
Đối với mỗi thao tác, hành động SOAP tương ứng phải được xác định. Bạn cũng phải chỉ định cách mã hóa đầu vào và đầu ra. Trong trường hợp này chúng ta sử dụng "nghĩa đen".