青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

Web 服務互操作性和 SOAP

摘要:本文概要說明了在通過 SOAP 進行 RPC 調用時當前實際存在的互操作性問題,同時討論了導致互操作性問題的三個

因素:HTTP 問題、XML 問題和 SOAP 間斷性。

簡介
       當前有多種創建應用程序的平臺。但每種平臺都習慣于使用自身的協議(本質上通常是二進制代碼)來實現機器間的集
成。因此,跨平臺的應用程序在數據共享方面的能力相當有限。認識到這些限制后,人們一直在致力于建立有關數據格式
和數據交換方面的標準,藉此以實現“不論服務采用何種軟件,使用何種硬件,都能夠跨越這一傳統的界限以 Web 的形式
無縫地將它們集成在一起”這一遠景目標。目前,這一目標已迅速發展成為一種新的計算范例。
該目標的核心是互操作性概念,即不同系統能夠無縫地進行通信和共享數據。這也是 Web 服務追求的目標。Web 服務是一
種可以用標準 Internet 協議來訪問的可編程應用邏輯;從另一個角度來說,Web 服務是有關機器間和應用程序間透明通
信的、借助于 Web 的標準的具體實現。


       目前,實現機器間消息傳遞的 Web 服務技術多種多樣,例如簡單對象訪問協議 (Simple Object Access Protocol,
SOAP)、Web 服務說明語言 (Web Service Description Language, WSDL) 和超文本傳輸協議 (HyperText Transfer
Protocol, HTTP)。這些消息的復雜程度各不相同,既有簡單的方法調用,也有復雜的訂單提交。在 Web 服務的功能中,
最一般但又較高級的功能是實現 RPC(遠程過程調用)形式的通信(通過 RPC,一臺計算機上的程序可以執行另一臺計算
機的程序。)本文從實用的角度介紹了在使用 SOAP 進行 RPC 形式的通信時當前常見的互操作性問題,以后還將撰文探討
有關通過 SOAP、WSDL 以及其它協議傳送消息的問題。


什么是 SOAP?
       SOAP 是 Simple Object Access Protocol(簡單對象訪問協議)的縮寫。該協議的當前版本為 1.1,其具體規范發布在下列站點上: www.w3.org/tr/soap(英文)。SOAP 以 XML 為基礎,說明了機器間通信的消息傳送格式。此外,它還包括幾個可選部分,用于描述方法調用 (RPC) 和詳細說明通過 HTTP 發送 SOAP 消息的方法。(有關 SOAP 和 Web 服務的詳細
背景知識,請參見 Web 服務的平臺(英文)。)


       以下是一個典型的 SOAP 請求(包括 HTTP 標頭),它請求名為 EchoString 的 RPC 方法調用,并將一個字符串當作參
數:
POST /test/simple.asmx HTTP/1.1
Host: 131.107.72.13
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://soapinterop.org/echoString"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:echoString>
<inputString>string</inputString>
</tns:echoString>
</soap:Body>
</soap:Envelope>


       如上所示,該請求將方法名編碼為 XML : <tns:echoString>,將字符串參數編碼為 <inputString>。它所代表的 C# 方法
類似于以下內容:
public String echoString(String inputString);

       以下是來自服務器的響應:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:echoStringResponse>
<Return>string</Return>
</tns:echoStringResponse>
</soap:Body>
</soap:Envelope>


       有關序列化字符串數據類型以及方法調用形狀的規則在 SOAP 1.1 的第 5 節和第 7 節 (www.w3.org/tr/soap(英文))
中定義。


常見的互操作性問題
       當執行 RPC 形式的 SOAP 消息傳送時,可能會因為多種原因導致互操作性問題。有趣的是,許多互操作性問題都不是
SOAP 本身的問題,而是基本傳輸引擎或 XML 引擎所導致的互操作性問題。也就是說,互操作性問題可能是:HTTP 問題XML 問題,或SOAP 間斷性 還應指出的是,這些規范的制定者也有考慮不周的地方,他們有時可能會模棱兩可,這樣就很難確定唯一正確的行為。傳輸問題XML Web 服務消息的核心在于發送消息的傳輸機制。當通過 SOAP 進行 RPC 調用時,HTTP 是目前最為常用的傳輸機制。


       這意味著 SOAP 堆棧之間必然存在 HTTP 互操作性問題。HTTP 互操作性問題的一個簡單示例就是 SOAPAction 的使用。SOAPAction 是一種 HTTP 標頭,它必須存在于通過 HTTP 傳送的 SOAP 消息中。此標頭可以賦以多個不同的值,例如:
SOAPAction: "http://tempuri.org/"
SOAPAction 的值雖然可以完全為空,但必須用引號引起來:
SOAPAction:
       問題就在這兒:如果服務器要求空值 SOAPAction,有些客戶端將無法滿足這一要求,因為并非所有 HTTP 客戶端 API 都具有設置空 HTTP 標頭值的方法。這種問題可能存在兩種解決方法:修正客戶端 API 和/或確保服務器不要求空值SOAPAction。通常,避免這類問題的唯一方法是確保所使用的 HTTP API 穩定強壯,并且已知可以在 Web 上工作。即便如
此,這類問題仍可能出現;要徹底消除它們,測試可能是唯一的方法。


XML 問題
       這是可能存在的第二類互操作性問題,它們涉及到 XML 語法分析和 XSD 架構處理。SOAP 使用 XML 和 XML 架構作為核心,因此這兩者的互操作性是 SOAP 互操作性的基礎。


       有一個有趣的互操作性問題示例,它同時涉及到 XML 語法分析和 HTTP 傳輸,并且與字節順序標記 (Byte Order Mark,
BOM) 相關。當通過 HTTP 發送數據時,您可以在 Content-Type 標頭中指定數據的編碼形式,如 UTF-16 或 UTF-8。也可
以通過插入一組用來指定編碼形式的字節來表示某一段 XML 的編碼形式。當發送 UTF-16 時,即使 Content-Type 標頭中
指定了編碼形式,也仍需要 BOM 來指示是 big-endian 還是 little-endian;但對于 UTF-8,BOM 則是不必要的。例如:


HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
n++<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:echoStringResponse>
<Return>string</Return>
</tns:echoStringResponse>
</soap:Body>
</soap:Envelope>


       示例中的前三個字符是字節順序標記的十六進制代碼,用于指示編碼形式為 UTF-8,不過,您可以看到,Content-Type 也指出了這點。即使不需要,但是有些實現方案仍會為 UTF-8 發送 BOM。而其它實現方案有了 BOM 反而無法處理 XML。為了解決這一問題,應避免在不需要的時候發送 BOM,并且應正確處理 BOM。由于在處理 UTF-16 消息時需要 BOM,所以在這種情況下務必要正確處理 BOM。雖然沒有任何單一的方法可以提早解決這些問題,不過當發現問題時,最好的方法就是
參考描述標準的具體規范(通常在 W3C 上可以找到),然后應用這些規范來評判遇到的問題。


SOAP 問題
       現在,我們將討論問題的核心:SOAP 問題本身。如上所述,SOAP 的互操作性首先要求解決傳輸(通常是 HTTP)和 XML 問題。解決這兩個問題之后,再來解決 SOAP 問題。SOAP 本身的問題相對簡單。它要求將消息裝入信封,并將消息的實際內容放在正文元素中。SOAP 使標頭等元素成為可選項,對正文元素中可包含的內容允許存在一定的靈活性。以下是一個簡單的 SOAP 消息示例,大多數堆棧與它進行互操作時不會存在問題:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body >
<foo />
</soap:Body>
</soap:Envelope>


       雖然這個示例不是十分有趣,但是 SOAP 還提供一種對常見數據類型進行編碼的方法(請參見 SOAP 規范的第 5 節),它進一步說明了如何對 RPC 方法調用進行編碼。您可能已注意到,在前面的示例中,方法名是正文的子標記,參數則是方法名的子標記。即使不用這么麻煩,您也可以找到許多有趣的互操作性問題。例如,SOAP 規范規定,如果您收到mustUnderstand 屬性設置為“1”的 SOAP 標頭,就必須理解它,否則將出錯。但許多實現方案并沒有做到這點。以下是 mustUnderstand 標頭的
示例:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
n++<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<Foo SOAP-ENV:mustUnderstand="1">
Hello!
</Foo>
</SOAP-ENV:Header>
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:echoStringResponse>
<Return>string</Return>
</tns:echoStringResponse>
</soap:Body>
</soap:Envelope>


       這個示例是通過 SOAP 互操作性測試發現的眾多問題之一。有關現已發現的互操作性問題的更多示例,請參見
http://groups.yahoo.com/group/soapbuilders(英文)中的檔案。總之,為了確保 SOAP 在實現 RPC 形式通信時的互操
作性,全世界的 SOAP 構建者已經做了很多工作,并取得了豐碩的成果。從 5 月 8 日到 5 月 10 日,在拉斯維加斯將舉
行 Networld+Interop 會議,到時,SOAP 團體的許多成員將在會上將充分展示這方面的成果。如果您在使用 SOAP 堆棧或
對其感興趣,歡迎惠顧這次演示會。


       另外,有關 XML Web 服務的許多討論和測試已經在 http://groups.yahoo.com/group/soapbuilders(英文)、
http://www.mssoapinterop.org/(英文)和 http://www.xmethods.net/ilab/(英文)等站點上進行。這些站點包含到許
多互操作性測試端點的鏈接。構建 SOAP 堆棧的所有人員都應該閱讀這些檔案并參與互操作性測試。
后續話題


       本文簡要概括了在 XML Web 服務領域中發現的一些早期互操作性問題。不過,這方面的討論并不會就此停止。除了通過 HTTP 進行 RPC 調用之外,SOAP 還有許多更為有趣的情況需要討論。其中包括“document”形式的消息傳遞、基于 SMTP 和其它傳輸機制的 SOAP、WSDL 以及各種 SOAP 標頭測試 - 所有這些都值得在今后的文章中進行討論。

posted on 2008-05-28 15:31 肥仔 閱讀(280) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            伊人成年综合电影网| 美女主播视频一区| 国产精品成人aaaaa网站| 亚洲欧美日韩精品久久奇米色影视| 午夜激情综合网| 欧美激情亚洲国产| 日韩视频永久免费| 久久精品免费电影| 亚洲国产欧美日韩另类综合| 嫩草影视亚洲| 亚洲天堂av电影| 久久中文字幕一区| 一区二区日韩免费看| 国产女同一区二区| 久久婷婷国产综合精品青草| 亚洲啪啪91| 久久本道综合色狠狠五月| 免费不卡视频| 亚洲一区二区三区成人在线视频精品| 国产一区二区黄色| 欧美日韩福利在线观看| 亚洲免费视频成人| 亚洲国产精品一区二区第四页av| 午夜精品久久| 亚洲人成艺术| 国产综合久久久久影院| 国产精品成人一区| 韩国一区二区在线观看| 国产精品亚洲综合色区韩国| 欧美chengren| 国产乱码精品一区二区三区忘忧草| 欧美成人精品在线视频| 久久久久成人精品| 亚洲免费网站| 欧美成黄导航| 国产欧美日韩视频一区二区| 在线电影国产精品| 亚洲在线视频| 午夜精品三级视频福利| 欧美/亚洲一区| 男女激情视频一区| 亚洲一区二区四区| 中国亚洲黄色| 在线视频日本亚洲性| 久久国产精彩视频| 国产精品高潮呻吟久久av黑人| 影音先锋在线一区| 欧美一区在线视频| 久久精品免费观看| av成人国产| 亚洲午夜一二三区视频| 欧美777四色影视在线| 国产一区观看| 羞羞色国产精品| 久久久噜久噜久久综合| 久久久久久久精| 老色鬼精品视频在线观看播放| 久久亚洲欧美| 亚洲欧美视频在线| 在线综合亚洲欧美在线视频| 欧美成人一区二区三区片免费| 国产一区二区三区网站| 亚洲欧美日韩在线不卡| 亚洲私人影院在线观看| 欧美午夜精品久久久| 日韩一级精品视频在线观看| 亚洲蜜桃精久久久久久久| 亚洲天堂av高清| 欧美综合第一页| 欧美国产一区二区| 亚洲人妖在线| 欧美精品九九| 999在线观看精品免费不卡网站| 女人香蕉久久**毛片精品| 久久综合色天天久久综合图片| 欧美日韩蜜桃| 黄色一区三区| 一本不卡影院| 久久九九热免费视频| 欧美成人福利视频| 久久综合网色—综合色88| 亚洲电影免费| 午夜精品短视频| 亚洲欧美另类中文字幕| 黄色亚洲在线| 亚洲日本欧美日韩高观看| 国产精品va| 久久亚洲综合色| 欧美日本免费| 最新国产拍偷乱拍精品 | 伊人狠狠色j香婷婷综合| 欧美国产日本在线| 欧美先锋影音| 女人天堂亚洲aⅴ在线观看| 欧美日韩国产精品| 久久久久高清| 欧美日韩麻豆| 蜜桃久久精品乱码一区二区| 欧美日韩精品免费观看视一区二区 | 欧美资源在线观看| 欧美99久久| 久久av一区| 欧美日本在线观看| 久久伊人精品天天| 国产精品二区在线观看| 欧美jizzhd精品欧美巨大免费| 欧美日韩三区| 欧美电影资源| 欧美大片免费久久精品三p| 亚洲一区二区三区国产| 欧美中文在线免费| 国产毛片一区二区| 亚洲久久成人| 亚洲国产婷婷香蕉久久久久久99| 欧美夫妇交换俱乐部在线观看| 国模吧视频一区| 亚洲精品国产精品乱码不99按摩| 国产欧美一区二区三区国产幕精品| 男人插女人欧美| 国产欧美日韩精品一区| 99re6这里只有精品视频在线观看| 影视先锋久久| 亚洲欧美精品中文字幕在线| av成人免费| 欧美成人第一页| 欧美不卡一区| 激情成人av| 亚洲欧美日韩精品久久奇米色影视| 亚洲精选视频在线| 免费欧美高清视频| 欧美14一18处毛片| 国产午夜亚洲精品不卡| 久久久之久亚州精品露出| 国产精品久久中文| 久久在线视频在线| 国产一级揄自揄精品视频| 亚洲免费视频一区二区| 午夜一区二区三区在线观看| 欧美午夜精品久久久久久久| 99视频国产精品免费观看| 亚洲视频综合在线| 国产精品久久久久久户外露出| 99re6热只有精品免费观看| 在线视频日本亚洲性| 欧美日韩视频不卡| 亚洲一区二区伦理| 久久精品一二三区| 伊人精品成人久久综合软件| 久久精品在线播放| 亚洲性感美女99在线| 欧美视频亚洲视频| 另类欧美日韩国产在线| 极品少妇一区二区三区精品视频| 久久综合网色—综合色88| 欧美国产日韩精品| 亚洲视频在线一区| 国产午夜精品久久久久久免费视| 欧美一区三区二区在线观看| 99国产精品久久久久久久成人热| 欧美日本三区| 欧美一区二区播放| 亚洲国产精品一区二区尤物区| 亚洲私人影院| 黄色国产精品| 欧美日韩国产成人精品| 亚洲欧美伊人| 欧美成人一区二区三区片免费| 亚洲精品久久久蜜桃| 久久se精品一区精品二区| 欧美成人一区二区| 亚洲欧美bt| 在线日韩视频| 欧美性久久久| 久久久一二三| a91a精品视频在线观看| 欧美亚洲一区二区在线| 久久先锋影音av| 亚洲欧洲一区| 亚洲图片欧美日产| 一区二区在线看| 国产精品国产三级欧美二区| 亚洲一区二区三区免费观看| 欧美jizz19hd性欧美| 亚洲一区二区三区中文字幕在线| 亚洲视频专区在线| 欧美激情欧美激情在线五月| 亚洲精品久久在线| 国语自产精品视频在线看8查询8| 欧美激情一区二区三区在线| 在线视频一区观看| 91久久夜色精品国产九色| 亚洲一本大道在线| 最新精品在线| 欧美激情麻豆| 久久尤物视频| 久久国内精品视频| 亚洲精品久久久久久一区二区 | 欧美精品久久一区二区| 欧美制服第一页| 日韩视频中文字幕|