国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Web Service隨筆1

2024-07-21 02:21:22
字體:
來源:轉載
供稿:網友
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) 服務傳輸層:負責信息在應用程序之間的傳送。現在包括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格式對信息進行編碼。現在包括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 access protocol),但是w3c對這個名字不太滿意,因為這個解釋沒有表達清楚,但他們又不想換個名字,因為soap已經被開發者們熟悉并使用。所以,出現了奇怪的現象,soap的名字保留了,但是它并不代表任何東西。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 纳雍县| 荣昌县| 奈曼旗| 海宁市| 厦门市| 西林县| 策勒县| 哈巴河县| 甘孜| 聂拉木县| 鄄城县| 崇义县| 宝兴县| 彭阳县| 汾西县| 章丘市| 工布江达县| 巩留县| 许昌市| 河西区| 吕梁市| 盐池县| 合江县| 崇仁县| 赣榆县| 富平县| 敦化市| 镇安县| 凤阳县| 梁平县| 绥棱县| 莆田市| 鄂州市| 毕节市| 沭阳县| 五峰| 壤塘县| 博白县| 江华| 新建县| 霍林郭勒市|