Web Service隨筆1

發表于:2007-06-30來源:作者:點擊數: 標簽:
Web Service隨筆。 1 為什么出現Web Service? 現在Internet的發展十分迅速,它從前的框架是“人來獲取 網絡 上的資源,比如:程序、文檔等”。也就是說,現在的Web是以人為中心的,人來發送各種請求。而它的發展趨勢將是主體從“人”轉向“程序”,比如媒體
Web Service隨筆。

1 為什么出現Web Service?

現在Internet的發展十分迅速,它從前的框架是“人來獲取網絡上的資源,比如:程序、文檔等”。也就是說,現在的Web是以人為中心的,人來發送各種請求。而它的發展趨勢將是主體從“人”轉向“程序”,比如媒體播放器、瀏覽器等,也就是說“以應用程序中心”的Web。其實,在Web Service出現之前,人們就已經在做這方面的事情了,例如Java的Servlet和CGI,但是不同的程序系統采用了不同的數據定義,所以這些系統之間的交互變得異常地復雜。Web Service的出現,就是為了解決了不同應用程序之間通信的格式問題。

2 Web Service的通信方式?

XML通信有幾種不同的方法,例如:XML Remote Procedure Calls (XML-RPC),SOAP或HTTP GET/POST。

3 Web Service的屬性。

Web Service是在Internet上任何可用的服務,它是通過標準化的XML通信(XML Messaging)來實現的,并且不依賴于任何平臺和任何編程語言。

盡管不是必須的,但Web Service可能會有其他兩個屬性:

A)可自描述的(self-describing).如果你編寫Web Service,你應該發布Web Service的公共接口,至少有一個基于自然語言的文檔。這樣,別的開發者才能輕松地整合你的服務。

B)可發現的(discoverable).其他和你的Web Service有關的程序(可能是分散的,也可能是集中的系統)能夠找到它。

4 Web Service 的架構

Web Service有兩種架構,一種是討論Web Service每個功能角色(role),另一種是討論Web Service的協議層(protocol stack)。

就前者而言,Web Service有三個角色:服務提供者,服務請求者和服務注冊機構。服務請求者從服務注冊機構獲得服務提供者,然后向服務提供者發出提供服務的請求。


就后者而言,Web Service有四層:服務傳輸層(Service transport)、XML通信層(XML messaging)、服務描述層(Service description)和服務發現層(Service discovery)。

A) 服務傳輸層:負責信息在應用程序之間的傳送?,F在包括HTTP、FTP、SMTP和較新的如BEEP等協議。

就現在而言,由于HTTP比較簡單、穩定以及被廣泛應用,而且大部分防火墻對HTTP協議的80端口是開放的,所以HTTP是服務運輸層的最流行的協議。當然它會有一些安全上的隱患,因為HTTP協議的設計并不能滿足Web Service的安全性。

SOAP是不依賴于具體協議的,除了HTTP協議,它還可以通過FTP、SMTP等傳輸,比較有前途的是BEEP(Blocks Extensible Exchange Protocol)協議。BEEP協議屬于TCP,它較HTTP的優勢在于:除了TCP公共的握手外,它每次所帶的報文頭只需30個字節。

B) XML通信層:負責用通用的XML格式對信息進行編碼?,F在包括XML-RPC和 SOAP.

C) 服務描述層:負責用WSDL將公共接口向特定的Web Service描述。

D) 服務發現層:負責將服務集中到公共注冊機構,并且提供Web Service發布和尋找功能,現在服務發現是通過UDDI來實現的(Universal Description, Discovery, and Integration

)。

可見,Web Service采用可類似網絡分層的結構,使各個層次的功能互補干擾,同時又能很好的互相合作。當然,隨著Web Service的不斷發展,可能會出現新的層次。


我們可以看一下IBM的演示:

http://awwebx04.alphaworks.ibm.com/ettk/demos/wstkdoc/README.htm

我到微軟注冊了UDDI:http://uddi.microsoft.com

接下來看一下XML請求

下面是一段JAVA的SOAP調用:

Soap Request:

<?xml version=@#1.0@# encoding=@#UTF-8@#?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://www.w3.org/2001/09/soap-envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getWeather
xmlns:ns1="urn:examples:weatherservice"
SOAP-ENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding/">
<zipcode xsi:type="xsd:string">10016</zipcode>
</ns1:getWeather>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


SOAP Response:

<?xml version=@#1.0@# encoding=@#UTF-8@#?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://www.w3.org/2001/09/soap-envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getWeatherResponse
xmlns:ns1="urn:examples:weatherservice"
SOAP-ENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding/">
<return xsi:type="xsd:int">65</return>
</ns1:getWeatherResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
而下面是.Net調用的SOAP

Soap Request:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Add xmlns="http://tempuri.org/">
<a>24</a>
<b>12</b>
</Add>
</soap:Body>
</soap:Envelope>


SOAP Response:


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AddResponse xmlns="http://tempuri.org/">
<AddResult>36</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>
可以看出Xml通信的確是與平臺、語言無關的一種方式。



WSDL:我認為說白了,就是一個應用程序的一個公共接口,回想我們調用一個Web Service的時候,我們事先知道它的方法、參數和返回值,但是具體如何實現,我們并不關心,這不就是我們通常所說的接口嗎?

所以WSDL就是一種XML格式的Web Service提供的公共接口。

UDDI:

UDDI的數據有三種:

A) 白頁。公司的基本信息

B) 黃頁。服務的基本信息

C) 綠頁。服務的技術信息,調用服務的地址。

4 什么是SOAP?

用W3C的話說,它什么也不是。它并沒有被W3C正式承認。甚至連SOAP 1.1也只是Note的地位,意思是現在它在被W3C成員討論。

SOAP原意是簡單對象進入協議(Simple Object Aclearcase/" target="_blank" >ccess Protocol),但是W3C對這個名字不太滿意,因為這個解釋沒有表達清楚,但他們又不想換個名字,因為SOAP已經被開發者們熟悉并使用。所以,出現了奇怪的現象,SOAP的名字保留了,但是它并不代表任何東西。


原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97