天天看點

soap和web services

現在影響世界最重要的技術就要算是I n t e r n e t / I n t r a n e t了,

I n t e r n e t / I n t r a n e t不但改變了許多人的生活,也影響了世界運轉的方式。各種商機

和軟/硬體的發展也由I n t e r n e t / I n t r a n e t主導。I n t e r n e t / I n t r a n e t的出現也為軟體的開

發方式帶來了多元的形式,軟體人員開始使用各種工具來開發I n t e r n e t / I n t r a n e t應

用系統。第一輪重要的技術革命是H T T P,它為I n t e r n e t / I n t r a n e t和電子商務都帶

來了重要的影響。第二輪是J a v a語言的興起,J a v a帶來了跨平台的契機,讓軟

件人員可以使用J a v a在各種平台上使用單一的語言和環境便可以開發應用系統,

J a v a幾乎提供了跨越平台的機會。第三輪則是X M L技術的興起,它提供了标準

的資料封裝技術,讓資料的交換跨越了各種平台,作業系統和開發工具。通過

XML,各種應用程式在交換資料時再也不會是令人頭痛的問題。

不管各種I n t e r n e t / I n t r a n e t應用系統

的實作技術為何,我們需要的是一種标準接口,能夠讓它們彼此可以調用和

使用對方提供的功能,或是服務,這就是Web Service的概念。

既然X M L提供了資料交換的标準,是以當不同的I n t e r n e t / I n t r a n e t應用系

統在互相內建時,就可以直接使用X M L技術來做為彼此溝通封裝的标準。當

I n t e r n e t / I n t r a n e t應用系統需要調用彼此提供的服務時,不需要知道對方實作

的技術,隻要以X M L封裝彼此約定的服務進入點,就可以順利地使用對方的

服務。這樣不但達成了标準交換資料的機制,也可順利使用X M L內建各種不

同的I n t e r n e t / I n t r a n e t應用系統。

這個概念可以使用圖1 - 1來說明。例如當在Wi n d o w s平台上執行的A S P想

要使用在L i n u x平台上執行的服務時,隻要雙方約定了提供服務的标準接口,

那麼A S P便可以使用X M L封裝标準的調用,然後通過I n t e r n e t / I n t r a n e t傳遞到

遠端的L i n u x中。而遠方的L i n u x在收到這個以X M L封裝的請求時,便可以解

析此X M L封裝的資訊,執行A S P需要的服務之後,再同樣使用X M L封裝執行

的結果,再傳遞回遠方A S P。

當A S P收到L i n u x傳回的X M L封裝結果之後,再從X M L中取出執行結果

即可完成工作。

S O A P定義了如何交換類型和具有結構的資訊,它是一個Wire Protocol并且使

用X M L做為封裝資訊的标準。而Web Service則是使用S O A P做為通信的标準,

并且提供外界标準的服務接口以便讓各種用戶端應用程式能夠通過S O A P調

用服務接口,進而使用Web Service提供的功能。

由于S O A P隻是一個Wire Protocol,是以在實際進行溝通時還是必須使用

特定的通信協定( Transport Protocol),例如H T T P、S M T P或是I I O P等。在

S O A P的功能規格中定義S O A P如何綁定使用H T T P進行實體的通信。

由于S O A P使用了X M L做為封裝和交換資訊的标準,是以可以在各種不

同的平台中使用,隻要不同的平台支援并且能夠解析和處理S O A P的封包。

由于S O A P隻是一個定義如何交換資料的Wire Protocol,是以它可以使用現在

任何的标準通信協定做為實體溝通的機制。在S O A P的功能規格中是選擇以

H T T P通信協定做為第一個實作的實體通信協定,是以由S O A P封裝的資訊可

以包含在H T T P的封包中進行溝通。

除了H T T P之外,軟體廠商當然也可以實作其他的通信協定來傳送S O A P

封包,例如C O R B A的廠商可以使用I I O P做為實體的通信協定。當然,其他的

通信協定也可以做為S O A P的實體通信協定,例如下一個最有希望被實作的

通信協定就是S M T P

由于S O A P選擇了以H T T P做為第一個實作的傳送通信協定,而H T T P又

是現在所有平台和作業系統都已經接受的标準通信協定,是以通過使用

S O A P和H T T P軟體開發人員可以輕易地內建各種平台以及實作模型,包含了

C O M / M T S / C O M +、C O R B A和E J B等。

各種不同的用戶端可以使用S O A P标準調用和

使用各種不同的後端平台提供的資訊。對于用戶端來說隻需要使用S O A P這個

标準就可以進行遠端服務的調用,而不需要知道後端是使用什麼技術實作的

現在S O A P幾乎已經被所有的實作語言所支援,例如J a v a有Class Library,

C / C + +有函數庫,V B有MS Soap To o l k i t,D e l p h i有S o a p元件和向導等等。因

此現在軟體開發人員就可以使用S O A P技術來內建異構平台,或是開發分布

式應用系統不過即使是如此,軟體開發人員仍然面對一個非常困難的問題,

那就是雖然通過S O A P軟體開發人員可以封裝交換資訊,但是不同的實作技

術如何調用其他實作技術提供的服務呢?

這個問題也就是引發軟體服務觀點的基礎,也是Web Service要解決的問題。

雖然C O R B A是一個為了解決內建異構

平台的元件技術, 但是當C O R B A 要內建其他的元件模型時, 例如

C O M / C O M +,也需要各種B r i d g e技術來幫助。例如C O R B A -和COM Bridge軟

件等。

但是這些B r i d g e技術通常都實作在特定的元件廠商之上,而且也限制用

戶必須使用特定的元件模型版本等。此外B r i d g e軟體通常也是屬于特定廠商

第1章S O A P和Web Serv i c e的概念使用7 下載下傳

的專屬技術,并不是一個開放的标準。由于這些原因,是以要使用B r i d g e技

術在I n t e r n e t / I n t r a n e t這個多元的應用環境中是非常困難而且不切實際的。

基本上Web Service的概念是使用一個标準的輸出接口來定義實作程式代

碼提供的功能,以便讓外界可以通過這個标準的輸出接口來調用,而所謂的

标準的輸出接口就是W S D L ( Web Service Description Language)。

W S D L是一個由X M L組成的檔案,這個檔案内容描述了實作程式代碼對

外提供的函數原型,也就是各種可供調用的函數名稱以及參數等資訊。在實

現程式代碼提供了W S D L之後,用戶端就可以通過W S D L來調用實作程式代

碼提供的服務

由于實作程式代碼提供了W S D L之後,就可以接受外界的調用,是以實

現程式代碼并不會區分是用戶端調用或是其他的後端實作程式代碼來調用。

隻要是通過W S D L來調用,實作程式代碼就可以提供它的服務

用戶端通過S O A P封裝需求資訊,通過I n t e r n e t / I n t r a n e t傳遞到後端的服

第1章S O A P和Web Serv i c e的概念使用9 下載下傳

務器,再通過Web Service服務接口調用後端的功能。由于S O A P是實作在

H T T P通信協定之上,是以可以調用到任何支援H T T P的平台并且能夠輕易地

穿越防火牆,完成一些元件模型無法輕易完成的工作,例如D C O M便很困難

穿越防火牆。而當服務端處理完用戶端的請求之後,就再使用S O A P封裝傳回的結果,

透過I n t e r n e t / I n t r a n e t傳回給用戶端。

隻需要使用

S O A P和Web Service的技術就可以完成這個分布式計算的要求,不再需要任

何特定的專屬技術,也不再受限于特定的作業系統和平台,也能夠真正地集

成I n t e r n e t / I n t r a n e t上各種不同的實作平台。

由于I n t e r n e t / I n t r a n e t是一個多元化的計算

環境,是由各種不同的實作技術、平台和作業系統共同結合而成的。是以想

要結合I n t e r n e t / I n t r a n e t上不同實作技術提供的服務以組成一個網網相連的集

成計算環境,那麼必須使用大家都接受的标準,來內建彼此的服務, S O A P

和Web Service就是在這種需求下産生的标準,而且迅速地成為大家都接受的

開放标準。

繼續閱讀