码迷,mamicode.com
首页 > Web开发 > 详细

译-Web Service剖析: 使用XML, SOAP 和WSDL 进行独立于平台的数据交换

时间:2016-05-13 13:18:33      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

 

Most applications are developed to interact with users; the user enters or searches for data through an interface and the application then responds to the user‘s input. A Web service does more or less the same thing except that a Web service application communicates only from machine to machine or application to application. There is often no direct user interaction. A Web service basically is a collection of open protocols that is used to exchange data between applications. The use of open protocols enables Web services to be platform independent. Software that are written in different programming languages and that run on different platforms can use Web services to exchange data over computer networks such as the Internet. In other words, Windows applications can talk to PHP, Java and Perl applications and many others, which in normal circumstances would not be possible.

How Do Web Services Work?

Because different applications are written in different programming languages, they often cannot communicate with each other. A Web service enables this communication by using a combination of open protocols and standards, chiefly XML, SOAP and WSDL. A Web service uses XML to tag data, SOAP to transfer a message and finally WSDL to describe the availability of services. Let‘s take a look at these three main components of a Web service application.

Simple Object Access Protocol (SOAP)

The Simple Object Access Protocol or SOAP is a protocol for sending and receiving messages between applications without confronting interoperability issues (interoperability meaning the platform that a Web service is running on becomes irrelevant). Another protocol that has a similar function is HTTP. It is used to access Web pages or to surf the Net. HTTP ensures that you do not have to worry about what kind of Web server -- whether Apache or IIS or any other -- serves you the pages you are viewing or whether the pages you view were created in ASP.NET or HTML. Because SOAP is used both for requesting and responding, its contents vary slightly depending on its purpose. Below is an example of a SOAP request and response message:

 

SOAP Request: 

POST /InStock HTTP/1.1 
Host: www.bookshop.org 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: nnn 
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
    <soap:Body xmlns:m="http://www.bookshop.org/prices">
        <m:GetBookPrice>
            <m:BookName>The Fleamarket</m:BookName>
        </m:GetBookPrice>
    </soap:Body>
</soap:Envelope>

SOAP Response:

POST /InStock HTTP/1.1 
Host: www.bookshop.org 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: nnn 
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
    <soap:Body xmlns:m="http://www.bookshop.org/prices">
        <m:GetBookPriceResponse>
            <m: Price="">10.95</m:>
        </m:GetBookPriceResponse>
    </soap:Body>
</soap:Envelope>

 

Although both messages look the same, they carry out different methods. For instance looking at the above examples you can see that the requesting message uses the GetBookPrice method to get the book price. The response is carried out by the getbookpriceResponse method, which is going to be the message that you as the "requestor" will see. You can also see that the messages are composed using XML.

Web Services Description Language or WSDL

How do you know what methods are available in a Web service that you stumble across on the Internet? Well, WSDL takes care of that for you. WSDL is a document that describes a Web service and also tells you how to access and use its methods. Take a look at a sample WSDL file:

<?xml version="1.0" encoding="utf-8"?>
<definitions name="DayOfWeek" targetNamespace="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl" xmlns:tns="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DayOfWeekInput">
    <part name="date" type="xsd:date" />
</message>
<message name="DayOfWeekResponse">
    <part name="dayOfWeek" type="xsd:string" />
</message>
<portType name="DayOfWeekPortType">
    <operation name="GetDayOfWeek">
        <input message="tns:DayOfWeekInput" />
        <output message="tns:DayOfWeekResponse" />
    </operation>
</portType>
<binding name="DayOfWeekBinding" type="tns:DayOfWeekPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="GetDayOfWeek">
        <soap:operation soapAction="getdayofweek" />
        <input>
            <soap:body use="encoded" namespace="http://www.roguewave.com/soapworx/examples" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
        </input>
        <output>
            <soap:body use="encoded" namespace="http://www.roguewave.com/soapworx/examples" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
        </output>
    </operation>
</binding>
<service name="DayOfWeekService">
<documentation>Returns the day-of-week name for a given date 40</documentation>41 
<port name="DayOfWeekPort" binding="tns:DayOfWeekBinding">42 
<soap:address location="http://localhost:8090/dayofweek/DayOfWeek" />43</port>44</service>45</definitions>

The main things to remember about a WSDL file are that it provides you with:

  • A description of a Web service
  • The methods a Web service uses and the parameters that it takes
  • A way to locate Web services

原文参见:

Anatomy of a Web Service: XML, SOAP and WSDL for Platform-independent Data Exchange

译-Web Service剖析: 使用XML, SOAP 和WSDL 进行独立于平台的数据交换

标签:

原文地址:http://www.cnblogs.com/lizhaoxian/p/5487750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!