标签:
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.
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.
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.
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:
原文参见:
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