webservice系列教學(1)
2024-07-21 02:21:52
供稿:網友
關鍵字: soap xml xsd wsdl
1. 什么是webservice
從表面上看,web service 就是一個應用程序,它向外界暴露出一個能夠通過web進行調用的api。這就是說,你能夠用編程的方法通過web來調用這個應用程序。
對web service 更精確的解釋: web services是建立可互操作的分布式應用程序的新平臺。作為一個windows程序員,你可能已經用com或dcom建立過基于組件的分布式應用程序。com是一個非常好的組件技術,但是我們也很容易舉出com并不能滿足要求的情況。web service平臺是一套標準,它定義了應用程序如何在web上實現互操作性。你可以用任何你喜歡的語言,在任何你喜歡的平臺上寫web service ,只要我們可以通過web service標準對這些服務進行查詢和訪問。
不管你的web service是用什么工具,什么語言寫出來的,只要你用soap協議通過http來調用它,總體結構都應如下圖所示。通常,你用你自己喜歡的語言(如vb 6或者vb.net)來構建你的web service,然后用soap toolkit或者.net的內建支持來把它暴露給web客戶。于是,任何語言,任何平臺上的客戶都可以閱讀其wsdl文檔,以調用這個web service。客戶根據wsdl描述文檔,會生成一個soap請求消息。web service都是放在web服務器 (如iis) 后面的,客戶生成的soap請求會被嵌入在一個http post請求中,發送到web服務器來。web服務器再把這些請求轉發給web service請求處理器。對vb 6程序來說,web service請求處理器是一個與soap toolkit組件協同工作的asp頁面或isapi extension。而對vb.net程序來說,web service請求處理器則是一個.net framework自帶的isapi extension。請求處理器的作用在于,解析收到的soap請求,調用web service,然后再生成相應的soap應答。web服務器得到soap應答后,會再通過http應答的方式把它送回到客戶端。
2. 基本概念
soap
web service建好以后,其他人就會去調用它。簡單對象訪問協議(soap)提供了標準的遠程過程調用( rpc)方法來調用web service。soap規范定義了soap消息的格式,以及怎樣通過http協議來使用soap。soap也是基于xml和xsd的,xml是soap的數據編碼方式。客戶端和服務端之間的方法調用請求和結果返回值都放在這些消息里。
xml和xsd
可擴展的標記語言(xml)是web service平臺中表示數據的基本格式。除了易于建立和易于分析外,xml主要的優點在于它既是平臺無關的,又是廠商無關的。無關性是比技術優越性更重要的。xml解決了數據表示的問題,但它沒有定義一套標準的數據類型,更沒有說怎么去擴展這套數據類型。例如,整形數到底代表什么?16位,32位,還是64位?這些細節對實現互操作性都是很重要的。w3c制定的xml schema(xsd)就是專門解決這個問題的一套標準。它定義了一套標準的數據類型,并給出了一種語言來擴展這套數據類型。web service平臺就是用xsd來作為其數據類型系統的。當用某種語言(如vb.net或c#)來構造一個web service時,為了符合web service標準,所有使用的數據類型都必須被轉換為xsd類型。
wsdl(web services description language)
用于描述服務端所提供服務的xml格式。wsdl文件里,描述了服務端提供的服務,提供的調用方法,以及調用時所要遵循的格式,比如調用參數和返回值的格式等等。wsdl 很像com編程里的idl(interface description language),是服務器與客戶端之間的契約,雙方必須按契約嚴格行事才能實現功能。
wsml(web services meta language)
用于描述wsdl里提供的方法與實現該方法的com對象之間的映射關系。該文件是microsoft的實現中特有的,不是soap標準的一部分。一般情況下,該文件只在服務端存在。