WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺
- WIKI程序與應(yīng)用
- 美國十大主機(jī)
SOAP
SOAP是簡單對象訪問協(xié)議,是一種輕量的、簡單的、基于XML的協(xié)議,它被設(shè)計(jì)成在WEB上交換結(jié)構(gòu)化的和固化的信息,SOAP可以和現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議HTTP,簡單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME),它還支持從消息系統(tǒng)到遠(yuǎn)程過程調(diào)用(RPC)等大量的應(yīng)用程序。
SOAP包括的四個部分[ ]
- SOAP封裝:它定義了一個框架, 該框架描述了消息中的內(nèi)容是什么,誰應(yīng)當(dāng)處理它以及它是可選的還是必須的。
- SOAP編碼規(guī)則:它定義了一種序列化的機(jī)制,用于交換應(yīng)用程序所定義的數(shù)據(jù)類型的實(shí)例。
- SOAP RPC表示:它定義了用于表示遠(yuǎn)程過程調(diào)用和應(yīng)答的協(xié)定。
- SOAP綁定:定義了一種使用底層傳輸協(xié)議來完成在節(jié)點(diǎn)間交換SOAP封裝的約定。
- SOAP消息基本上是從發(fā)送端到接收端的單向傳輸,但它們常常結(jié)合起來執(zhí)行類似于請求/應(yīng)答的模式,所有的SOAP消息都使用XML編碼。一條SOAP消息就是一個包含有一個必需的SOAP的封裝包,一個可選的SOAP標(biāo)頭和一個必需的SOAP體塊的XML文檔。
- 把SOAP綁定到HTTP提供了同時利用SOAP的樣式和分散的靈活性的特點(diǎn)以及HTTP的豐富的特征庫的優(yōu)點(diǎn),在HTTP上傳送SOAP并不是說SOAP會覆蓋現(xiàn)有的HTTP語義,而是HTTP上的SOAP語義會自然的映射到HTTP語義,在使用HTTP作為協(xié)議綁定的場合中, RPC請求映射到HTTP請求上,而RPC應(yīng)答映射到HTTP應(yīng)答,然而在RPC上使用SOAP并不僅限于HTTP協(xié)議綁定。
協(xié)議結(jié)構(gòu)
SOAP消息格式[ ]
- SOAP 標(biāo)頭
- <SOAP-ENV: Envelope
- Attributes>
- <SOAP-ENV:Body
- Attributes>
- </SOAP-ENV:Body>
SOAP語法規(guī)則[ ]
這里是一些重要的語法規(guī)則:
SOAP 消息必須用 XML 來編碼
SOAP 消息必須使用 SOAP Envelope 命名空間
SOAP 消息必須使用 SOAP Encoding 命名空間
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 處理指令
SOAP 核心技術(shù)[ ]
- SOAP采用了已經(jīng)廣泛使用的兩個協(xié)議:HTTP和XML,HTTP用于實(shí)現(xiàn) SOAP的RPC風(fēng)格的傳輸, 而XML是它的編碼模式,采用幾行代碼和一個XML解析器, HTTP服務(wù)器( MS的[IIS]或Apache) 立刻成為SOAP 的ORBS,SOAP 通訊協(xié)議使用HTTP來發(fā)送XML格式的信息,HTTP與RPC的協(xié)議很相似、 配置廣泛,并且對防火墻比其它協(xié)議更容易發(fā)揮作用,HTTP請求一般由Web服務(wù)器軟件(如IIS和Apache)來處理, 但越來越多的應(yīng)用服務(wù)器產(chǎn)品正在支持HTTP,XML作為一個更好的網(wǎng)絡(luò)數(shù)據(jù)表達(dá)方式( NDR)。
- SOAP把XML的使用代碼化為請求和響應(yīng)參數(shù)編碼模式, 并用HTTP作傳輸,具體地講,一個SOAP方法可以簡單地看作遵循SOAP編碼規(guī)則的HTTP請求和響應(yīng), 一個SOAP終端則可以看作一個基于HTTP的URL, 它用來識別方法調(diào)用的目標(biāo)。像CORBA/IIOP一樣, SOAP不需要具體的對象綁定到一個給定的終端, 而是由具體實(shí)現(xiàn)程序來決定怎樣把對象終端標(biāo)識符映像到服務(wù)器端的對象。
SOAP的優(yōu)點(diǎn)[ ]
- SOAP是可擴(kuò)展的,SOAP無需中斷已有的應(yīng)用程序, SOAP客戶端、 服務(wù)器和協(xié)議自身都能發(fā)展,而且SOAP能極好地支持中間介質(zhì)和層次化的體系結(jié)構(gòu)。
- SOAP 是簡單的,客戶端發(fā)送一個請求,調(diào)用相應(yīng)的對象, 然后服務(wù)器返回結(jié)果,這些消息是XML格式的,并且封裝成符合HTTP協(xié)議的消息。因此它符合任何路由器、防火墻或代理服務(wù)器的要求。
- SOAP是完全和廠商無關(guān),SOAP可以相對于平臺、 操作系統(tǒng)、 目標(biāo)模型和編程語言獨(dú)立實(shí)現(xiàn)。另外傳輸和語言綁定以及數(shù)據(jù)編碼的參數(shù)選擇都是由具體的實(shí)現(xiàn)決定的。
- SOAP 與編程語言無關(guān),SOAP可以使用任何語言來完成, 只要客戶端發(fā)送正確SOAP請求( 也就是說傳遞一個合適的參數(shù)給一個實(shí)際的遠(yuǎn)端服務(wù)器)。SOAP 沒有對象模型, 應(yīng)用程序可以捆綁在任何對象模型中。
- SOAP與平臺無關(guān),SOAP可以在任何操作系統(tǒng)中無需改動正常運(yùn)行。
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。盡管SOAP 1.0規(guī)范強(qiáng)制要求 使用HTTP作為傳輸協(xié)議,但SOAP1.1規(guī)范(及其姊妹規(guī)范“帶有附件的SOAP消息” )允許使用FTP、SMTP、甚至(可能)原始的TCP/IP套接字。