• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            淺談SOAP

            本文對(duì)SOAP作了一個(gè)初步介紹,給出幾個(gè)簡(jiǎn)單示例;接著比較CORBA,DCOM/COM與SOAP的聯(lián)系與區(qū)別;然后淺析SOAP簡(jiǎn)單的理解為RPC+HTTP+XML時(shí)的運(yùn)行機(jī)制;最后展現(xiàn)SOAP的前景。

            一:為什么需要SOAP

            隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,現(xiàn)代企業(yè)面臨的環(huán)境越來越復(fù)雜,其信息系統(tǒng)大多數(shù)為多平臺(tái)、多系統(tǒng)的復(fù)雜系統(tǒng)。這就要求今天的企業(yè)解決方案具有廣泛的兼容能力,可以支持不同的系統(tǒng)平臺(tái)、數(shù)據(jù)格式和多種連接方式,要求在Internet 環(huán)境下,實(shí)現(xiàn)系統(tǒng)是松散耦合的、跨平臺(tái)的,與語(yǔ)言無關(guān)的,與特定接口無關(guān)的,而且要提供對(duì)Web 應(yīng)用程序的可靠訪問。

            隨著異種計(jì)算環(huán)境的不斷增加,各種系統(tǒng)間的互操作性就愈顯得必要,要求系統(tǒng)能夠無縫地進(jìn)行通信和共享數(shù)據(jù),從而在 Internet 環(huán)境下,消除巨大的信息孤島,實(shí)現(xiàn)信息共享、進(jìn)行數(shù)據(jù)交換,達(dá)到信息的一致性。Web services 希望實(shí)現(xiàn)不同的系統(tǒng)之間能夠用"軟件-軟件對(duì)話"的方式相互調(diào)用,打破了軟件應(yīng)用、網(wǎng)站和各種設(shè)備之間的格格不入的狀態(tài),實(shí)現(xiàn)"基于WEB無縫集成"的目標(biāo)。

            今年四月份的時(shí)候,W3C聯(lián)盟召開了第一次 Web 服務(wù)專題研討會(huì),目的為探索 W3C 應(yīng)向哪個(gè)方向發(fā)展才能實(shí)現(xiàn)新興的 Web 服務(wù)架構(gòu)的標(biāo)準(zhǔn)化,期間提出了一個(gè)"Web 服務(wù)堆棧"的構(gòu)想,如下圖,從圖中可以看出,SOAP在WEB服務(wù)堆棧中作為用于 XML 消息傳遞的一種非常普遍的協(xié)議,發(fā)揮著十分重要的作用。

            clip_image001

            clip_image003
            clip_image005

            clip_image006

            clip_image007

            回頁(yè)首

            二:什么是SOAP

            SOAP(Simple Object Access Protocol )簡(jiǎn)單對(duì)象訪問協(xié)議是在分散或分布式的環(huán)境中交換信息的簡(jiǎn)單的協(xié)議,是一個(gè)基于XML的協(xié)議,它包括四個(gè)部分:SOAP封裝(envelop),封裝定義了一個(gè)描述消息中的內(nèi)容是什么,是誰(shuí)發(fā)送的,誰(shuí)應(yīng)當(dāng)接受并處理它以及如何處理它們的框架;SOAP編碼規(guī)則(encoding rules),用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例; SOAP RPC表示(RPC representation),表示遠(yuǎn)程過程調(diào)用和應(yīng)答的協(xié)定;SOAP綁定(binding),使用底層協(xié)議交換信息。

            雖然這四個(gè)部分都作為SOAP的一部分,作為一個(gè)整體定義的,但他們?cè)诠δ苌鲜窍嘟坏摹⒈舜霜?dú)立的。特別的,信封和編碼規(guī)則是被定義在不同的XML命名空間(namespace)中,這樣使得定義更加簡(jiǎn)單。

            SOAP的兩個(gè)主要設(shè)計(jì)目標(biāo)是簡(jiǎn)單性和可擴(kuò)展性。這就意味著有一些傳統(tǒng)消息系統(tǒng)或分布式對(duì)象系統(tǒng)中的某些性質(zhì)將不是SOAP規(guī)范的一部分。比如:分布式垃圾收集 (Distributed garbage collection)、成批傳送消息(Boxcarring or batching of messages)、對(duì)象引用 (Objects-by-reference(which requires distributed garbage collection))、對(duì)象激活 (Activation(which requires objects-by-reference))。

            SOAP消息舉例:

            1.第一個(gè)例子闡明了SOAP中一個(gè)簡(jiǎn)單的通信信息,包括了兩個(gè)不是SOAP定義而是應(yīng)用程序定義的元素:頭塊元素alertcontrol 和體塊元素alert。頭塊元素包括兩個(gè)參數(shù):priority 和expires。體塊元素包括的是實(shí)際傳送的信息。

            clip_image008
            (EXAMPLE 1)

            2.SOAP通信與底層的不同協(xié)議和不同的交換格式有關(guān),下面的例子SOAP使用HTTP作為底層通信協(xié)議,從而可以很好的使用request/response機(jī)制來傳送信息。 SOAP/HTTP請(qǐng)求包括一個(gè)GetLastTradePrice的塊元素,該請(qǐng)求攜帶一個(gè)字符串參數(shù)和ticker符號(hào),在SOAP應(yīng)答中返回一個(gè)浮點(diǎn)數(shù)。XML名域用來區(qū)分SOAP標(biāo)志符和應(yīng)用程序特定的標(biāo)志符。

            clip_image009
            (EXAMPLE 2)

            3. 例3 展示的是StockQuote SOAP服務(wù)信息,是對(duì)例2的請(qǐng)求作出的一條應(yīng)答消息。

            clip_image010
            (EXAMPLE 3)

            clip_image003[1]
            clip_image005[1]

            clip_image006[1]

            clip_image007[1]

            回頁(yè)首

            三:SOAPCORBACOM/DCOM的區(qū)別?

            在SOAP剛剛提出來的時(shí)候,許多人就提出了疑問:SOAP與CORBA和DCOM的區(qū)別何在?

            1. CORBA(Common Object Request Broker
            Architecture)公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)是由OMG組織制訂的一種標(biāo)準(zhǔn)的面向?qū)ο髴?yīng)用程序體系規(guī)范。由對(duì)象請(qǐng)求代理ORB、對(duì)象服務(wù)、公共設(shè)施、域接口和應(yīng)用接口這幾個(gè)部分組成。其核心部分是對(duì)象請(qǐng)求代理ORB(Object Request Broker)。ORB提供了一種機(jī)制,通過這種機(jī)制,對(duì)象可以透明的發(fā)出請(qǐng)求和接收響應(yīng)。分布的、可以互操作的對(duì)象可以利用ORB構(gòu)造可以互操作的應(yīng)用。ORB可看作是在對(duì)象之間建立客戶/服務(wù)關(guān)系的一種中間件。基于ORB,客戶可以透明的調(diào)用服務(wù)對(duì)象提供的方法,該服務(wù)對(duì)象可以與客戶運(yùn)行在同一臺(tái)機(jī)器上,也可以運(yùn)行在其他機(jī)器上通過網(wǎng)絡(luò)與客戶進(jìn)行交互。ORB截取客戶發(fā)送的請(qǐng)求,并負(fù)責(zé)在該軟件總線上找到實(shí)現(xiàn)該請(qǐng)求的服務(wù)對(duì)象,然后完成參數(shù)、方法調(diào)用,并返回最終結(jié)果。CORBA 1.1 由對(duì)象管理組織在 1991 年發(fā)布。定義了接口定義語(yǔ)言(IDL)和應(yīng)用編程接口(API),從而通過實(shí)現(xiàn)對(duì)象請(qǐng)求代理(ORB)來激活客戶/服務(wù)器的交互。CORBA 2.0 于 1994 年的 12 月發(fā)布定義了如何跨越不同的 ORB 提供者而進(jìn)行通訊。

            2. COM/DCOM(Component Object Model / Distributed Component Object
            Model )是微軟公司提出的分布式組件對(duì)象模型標(biāo)準(zhǔn),支持在局域網(wǎng)、廣域網(wǎng)甚至Internet上不同計(jì)算機(jī)的對(duì)象之間的通訊。DCOM基于COM的應(yīng)用程序、組件、工具等的基礎(chǔ)之上,處理網(wǎng)絡(luò)協(xié)議的低層次的細(xì)節(jié)問題,而不必關(guān)心太多的網(wǎng)絡(luò)協(xié)議細(xì)節(jié),從而使用戶能夠集中精力解決用戶所要求的問題。DCOM位于應(yīng)用程序的組件之間,將組件以不可見的方式膠合在一起組成具有完整功能的應(yīng)用程序。

            3. SOAP 與CORBA,DCOM/COM的比較。

            3.1 首先指出的是SOAP不會(huì)取代CORBA,COM/DCOM,三者的概念有所區(qū)別。COM/DCOM是個(gè)組件模型標(biāo)準(zhǔn),CORBA是分布式應(yīng)用的服務(wù)標(biāo)準(zhǔn)。CORBA和DCOM為分布式應(yīng)用程序建立服務(wù),服務(wù)對(duì)象來執(zhí)行客戶端調(diào)用的服務(wù)。而SOAP是基于XML和HTTP的分布式對(duì)象的通信協(xié)議,是COM/DCOM和CORBA對(duì)象進(jìn)行通訊的協(xié)議。實(shí)際上,利用SOAP的互操作性和CORBA強(qiáng)大的執(zhí)行能力,兩者可以很好的結(jié)合在一起。 OMG (Object Management Group responsible for the CORBA specification)正在關(guān)注這方面的發(fā)展。

            3.2. CORBA應(yīng)用程序和DCOM應(yīng)用程序不能實(shí)現(xiàn)互操作,兩者不能在一起協(xié)作。因?yàn)樵贠RPC(Object RPC)協(xié)議中,用ObjRef代表了一個(gè)正在運(yùn)行對(duì)象的引用;在CORBA/IIOP(Internet Inter-Orb Protocol)中,用交換可互操作對(duì)象引用IOR(Interoperable Object Reference)代表一個(gè)服務(wù)器的對(duì)象引用。不幸的是,IOR 與 ObjRef不能夠關(guān)聯(lián)起來。然而,使用SOAP可以實(shí)現(xiàn)在垂直應(yīng)用層面上CORBA ,DCOM技術(shù)的水平整合,能夠更好的集成CORBA,DCOM為一個(gè)整體。

            3.3 SOAP并沒有定義信息的語(yǔ)義,服務(wù)質(zhì)量,基于INTERNET的事務(wù)處理。而是采用 XML 進(jìn)行消息編碼,正確的處理需要服務(wù)器和客戶端本身來執(zhí)行,理解和執(zhí)行彼此使用的信息格式(ONE-TO-ONE,REQUEST/REPLY,BROADCAST,ETC),應(yīng)用程序本身在語(yǔ)義解析中扮演著十分重要的角色。而CORBA,DCOM表示了傳送信息的語(yǔ)義,對(duì)參數(shù)和返回值使用二進(jìn)制編碼。可對(duì)諸如參數(shù)名稱或類型的任何元信息都不編碼,但使中介很難處理消息。又因?yàn)槊總€(gè)系統(tǒng)使用不同的二進(jìn)制編碼,系統(tǒng)間的互操作的很難實(shí)現(xiàn)。

            3.4 盡管CORBA可以在不同的平臺(tái)上執(zhí)行,DCOM可以在微軟的各種平臺(tái)上運(yùn)行,但是基于CORBA和DCOM的解決方案必須依賴于單一的應(yīng)用程序。比如說,假如運(yùn)行的是DCOM服務(wù)器程序,所有的分布式的客戶端不得不運(yùn)行于微軟的操作平臺(tái)上。CORBA 雖然可以運(yùn)行于不同的平臺(tái),但CORBA的互操作性并沒有在更高層的服務(wù)上進(jìn)行擴(kuò)展,如安全性和事務(wù)處理,在這種情況下,許多提供的服務(wù)沒有得到很好的優(yōu)化。DCOM和CORBA適合于服務(wù)器--服務(wù)器間的通訊,但是對(duì)于客戶端--服務(wù)器的通訊十分脆弱,尤其當(dāng)客戶程序分布在INTERNET上更是如此。

            3.5 SOAP不象DCOM一樣試圖定義分布式系統(tǒng)的所有元素,SOAP沒有提供分布式類庫(kù),類型安全檢查,版本控制等等,SOAP比它處于一個(gè)更低的層次,有點(diǎn)類似于IIOP在CORBA的作用,DCOM卻提供了一些額外的協(xié)議功能,是IIOP 或者SOAP所不具備的。然而,許多. DCOM的額外功能只有在服務(wù)器??服務(wù)器間通信時(shí)才會(huì)用到,對(duì)于客戶端??服務(wù)器之間的通信則是多余的。

            clip_image003[2]
            clip_image005[2]

            clip_image006[2]

            clip_image007[2]

            回頁(yè)首

            四:SOAP=RPC+HTTP+XML

            SOAP簡(jiǎn)單的理解,就是這樣的一個(gè)開放協(xié)議SOAP=RPC+HTTP+XML:采用HTTP作為底層通訊協(xié)議;RPC作為一致性的調(diào)用途徑,XML作為數(shù)據(jù)傳送的格式,允許服務(wù)提供者和服務(wù)客戶經(jīng)過防火墻在INTERNET進(jìn)行通訊交互。RPC的描敘可能不大準(zhǔn)確,因?yàn)镾OAP一開始構(gòu)思就是要實(shí)現(xiàn)平臺(tái)與環(huán)境的無關(guān)性和獨(dú)立性,每一個(gè)通過網(wǎng)絡(luò)的遠(yuǎn)程調(diào)用都可以通過SOAP封裝起來,包括DCE(Distributed Computing Environment ) RPC CALLS,COM/DCOM CALLS, CORBA CALLS, JAVA CALLS,etc。

            SOAP 使用 HTTP 傳送 XML,盡管HTTP 不是有效率的通訊協(xié)議,而且 XML 還需要額外的文件解析(parse),兩者使得交易的速度大大低于其它方案。但是XML 是一個(gè)開放、健全、有語(yǔ)義的訊息機(jī)制,而 HTTP 是一個(gè)廣泛又能避免許多關(guān)于防火墻的問題,從而使SOAP得到了廣泛的應(yīng)用。但是如果效率對(duì)你來說很重要,那么你應(yīng)該多考慮其它的方式,而不要用 SOAP。

            為了更好的理解SOAP,HTTP,XML如何工作的,不妨先考慮一下COM/DCOM的運(yùn)行機(jī)制,DCOM處理網(wǎng)絡(luò)協(xié)議的低層次的細(xì)節(jié)問題,如PROXY/STUB間的通訊,生命周期的管理,對(duì)象的標(biāo)識(shí)。在客戶端與服務(wù)器端進(jìn)行交互的時(shí)候,DCOM采用NDR(Network Data Representation)作為數(shù)據(jù)表示,它是低層次的與平臺(tái)無關(guān)的數(shù)據(jù)表現(xiàn)形式。

            DCOM是有效的,靈活的,但也是很復(fù)雜的。而SOAP的一個(gè)主要優(yōu)點(diǎn)就在于它的簡(jiǎn)單性,SOAP使用HTTP作為網(wǎng)絡(luò)通訊協(xié)議,接受和傳送數(shù)據(jù)參數(shù)時(shí)采用XML作為數(shù)據(jù)格式,從而代替了DCOM中的NDR格式,SOAP和 DCOM執(zhí)行過程是類似的,如下圖,但是用XML取代 NDR作為編碼表現(xiàn)形式,提供了更高層次上的抽象,與平臺(tái)和環(huán)境無關(guān)。

            clip_image011

            客戶端發(fā)送請(qǐng)求時(shí),不管客戶端是什么平臺(tái)的,首先把請(qǐng)求轉(zhuǎn)換成XML格式,SOAP網(wǎng)關(guān)可自動(dòng)執(zhí)行這個(gè)轉(zhuǎn)換。為了保證傳送時(shí)參數(shù),方法名,返回值的唯一性,SOAP協(xié)議使用了一個(gè)私有標(biāo)記表,從而服務(wù)端的SOAP網(wǎng)關(guān)可以正確的解析,這有點(diǎn)類似于COM/DCOM

            中的樁(STUB)。轉(zhuǎn)化成XML格式后,SOAP終端名(遠(yuǎn)程調(diào)用方法名)及其他的一些協(xié)議標(biāo)識(shí)信息被封裝成HTTP請(qǐng)求,然后發(fā)送給服務(wù)器。如果應(yīng)用程序要求,服務(wù)器返回一個(gè)HTTP應(yīng)答信息給客戶端。與通常對(duì)HTML頁(yè)面的HTTP GET請(qǐng)求不同的是,此請(qǐng)求設(shè)置了一些HTTP HEADER,標(biāo)識(shí)著一個(gè)SOAP服務(wù)激發(fā),和HTTP包一起傳送。例如:對(duì)于一個(gè)詢問股票價(jià)格的應(yīng)用程序,服務(wù)器端具有組件提供某股票當(dāng)前的價(jià)格,組件是COM或CORBA在服務(wù)器上建立的。客戶端發(fā)送一個(gè)SOAP請(qǐng)求給服務(wù)器詢問股票價(jià)格。服務(wù)器依賴于服務(wù)器上的SOAP網(wǎng)關(guān),使用內(nèi)嵌的HTML對(duì)象調(diào)用合適的方法, 然后把得到的價(jià)格通過SOAP應(yīng)答傳給客戶端。

            clip_image003[3]
            clip_image005[3]

            clip_image006[3]

            clip_image007[3]

            回頁(yè)首

            五.SOAP 的前景

            W3C于2000年5月8日發(fā)表了Simple Object Access Protocol (SOAP) 1.1版本,具體規(guī)范發(fā)布在下列站點(diǎn)上( http://www.w3.org/TR/SOAP/)。又與今年7月9號(hào)推出了SOAP Version 1.2版本的建議草案,具體規(guī)范發(fā)布在下列站點(diǎn)上( http://www.w3.org/TR/soap12/)。編寫SOAP Version 1.1版本的工作小組的成員包括: DevelopMentor, International Business Machines Corporation, Lotus Development Corporation, Microsoft, UserLand Software

            SOAP的推出是令人興奮的。可以相信,隨著網(wǎng)絡(luò)服務(wù)的的不斷發(fā)展,它將極大的改變我們的思考模式和開發(fā)模式。現(xiàn)在,已有許多大公司著手支持SOAP的開發(fā),去年 IBM公司 和 Microsoft公司 都發(fā)行了實(shí)現(xiàn) SOAP 的第一批版本。 IBM 公司啟動(dòng)了Apache SOAP 項(xiàng)目計(jì)劃,微軟最近又推出了SOAPtoolkit2.0的正式版,主要包括如下的一些特征:SOAP的高層接口和低層接口,消息對(duì)象接口,完全支持WSDL 1.1標(biāo)準(zhǔn),支持用戶自定義類型映射,并且提供了豐富和完整的開發(fā)文檔以及應(yīng)用實(shí)例。而且,兩家公司正在互操作性方面努力研究。可以樂觀的估計(jì),不用多久,SOAP 互操作性的時(shí)代就將來臨。

            SOAP相關(guān)的一些標(biāo)準(zhǔn):

            1. HTTP 1.0 or greater( http://www.w3.org/Protocols/HTTP/ietf-http-ext

            2. the core W3C XML recommendation( http://www.w3.org/TR/1998/REC-xml-19980210

            3. W3C XML namespace recommendation( http://www.w3.org/TR/REC-xml-names).

            4. XML Schema( http://www.w3.org/TR/xmlschema-1/

             

            SOAP是一個(gè)協(xié)議,與編程語(yǔ)言無關(guān)。實(shí)際上,許多語(yǔ)言已經(jīng)開始支持SOAP,如:java,c/c++,vb,c#,perl,php.下面列出了在Java/C++/Perl/ADA/Python環(huán)境下SOAP的執(zhí)行工具:

            posted on 2008-05-27 16:32 肥仔 閱讀(505) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

            成人综合久久精品色婷婷| 秋霞久久国产精品电影院| 久久国产精品成人免费| 久久精品国产2020| 国产69精品久久久久观看软件 | 久久免费观看视频| 日韩欧美亚洲综合久久影院d3| 性欧美丰满熟妇XXXX性久久久| 久久久久久久精品成人热色戒| 综合久久精品色| 性做久久久久久久久老女人| 久久久久国产| 奇米影视7777久久精品人人爽| 亚洲一级Av无码毛片久久精品| 亚洲AⅤ优女AV综合久久久| 一本久道久久综合狠狠躁AV| 亚洲国产香蕉人人爽成AV片久久| 久久久精品久久久久影院| 亚洲综合精品香蕉久久网| jizzjizz国产精品久久| 久久九九久精品国产免费直播| 亚洲综合久久夜AV | 久久不见久久见免费视频7| 精品久久久久久久久中文字幕| 久久精品国产精品亜洲毛片| 久久天天躁狠狠躁夜夜不卡| 久久久一本精品99久久精品88| 精品久久无码中文字幕| 国内精品欧美久久精品| 伊人久久一区二区三区无码| 色综合久久无码五十路人妻 | 久久久久久国产精品免费无码| 久久er国产精品免费观看2| 久久国产三级无码一区二区| 99久久夜色精品国产网站| 久久婷婷国产麻豆91天堂| 日日狠狠久久偷偷色综合0| 成人综合伊人五月婷久久| 欧美久久一级内射wwwwww.| 色欲av伊人久久大香线蕉影院| 国产99久久久久久免费看|