天天看點

Web Service學習筆記(1)

Web Service的宗旨是建立不需要使用者界面就能與其他應用程式互動的Web應用程式。

舉例說明它的優點,假如你正在為一家股票投資公司建立網站,你并不需要把不同證劵交易所得資料庫與自己的背景資料庫進行整合,因為你的應用程式可以使用Web Service,并使用XML格式交換資料。

Web Service是松耦合的,它與伺服器端和用戶端使用的作業系統、程式設計語言都無關。假如你既擁有用戶端又有伺服器端的通路和管理權,這種情況更适合用.NET 的Remoting技術,而不是Web service。

建立Web Service必須保證的是,伺服器端和用戶端都要支援HTTP、SOAP(簡單對象通路協定)和XML等行業标準協定。 

Web Service是如何工作的

Web Service允許兩個程式之間交換XML文檔。在這個架構的頂層,微軟實作了一個遠端過程調用(Remote Procedure Call,PRC)模型。

Web Service架構包括以下特性:

1。WebServcie的伺服器端和用戶端應用程式都能夠連接配接到網際網路。

2。用于進行通信的資料格式必須遵守相同的開放标準,并且在大多數情況下,這個标準幾乎總是SOAP。

3。用戶端和伺服器端的系統是松耦合的。即Web Service不關心用戶端和伺服器端所使用的作業系統、對象模型或者程式設計語言。隻要Web Service和使用Web Service的應用程式都能夠發送和接收遵守适當協定标準的消息即可。

下圖為Web Service流程的邏輯架構

如圖所示,一個Web Service使用着會向Web Service發出一個調用請求。使用者會認為它通過Internet直接和Web Service進行交流,當然這實際上是個幻象。實際上,真正的調用由代理類完成。代理類對于Web Service使用者來說是一個本地類。代理會處理所有的負責的複雜架構,包括通過Internet發送請求道伺服器、從web Service取回結果并呈現給Web Service使用者。

由于代理類在之前已在消費程式中注冊,所有一切工作才可以順利進行。注冊有開發消費程式的程式員完成。

開發Web Service

開發Web Service的流程與開發網頁的流程近乎一緻:

1。所有構成網頁和服務的源檔案都是文本檔案,它們可以使用任何文本編輯器建立和修改。而類檔案可以在控制台指令行中通過指令工具進行編譯。

2。可以在vs2005及以上版本中建立網頁和Web Service

3。網頁和Web Service既可以使用代碼隐藏模型,也可以使用内聯編碼(inline coding)模型。Web Service中不需要使用代碼隐藏技術,因為Web Service并不包括任何可視化内容。

4。網頁和Web Service都充分利用了CLR和.NET Framework。

.aspx檔案用于定義網頁,而.asmx檔案用于定Web Service,我們可以吧Web Service想象成類,類中的一些方法通過Internet被暴露給用戶端。

代理

用戶端應用程式如果使用Web Service,必須先建立一個代理。代理是要調用的真正代碼的替身,它負責在機器邊界引導調用。在代理在用戶端應用程式中注冊後,用戶端應用程式調用方法就如調用本地對象一樣。代理接受該調用,并以适當格式封裝調用,然後以SOAP請求發送調用到伺服器。當伺服器傳回SOAP包給用戶端後,代理會對包進行解密,并且如同從本地對象的方法傳回資料一樣将其傳回給用戶端應用程式。如下圖所示:

協定與标準(HTTP、XML、SOAP)

HTTP:TCP/IP協定的最上層是超文本傳輸協定(HTTP)。它是用于在網絡之間使用伺服器和浏覽器實作通訊,主要包括在伺服器和浏覽器建立連接配接,并将HTML傳輸到用戶端浏覽器。當用戶端向伺服器發送HTTP請求後,伺服器就開始處理請求。通常,會傳回HTML頁面,然後通過浏覽器呈現。然而對Web Service而言,伺服器傳回的是SOAP消息,消息中包含了被調用的Web Service方法的傳回資料。

HTTP請求從請求的浏覽器出傳遞名稱和值到伺服器,這種請求包括GET和POST兩種。

GET請求中,名稱和值會被附加到url上,資料是未加密的。當所有需要傳遞的資料可以使用名稱和值成對表示,而且隻需要傳遞少量字段,字段長度較短時,比較适合GET請求。另外,如果不需考慮安全問題時,也可以使用GET。

POST請求中,配對的名稱和值是作為請求消息的一部分發送的。當有大量字段或者參數很長時,适合使用POST請求。從安全方面看,POST比GET更安全,因為POST請求可以被加密。和GET請求一樣,POST請求無法傳遞複雜的資料類型(如類、結構體和DataSet)。

XML:是有W3C公布的開放标準的一種描述資料的方法。

XML和HTML十分類似。不同的是HTML使用的是預定義元素,這些元素規定了HTML在浏覽器中如何顯示,而XML的元素則是由開放人員自己定義的,是以幾乎所有的資料都可以表示。制定XML的目的是為了使其成為一種平台無關、語言無關的标準。

XML架構(Schema)是用于定義元素已經XML文檔中或者許多XML之間元素與元素之間關聯的檔案。在架構中将指定元素名稱和内容類型。HTML與XML的顯著差别:大多數HTML讀取器有很好的容錯能力,而XML讀取器則完全不同,是以XML檔案的格式必須正确。另外,XML元素都是小寫的。

SOAP:(simple object access protocol,簡單對象通路協定)是一種用于控制資料交換的XML文法。它是簡單的、輕量級的資訊交換協定。SOAP消息有消息内容和一個或多個頭子產品組成,并且封裝在SOAP envelope中。

SOAP使用XML文法來格式化内容。在設計上,SOAP盡可能簡單并且提供最小化的功能。

SOAP不需HTTP的GET和POST,它不受“名稱/值”對的限制,我們可以使用它來發送複雜的對象,包括DataSet、類和其他對象。

SOAP的缺點:SOAP消息十分冗長,是以如果存在帶寬或者傳輸性能的問題,建議使用POST或GET。

    本文轉自xshf12345 51CTO部落格,原文連結:,http://blog.51cto.com/alexis/573704如需轉載請自行聯系原作者