SOAP協(xié)議應(yīng)用
SOAP協(xié)議的內(nèi)容我們來了解一下,了解到在一些重要的應(yīng)用中,這個簡單對象訪問協(xié)議起到了很重要的作用。這里我們主要分析一下RPC以及SOAP協(xié)議應(yīng)用等方面的內(nèi)容。
SOAP-RPC
SOAP消息本質(zhì)上是一種從發(fā)送方到接收方的單向傳輸,但是SOAP經(jīng)常組合到實(shí) 現(xiàn)請求/響應(yīng)機(jī)制中。要讓RPC使用SOAP,必須遵循幾條規(guī)則。首先,請求和響應(yīng) 消息必須被編碼成結(jié)構(gòu)類型。對一個操作的每一個輸入?yún)?shù),都必須有一個同名 元素(或輸入結(jié)構(gòu)的成員)作為參數(shù)。對每一個輸出參數(shù),都必須有一個名稱匹 配的元素(或輸出結(jié)構(gòu)的成員)。
基于RPC的觀點(diǎn),會省略一些更早一點(diǎn)顯示的SOAP消息。只帶有報文部分的SOAP請求與響應(yīng)封套如下所示:
請求 DEF響應(yīng) 22.50請求要調(diào)用GetLastTradePrice方法。注意響應(yīng)定義了 GetLastTradePriceResponse操作。對附加響應(yīng)到響應(yīng)操作尾部的 一個常用的SOAP調(diào)用規(guī)則是:創(chuàng)建響應(yīng)結(jié)構(gòu)。這種輸出結(jié)構(gòu)包含一個名稱為 price的元素,它返回方法調(diào)用的結(jié)果,假定為浮點(diǎn)型。
在SOAP封套中沒有什么地方的數(shù)據(jù)類型是顯式聲明的,注意到這一點(diǎn)很重要,這樣如果只查看SOAP消息,就不會知道符號類型或結(jié)果參數(shù)price(價格)的類 型。客戶端應(yīng)用程序一般通過“Section 5”編碼定義數(shù)據(jù)類型,或通過與服務(wù)器 私下達(dá)成的協(xié)議來定義數(shù)據(jù)類型。在任何一種情況下,這些包含在SOAP消息中的 定義都不是顯式的。
***,為了進(jìn)行RPC,需要一種低級協(xié)議如HTTP。盡管SOAP1.0規(guī)范強(qiáng)制要求 使用HTTP作為傳輸協(xié)議,但SOAP1.1規(guī)范(及其姊妹規(guī)范“帶有附件的SOAP消息” )允許使用FTP、SMTP、甚至(可能)原始的TCP/IP套接字。所有這些對SOAP通用的序列化和編碼規(guī)則,也適用于RPC參數(shù)。
SOAP協(xié)議應(yīng)用
Internet上某些地方的客戶端應(yīng)用程序使用Web服務(wù)。
Web服務(wù)(通過SOAP)顯示對象方法。
對象方法訪問Web上任意位置的遠(yuǎn)程數(shù)據(jù)。
對這些網(wǎng)絡(luò)命題應(yīng)用傳遞邏輯,我們可以為Web服務(wù)和SOAP協(xié)議下一個總的結(jié)論:
某些位置的客戶端可以使Web上任意位置的數(shù)據(jù)。這就是所要證明的。
下面是更加詳細(xì)一點(diǎn)的用例。
SOAP客戶端使用UDDI注冊來查找Web服務(wù)。不用直接操作WSDL,大多數(shù)情況下SOAP應(yīng)用程序?qū)⒂策B接到使用特定類型的端口和特定樣式的綁定,并且它將 通過UDDI動態(tài)配置要調(diào)用的、與發(fā)現(xiàn)的Web服務(wù)匹配的服務(wù)地址。客戶端應(yīng)用程序創(chuàng)建SOAP消息,它是一個可執(zhí)行想要的請求/響應(yīng)操作的 XML文檔。客戶端把SOAP消息傳送給監(jiān)聽SOAP請求的Web服務(wù)器上的JSP或ASP頁面。 SOAP服務(wù)器解析SOAP包并在其領(lǐng)域調(diào)用合適的對象方法,在SOAP文檔中包含的參數(shù)中傳遞。在SOAP服務(wù)器接收消息之前,中間處理節(jié)點(diǎn)可以執(zhí)行SOAP報 頭指示的特殊功能,可視情況確定是否執(zhí)行這步操作。請求對象執(zhí)行指示的功能,并返回數(shù)據(jù)給SOAP服務(wù)器,它把響應(yīng)打包到SOAP封套中。服務(wù)器把SOAP封套包裹在要發(fā)送回請求機(jī)器的響應(yīng)對象中,如 servlet或COM對象。客戶端接收對象,剝離出SOAP封套并把響應(yīng)文檔發(fā)送給最初發(fā)出請求的程 序,完成請求/響應(yīng)循環(huán)。
小結(jié)
SOAP協(xié)議是一種基于XML的協(xié)議,它用于在分布式環(huán)境中發(fā)送消息,并執(zhí)行遠(yuǎn)程過 程調(diào)用。使用SOAP,不用考慮任何特定的傳輸協(xié)議(盡管通常選用HTTP協(xié)議), 就能使數(shù)據(jù)序列化。用SOAP來構(gòu)建平臺與語言中性的互操作系統(tǒng)是一個好的選擇。總之,SOAP和 Web服務(wù)已為在XML上構(gòu)建分布式應(yīng)用程序基礎(chǔ)結(jié)構(gòu)所需的一切都考慮好了。通過解決COM和Java組件對象模型之間的沖突,SOAP把多個平臺在訪問數(shù)據(jù)時所出現(xiàn)的 不兼容性問題減至最少。先把這些討論放在一邊,SOAP是一種適用于所有類型的對象實(shí)體的理想的媒介 即使對于像Brad Pitt和Edward Norton之類的好萊塢電影角色也可用作 一種通信媒介。就像在電影中一樣,期待著這種新技術(shù)帶來震撼世界的效果。