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

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>
            亚洲免费一级电影| 久久er精品视频| 最新国产成人av网站网址麻豆| 国产精品毛片| 国产精品一区二区三区观看| 国产精品入口麻豆原神| 国产精品自拍网站| 国内成+人亚洲| 伊人久久大香线| 一区二区日韩精品| 亚洲免费网站| 久久国产精品黑丝| 久久视频这里只有精品| 男女精品视频| 欧美性猛交xxxx乱大交蜜桃| 国产农村妇女精品一二区| 国产综合激情| 亚洲日本中文| 欧美在线视频观看| 亚洲高清一区二| 亚洲美女视频网| 欧美一区二区三区男人的天堂| 久久综合给合久久狠狠狠97色69| 欧美国产日韩二区| 国产精品网站在线播放| 亚洲电影第三页| 亚洲综合色丁香婷婷六月图片| 久久影院亚洲| 一本大道久久精品懂色aⅴ| 一区二区三区国产精华| 久久国产精品久久w女人spa| 欧美日韩另类综合| 激情综合电影网| 午夜精品视频网站| 亚洲国产欧美国产综合一区 | 欧美.www| av不卡在线看| 免费日韩一区二区| 国产亚洲综合在线| 亚洲尤物视频网| 亚洲福利视频专区| 久久久天天操| 国产综合色产在线精品| 亚洲深夜福利视频| 欧美国产综合| 欧美一区二区三区在线免费观看| 欧美乱妇高清无乱码| 激情综合网址| 久久精品官网| 亚洲影院色无极综合| 欧美亚日韩国产aⅴ精品中极品| 亚洲国产高清自拍| 久久一区亚洲| 久久福利一区| 依依成人综合视频| 久久精品综合| 性视频1819p久久| 国产欧美精品日韩区二区麻豆天美| 亚洲婷婷在线| 亚洲一区二区三区在线| 国产精品久久久久久久久免费| 一区二区三区欧美视频| 亚洲国产精品欧美一二99| 老**午夜毛片一区二区三区| 经典三级久久| 欧美好骚综合网| 亚洲福利视频专区| 免费中文字幕日韩欧美| 在线免费观看日韩欧美| 你懂的网址国产 欧美| 久久人人97超碰国产公开结果| 国产在线播放一区二区三区| 欧美专区福利在线| 久久se精品一区二区| 永久555www成人免费| 欧美国产日韩免费| 欧美.日韩.国产.一区.二区| 99国产一区| 亚洲一区二区三区四区在线观看 | 亚洲欧美成人一区二区在线电影 | 久久婷婷亚洲| 久久久亚洲成人| 亚洲日本va午夜在线影院| 91久久久在线| 国产精品久久久久久久9999 | 国产精品超碰97尤物18| 亚洲欧美国产另类| 久久av一区二区| 最新精品在线| 一区二区三区免费在线观看| 国产农村妇女毛片精品久久麻豆| 久久9热精品视频| 久久中文精品| 亚洲永久免费精品| 久久亚洲私人国产精品va| 一区二区高清在线| 欧美在线观看视频一区二区三区| 亚洲电影观看| 亚洲一区二区三区四区五区午夜 | 午夜久久久久| 亚洲激情国产| 亚洲欧美另类在线观看| 亚洲黄色影片| 久久se精品一区二区| 亚洲视频axxx| 久久久国产一区二区三区| 日韩视频在线观看免费| 亚洲欧美日韩中文播放| 日韩视频一区二区三区在线播放免费观看 | 欧美.日韩.国产.一区.二区| 亚洲无人区一区| 久久久久久婷| 欧美一区二区在线观看| 亚洲成人在线网站| 国产欧美一区视频| 在线性视频日韩欧美| 亚洲福利视频专区| 亚洲小说欧美另类社区| 亚洲精选一区| 免费人成网站在线观看欧美高清| 欧美在线高清| 欧美日韩精品一区二区天天拍小说| 久久久久久久网| 国产欧美精品国产国产专区| 一区二区精品| 在线综合视频| 欧美日韩国产精品| 亚洲精品123区| 亚洲国产毛片完整版| 久久精品一二三| 久久人人九九| 国模套图日韩精品一区二区| 亚洲男女自偷自拍| 亚洲资源在线观看| 欧美婷婷久久| 一区二区日韩免费看| 在线亚洲免费| 欧美日韩国产区| 亚洲看片免费| 亚洲性夜色噜噜噜7777| 国产精品videosex极品| 亚洲视频免费| 久久爱www久久做| 国产主播一区二区三区四区| 欧美一区二区日韩| 久久综合色综合88| 亚洲日韩欧美视频| 欧美日韩免费在线| 中文在线资源观看视频网站免费不卡| 中国成人亚色综合网站| 国产精品激情av在线播放| 亚洲自拍偷拍一区| 久久久久久综合| 亚洲人成人一区二区三区| 欧美激情 亚洲a∨综合| 日韩亚洲精品电影| 欧美一区二区三区在| 国精产品99永久一区一区| 久久综合久久综合这里只有精品| 欧美激情一区二区久久久| 一区二区三区欧美| 国产亚洲高清视频| 久久久久久久精| 亚洲精品日日夜夜| 午夜日韩在线| 狠狠干综合网| 欧美人与禽性xxxxx杂性| 亚洲视频一区二区| 麻豆91精品91久久久的内涵| 亚洲六月丁香色婷婷综合久久| 国产精品大片免费观看| 久久精品中文字幕一区| 亚洲免费观看| 久久久久久一区二区| 99re6这里只有精品视频在线观看| 国产精品s色| 噜噜爱69成人精品| 亚洲一区www| 欧美激情小视频| 欧美综合国产精品久久丁香| 99精品视频免费在线观看| 国产专区欧美精品| 欧美三级网址| 免费观看成人www动漫视频| 亚洲无吗在线| 亚洲国产精品第一区二区| 国产精品另类一区| 欧美成人免费在线| 久久se精品一区精品二区| 99在线精品视频| 欧美高清视频| 久久久91精品国产一区二区三区| 日韩视频在线免费观看| 精品9999| 国产一区自拍视频| 国产精品亚洲第一区在线暖暖韩国| 欧美阿v一级看视频| 久久精品一区| 欧美一区国产一区| 亚洲字幕在线观看|