XML、WebService和WSAD實現
2004-11-2???? 星期二????? 晴
XML、WebService和WSAD實現
1.? 動機
答:1) 今天,萬維網的主要用途是交互式的訪問文檔和應用程序;
??? 2) 大多數時候,這些訪問是通過瀏覽器、音頻播放器或其它交互式的前-后端系統;
??? 3) W3C: “假如萬維網支持應用程序間的交互,Web在能力及應用范圍上能得到引人注目的增長”
2.? 技術基礎
答:Web services = XML + HTTP
??? . XML:通用數據描述語言;
??? . HTTP:被瀏覽器和Web servers廣泛支持地一種傳輸協議;
?
3.? 什么是Web Service?
答:1) Web service最近成為IT業一個被過度傳播的術語;
??? 2) Web service是自我包含、自我描述、模塊化的程序,它能發布、定位以及通過Web調用;
??? 3) 一個Web service的例子是提供股價或處理信用卡交易。一旦一個web service被布署,其它應用程序即可發現和調用這個服務。
??? 4) 還有什么產業能使用web service?
4.? web service理念
答:Web service基于這樣的理念:構建應用程序的時候通過發現以及調用網絡上現在的應用去實現某現功能;
5.? 自我包含
答:1) 在客戶端,無須附加的軟件;
??? 2) 只須XML和HTTP協議客戶端支持即可開始;
??? 3) 在服務器端,僅需要一個Web服務器和servlet引擎;
??? 4) 對于Web service使一個既存的系統重新可用而無須寫一行代碼是可行的;
???
6.? 自我描述
答:1) 無論是客戶端還是服務器端除了格式和請求內容以及響應信息外無須關注任何事情;
??? 2) 信息格式定義通過消息傳輸;
??? 3) 無額外的無素貯藏庫或代碼產生工具需要;
7.? Web services是模塊化的
答:1) Web services標準框架提供了一個組件模型;
??? 2) Web services是一種技術,用于部署和提供Web上的商業功能訪問;
??? 3) J2EE、CORBA和其它標準是實現這些Web services的技術;
8.? 發布、定位以及通過Web調用
答:所需的一些額外的標準:
??? . SOAP:Simple Object Access Protocol、也可理解為 service-oriented architecture protocol,基于RPC和通訊協議的XML。
??? . WSDL:Web Service Description Language, 一個描述性的接口和協議綁定語言。
??? . UDDI:Universal Description, Discovery,and Integration,一種注冊機制,用于查找Web service描述。
9.? 語言無關和互操作性
答:1) 客戶端和服務器端能在不同環境下被實現;
??? 2) 既存的環境為了實現Web service無須進行改動;
??? 3) 但是在現在,我們假設Java是Web service客戶端和服務器端的實現語言;
10. 基于開放的標準
答:1) XML和HTTP是Web services的技術基礎;
??? 2) 很大部分Web service技術使用開源項目構建;
??? 3) 因此,供應商無關以及互操作性是這時的現實目標。
11. Web services是動態的
答:通過使用Web Services,動態電子商務變得很現實。因為,使用UDDI和WSDL,Web service描述和發現可以自動進行。
12. Web services是組合的
答:簡單的Web services能組合成更復雜的Web services,無論是使用工作流技術或是調用更底層的Web services。
13. 基于成熟技術構建
答:1) XML + HTML
??? 2) 和其它分布式計算框架相比,有很多相同點也有很多基礎性的不同。例如,傳輸協議基于文本而非二進制。
14. 因此...新的機會到來了
答:1) 在這個時刻,Web service受到大量關注,產生了許多工作機會;
??? 2) 你應該理解并迅速掌握這項技術便能把握住這些機會。
15. Web Service角色
答:1) service provider創建web service并發布它的接口和訪問信息到服務登記處;
??? 2) service broker(也稱為service registry)有責任使Web service接口和實現訪問信息對任何潛在的service requestor可用;
??? 3) service requestor為了使用Web service,使用各種查找操作在broker登記處定義入口以及綁定到service provider。
16. Web services架構體系
答:1) Web services通過service provider部署到Web上;
??? 2) Web service提供的功能使用WSDL描述;
??? 3) service broker幫助service provider和service requestor能互相找到對方;
??? 4) service requestor使用UDDI API從service broker處尋找它所需要的服務;
??? 5) 當service broker返回查找的結果,service requestor可使用這些結果綁定到一個特定服務;
??? 6) Web service描述由service provider創建和發布;
??? 7) Web service由service broker組織和查找;
???
Web service由service requester定位和調用;
17. Web services組件
答:前面顯示了Web service中用到的三種主要的組件:
??? 1) Service provider: 提供服務并使這些服務可用;
??? 2) Service broker: 為service provider和service requestor配對;
??? 3) Service requester: 使用service broker查找Web service,然后調用這些服務去創建應用程序;
18. Service provider子角色
答:1) WSDL規范由二部分組成:服務接口和服務實現;
??? 2) 服務接口提供者和服務實現者是service provider的子角色;
??? 3) 二個角色可以,但非必須被同一個事務承擔;
19. Web service操作
答:1) 發布/取消發布
?????? . 發布服務至登記處;
?????? . 移除這些登記的條款
?????? service provider聯系service broker發布/取消服務
??? 2) 查找操作由service requestor和service broker共同完成: service requestor描述他們查找的服務種類; service broker遞交最匹配的請求結果。
??? 3) 綁定發生在service requestor和service provider間,他們會協議好以便requestor能訪問和調用service provider提供的服務。
20. WSDL——Web服務描述語言
答:1) WSDL是以XML為基礎的接口定義語言,它提供了一種分類和描述Web service的方式;
??? 2) WSDL定義了:
?????? . Web service的接口,包括:
???????? a. 操作方式(單向、通知、請求-響應);
???????? b. 定義了Web service的消息;
???????? c. 數據類型(XML schema);
?????? . Web service訪問協議(SOAP over HTTP);
?????? . Web service聯系的終點(Web service URL);
?????? . 符合要求的服務端應用程序必須支持這些接口,客戶端用戶能從這份文檔中得知如何訪問一個服務。
21. UDDI——統一查找、描述以及綜合
答:1) UDDI提供了一種找到可用Web service的方式;
??? 2) UDDI提供了一個全球的、平臺無關的、開放式框架,使得商業應用能:
?????? . 相互查找;
?????? . 定義它們通過Web交互的方式;
?????? . 在一個全球注冊場所共享信息;
??? 3) 在Web上存在三種開放的UDDI注冊場所, 由IBM、Microsoft和HP發起;
??? 4) 注冊是免費的,在任一注冊處注冊的內容被其它注冊處所復制;
??? 5) 在UDDI商業注冊處提供的信息由三部分組成:
?????? . “白皮書”:包括地址、聯系以及標識符;
?????? . “黃皮書”:包括基于標準分類學的各產業分類;
?????? . “綠皮書”:所提供的service的技術信息;
??? 6) Web service provider和requester使用SOAP API和UDDI注冊處交流;
22. SOAP——簡單對象訪問協議(Simple Object Access Protocol)
答:1) SOAP是一個網絡中立的、輕量級的協議,用于交換兩個遠端應用程序的信息;
??? 2) SOAP是一個基于XML的協議,由三部分組成:
?????? . 一個定義了一個框架的封套(envelope),這個框架描述了信息的內容以及如何去處理它。
?????? . 一系列的編碼規則,用于表現系統定義的數據類型實例;
?????? . 一個協定,用于表現遠端處理調用和響應
23. SOAP范例
答:1) 這個例子是一個SOAP請求以及響應的范例;
??? 2) 這些例子顯示了一個客戶端查詢IBM股價的SOAP請求以及響應;
24. SOAP請求
答:POST /soapsamples/servlet/rpcrouter HTTP/1.0
??? Host: localhost
??? Content-Type: text/xml:charset=utf-8
??? Content-Length: 460
??? SOAPAction: ""
??? <?xml version='1.0' encoding='UTF-8'?>
??? <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
??????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??????? xmlns:xsd="http://www.w3.org/2001/XMLSchema">
??????? <SOAP-ENV:Body>
??????????? <nsl:getQuote xmlns:nsl="urn:xmltoday-delayed-quotes"
???????????????? SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
???????????????? <symbol xsi:type="xsd:string">IBM</symbol>
??????????? </nsl:getQuote>
??????? </SOAP-ENV:Body>
??? </SOAP-ENV:Envelope>
??? 1) SOAP請求表明getQuote方法從以下地址調用:http://localhost/soapsamples/servlet/rpcrouter
??? 2) SOAP協議并沒有指定如何處理請求,服務提供者可運行一個CGI腳本,調用servlet或執行其它產生對應響應的處理;
??? 3) 響應包含于一個XML文檔格式的表單內,該表單包含了處理的結果,在我們這個范例中是IBM的股價;
25. SOAP響應
答:HTTP/1.1 200 OK
??? Server: IBM HTTP SERVER/1.3.19 Apache/1.3.20 (Win32)
??? Content-Length: 479
??? Connection: close
??? Content-Type: text/xml; charset = utf-8
??? Content-Language: en
??? <?xml version='1.0' encoding='UTF-8'?>
??? <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
??????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??????? xmlns:xsd="http://www.w3.org/2001/XMLSchema">
??????? <SOAP-ENV:Body>
??????????? <nsl:getQuoteResponse xmlns:nsl="urn:xmltoday-delayed-quotes"
?????????????? SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
?????????????? <return xsi:type="xsd:float">108.53</return>
??????????? </nsl:getQuoteResponse>
??????? </SOAP-ENV:Body>
??? </SOAP-ENV:Envelope>
??? 1) 結果所位于的元素名稱在請求方法名后加后綴“Response”,例請求方法名為:getQuote, 響應方法名為:getQuoteResponse。
26. Http響應狀態
答:1) 1XX——information
??? 2) 2XX——success
??? 3) 3XX——redirection
??? 4) 4XX——client error
??? 5) 5XX——sever error
27. Web service的好處
答:. 專注于核心商業邏輯,使用Web service應用于非核心商業邏輯從而以一個很低的成本快速發布新的IT解決方案;
??? . 通過使用Web service封裝以前軟件系統到當前系統中可保護既有投資;
??? . 以最少的費用將用戶和伙伴的商業系統結合到一塊;
28. 好處——促進協同工作能力
答:1) service provider和service requester之間的溝通設計為平臺和語言無關;
??? 2) 這個交互需要一份WSDL文檔,這份文檔定義了接口以及描述了相應的服務,連同網絡協議在一起(通常是HTTP);
29. 好處——
答:1) 當service requester使用service broker尋找service provider,這種發現是自動發生的。
??? 2) 一旦requester和provider相互找到,provider的WSDL文檔用于將requester和服務綁定到一塊。
??? 3) 這意味著requester、provider和broker一塊創建的系統是自我設置、自我適應以及強健的。
30. 好處——通過封裝降低了復雜性
答:1) service requester和provider只關心必要的接口;
??? 2) service requester并不關心service provider如何實現服務;
??? 3) 這些細節都在requester和provider方封裝好,這種封裝對于降低復雜性非常重要;
31. 好處——給遺留系統以新的生機
答:1) 對于一個遺留系統、產生一個SOAP包裝,然后產生一個WSDL文檔將應用程序作為一個web service;
??? 2) 這意味著遺留系統能用于新的方面;
??? 3) 此外,與遺留系統相聯系的基礎設施能封裝成一系列的服務;
2004-11-3???? 星期三????? 晴
SOAP
1.? 預覽
答:1) SOAP是分布式環境下交換結構化信息的規范;
??? 2) SOAP代表了SOA中三種主要行動者(service provider、service requestor、service broker)間主要的溝通方式;
??? 3) 它的設計目標是應該簡單以及可擴展;
??? 4) 由微軟最先提出;
??? 5) 當前標準版本為1.1;
2.? SOAP
答:1) SOAP是一個基于XML的協議,由三部分組成:
?????? . envelope: 定義了一個框架,該框架用于描述信息內容以及處理說明;
?????? . 一系列的編碼規則:用于表達應用程序自定義的數據類型實例;
?????? . 一個協定:用于表現遠端過程調用和響應;
??? 2) SOAP是一個與協議無關的傳輸器, 用和許多協議共同使用(這里我們描述如何和HTTP一起使用SOAP);
??? 3) 具體客戶端用什么技術實現并沒有什么關系,只要客戶端能表達XML信息;
??? 4) 服務可用任何語言實現,只要它能處理XML信息;
??? 5) 服務器和客戶端可分別置于合適的平臺;
3.? 信息格式
答:1) 一個SOAP信息是一個envelope,該envelope包含零至多個header以及一個body;
??? 2) 這個envelope是XML文檔的根元素;
??? 3) envelope為以下內容提供了了一個容器:
?????? . 控制信息;
?????? . 消息的收件人;
?????? . 消息本身;
??? 4) header包含控制信息,例如服務屬性;
??? 5) body包含消息標簽以及它的參數;
??? 6) header和body都是envelope的子元素;
4.? 編碼規則
答:1) 編碼規則定義了一系列機制用于交換程序自定義數據類型的實例;
??? 2) SOAP基于XML schema描述符(XSD)定義了一個與編程語言無關的數據類型schema, 根據這個模型為所有定義的數據類型加上這個編碼規則;
???
5.? RPC代表
答:1) RPC代表是適用于表現遠端過程調用以及相關響應消息的一個協定;
??? 2) 作為遠端方法中的參數,我們通常使用相關的簡單數據結構。當然,也可以傳輸更復雜的數據。
??? 3) 這個協定僅被SOAP執行,并非SOAP標準的一部分。
??? 4) 這個轉換的使用是可選的,假如沒有使用RPC轉換,會話是純粹面向消息的;
6.? URN
答:1) URN代表統一資源名稱(unified resource name);
??? 2) URN唯一地識別給客戶端的服務;
??? 3) 在單個SOAP服務器的所有部署的服務中,它必須是唯一的,通過一個合適的網絡地址確定;
??? 4) 一個URN被編碼為一個通用資源標識符(URI);
??? 5) 我們通過使用格式:urn:UniqueServiceID
7.? SOAP envelope
答:1) envelope是表示為下列結構的XML文檔的根元素:
?????? <SOAP-ENV:Envelope...>
????????? <SOAP-ENV:Header name="nmtoker">
???????????? <SOAP-ENV:HeaderEntry.../>
????????? </SOAP-ENV:Header>
????????? <SOAP-ENV:Body name="nmtoker">
???????????? [message payload]
????????? </SOAP-ENV:Body>
?????? </SOAP-ENV:Envelope>
??? 2) 一個SOAP消息有零至多個header和一個body;
??? 3) SOAP envelope同樣定義了結構化信息的名域空間;
??? 4) 整個SOAP消息(header和body)都封裝在envelope內;
??? 5) 注意消息body使用一個服務特定的名域空間,類似于urn:NextMessage;
??? 6) 這個名域空間不同于SOAP-ENV, 這個名域空間被envelope所使用,由SOAP規范所定義;
??? 7) 因此在創建消息體的時候,這個應用程序能使用它自己的域特定詞匯;
8.? header
答:1) header是envelope中可選的元素,假如出現的話,這個元素必須是SOAP envelope中第一個出現的子元素;
??? 2) 所有header元素的子元素稱為header條款;
??? 3) header也能裝載認證數據,數字簽名,編碼信息以及傳輸設置;
??? 4) header也能裝載客戶端或項目-指定控制以及協議的擴展;header的定義并不取決于body。
9.? Body
答:1) SOAP body元素提供了一種機制用以交換信息;
??? 2) body元素是SOAP envelope元素的下一級元素;
??? 3) 假如存在header元素,body元素應該緊跟header元素之后。否則它應該緊跟envelope元素之后。
??? 4) 所有body元素的下一級子元素稱為body的條目,這些條目各自獨立;
??? 5) 在大多數簡單的情況下,基本SOAP消息的body組成:
?????? . 一個消息名稱;
?????? . 一個服務實例的引用;
??? 6) 在Apache SOAP中,一個服務實例為它的URN所標識。這個引用編碼為名域空間的屬性。
??? 7) 一至多個參數里裝載著值和可選的類型引用;
???
典型的body元素使用包括用相應的參數調用RPC、返回結果及錯誤報告;
??? 9) 消息可以包括幾乎任何XML結構,除了DTD及處理說明。
轉自:http://www.blogjava.net/hitlang/articles/71858.html
2004-11-2???? 星期二????? 晴
XML、WebService和WSAD實現
1.? 動機
答:1) 今天,萬維網的主要用途是交互式的訪問文檔和應用程序;
??? 2) 大多數時候,這些訪問是通過瀏覽器、音頻播放器或其它交互式的前-后端系統;
??? 3) W3C: “假如萬維網支持應用程序間的交互,Web在能力及應用范圍上能得到引人注目的增長”
2.? 技術基礎
答:Web services = XML + HTTP
??? . XML:通用數據描述語言;
??? . HTTP:被瀏覽器和Web servers廣泛支持地一種傳輸協議;
?
3.? 什么是Web Service?
答:1) Web service最近成為IT業一個被過度傳播的術語;
??? 2) Web service是自我包含、自我描述、模塊化的程序,它能發布、定位以及通過Web調用;
??? 3) 一個Web service的例子是提供股價或處理信用卡交易。一旦一個web service被布署,其它應用程序即可發現和調用這個服務。
??? 4) 還有什么產業能使用web service?
4.? web service理念
答:Web service基于這樣的理念:構建應用程序的時候通過發現以及調用網絡上現在的應用去實現某現功能;
5.? 自我包含
答:1) 在客戶端,無須附加的軟件;
??? 2) 只須XML和HTTP協議客戶端支持即可開始;
??? 3) 在服務器端,僅需要一個Web服務器和servlet引擎;
??? 4) 對于Web service使一個既存的系統重新可用而無須寫一行代碼是可行的;
???
6.? 自我描述
答:1) 無論是客戶端還是服務器端除了格式和請求內容以及響應信息外無須關注任何事情;
??? 2) 信息格式定義通過消息傳輸;
??? 3) 無額外的無素貯藏庫或代碼產生工具需要;
7.? Web services是模塊化的
答:1) Web services標準框架提供了一個組件模型;
??? 2) Web services是一種技術,用于部署和提供Web上的商業功能訪問;
??? 3) J2EE、CORBA和其它標準是實現這些Web services的技術;
8.? 發布、定位以及通過Web調用
答:所需的一些額外的標準:
??? . SOAP:Simple Object Access Protocol、也可理解為 service-oriented architecture protocol,基于RPC和通訊協議的XML。
??? . WSDL:Web Service Description Language, 一個描述性的接口和協議綁定語言。
??? . UDDI:Universal Description, Discovery,and Integration,一種注冊機制,用于查找Web service描述。
9.? 語言無關和互操作性
答:1) 客戶端和服務器端能在不同環境下被實現;
??? 2) 既存的環境為了實現Web service無須進行改動;
??? 3) 但是在現在,我們假設Java是Web service客戶端和服務器端的實現語言;
10. 基于開放的標準
答:1) XML和HTTP是Web services的技術基礎;
??? 2) 很大部分Web service技術使用開源項目構建;
??? 3) 因此,供應商無關以及互操作性是這時的現實目標。
11. Web services是動態的
答:通過使用Web Services,動態電子商務變得很現實。因為,使用UDDI和WSDL,Web service描述和發現可以自動進行。
12. Web services是組合的
答:簡單的Web services能組合成更復雜的Web services,無論是使用工作流技術或是調用更底層的Web services。
13. 基于成熟技術構建
答:1) XML + HTML
??? 2) 和其它分布式計算框架相比,有很多相同點也有很多基礎性的不同。例如,傳輸協議基于文本而非二進制。
14. 因此...新的機會到來了
答:1) 在這個時刻,Web service受到大量關注,產生了許多工作機會;
??? 2) 你應該理解并迅速掌握這項技術便能把握住這些機會。
15. Web Service角色
答:1) service provider創建web service并發布它的接口和訪問信息到服務登記處;
??? 2) service broker(也稱為service registry)有責任使Web service接口和實現訪問信息對任何潛在的service requestor可用;
??? 3) service requestor為了使用Web service,使用各種查找操作在broker登記處定義入口以及綁定到service provider。
16. Web services架構體系
答:1) Web services通過service provider部署到Web上;
??? 2) Web service提供的功能使用WSDL描述;
??? 3) service broker幫助service provider和service requestor能互相找到對方;
??? 4) service requestor使用UDDI API從service broker處尋找它所需要的服務;
??? 5) 當service broker返回查找的結果,service requestor可使用這些結果綁定到一個特定服務;
??? 6) Web service描述由service provider創建和發布;
??? 7) Web service由service broker組織和查找;
???

17. Web services組件
答:前面顯示了Web service中用到的三種主要的組件:
??? 1) Service provider: 提供服務并使這些服務可用;
??? 2) Service broker: 為service provider和service requestor配對;
??? 3) Service requester: 使用service broker查找Web service,然后調用這些服務去創建應用程序;
18. Service provider子角色
答:1) WSDL規范由二部分組成:服務接口和服務實現;
??? 2) 服務接口提供者和服務實現者是service provider的子角色;
??? 3) 二個角色可以,但非必須被同一個事務承擔;
19. Web service操作
答:1) 發布/取消發布
?????? . 發布服務至登記處;
?????? . 移除這些登記的條款
?????? service provider聯系service broker發布/取消服務
??? 2) 查找操作由service requestor和service broker共同完成: service requestor描述他們查找的服務種類; service broker遞交最匹配的請求結果。
??? 3) 綁定發生在service requestor和service provider間,他們會協議好以便requestor能訪問和調用service provider提供的服務。
20. WSDL——Web服務描述語言
答:1) WSDL是以XML為基礎的接口定義語言,它提供了一種分類和描述Web service的方式;
??? 2) WSDL定義了:
?????? . Web service的接口,包括:
???????? a. 操作方式(單向、通知、請求-響應);
???????? b. 定義了Web service的消息;
???????? c. 數據類型(XML schema);
?????? . Web service訪問協議(SOAP over HTTP);
?????? . Web service聯系的終點(Web service URL);
?????? . 符合要求的服務端應用程序必須支持這些接口,客戶端用戶能從這份文檔中得知如何訪問一個服務。
21. UDDI——統一查找、描述以及綜合
答:1) UDDI提供了一種找到可用Web service的方式;
??? 2) UDDI提供了一個全球的、平臺無關的、開放式框架,使得商業應用能:
?????? . 相互查找;
?????? . 定義它們通過Web交互的方式;
?????? . 在一個全球注冊場所共享信息;
??? 3) 在Web上存在三種開放的UDDI注冊場所, 由IBM、Microsoft和HP發起;
??? 4) 注冊是免費的,在任一注冊處注冊的內容被其它注冊處所復制;
??? 5) 在UDDI商業注冊處提供的信息由三部分組成:
?????? . “白皮書”:包括地址、聯系以及標識符;
?????? . “黃皮書”:包括基于標準分類學的各產業分類;
?????? . “綠皮書”:所提供的service的技術信息;
??? 6) Web service provider和requester使用SOAP API和UDDI注冊處交流;
22. SOAP——簡單對象訪問協議(Simple Object Access Protocol)
答:1) SOAP是一個網絡中立的、輕量級的協議,用于交換兩個遠端應用程序的信息;
??? 2) SOAP是一個基于XML的協議,由三部分組成:
?????? . 一個定義了一個框架的封套(envelope),這個框架描述了信息的內容以及如何去處理它。
?????? . 一系列的編碼規則,用于表現系統定義的數據類型實例;
?????? . 一個協定,用于表現遠端處理調用和響應
23. SOAP范例
答:1) 這個例子是一個SOAP請求以及響應的范例;
??? 2) 這些例子顯示了一個客戶端查詢IBM股價的SOAP請求以及響應;
24. SOAP請求
答:POST /soapsamples/servlet/rpcrouter HTTP/1.0
??? Host: localhost
??? Content-Type: text/xml:charset=utf-8
??? Content-Length: 460
??? SOAPAction: ""
??? <?xml version='1.0' encoding='UTF-8'?>
??? <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
??????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??????? xmlns:xsd="http://www.w3.org/2001/XMLSchema">
??????? <SOAP-ENV:Body>
??????????? <nsl:getQuote xmlns:nsl="urn:xmltoday-delayed-quotes"
???????????????? SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
???????????????? <symbol xsi:type="xsd:string">IBM</symbol>
??????????? </nsl:getQuote>
??????? </SOAP-ENV:Body>
??? </SOAP-ENV:Envelope>
??? 1) SOAP請求表明getQuote方法從以下地址調用:http://localhost/soapsamples/servlet/rpcrouter
??? 2) SOAP協議并沒有指定如何處理請求,服務提供者可運行一個CGI腳本,調用servlet或執行其它產生對應響應的處理;
??? 3) 響應包含于一個XML文檔格式的表單內,該表單包含了處理的結果,在我們這個范例中是IBM的股價;
25. SOAP響應
答:HTTP/1.1 200 OK
??? Server: IBM HTTP SERVER/1.3.19 Apache/1.3.20 (Win32)
??? Content-Length: 479
??? Connection: close
??? Content-Type: text/xml; charset = utf-8
??? Content-Language: en
??? <?xml version='1.0' encoding='UTF-8'?>
??? <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
??????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??????? xmlns:xsd="http://www.w3.org/2001/XMLSchema">
??????? <SOAP-ENV:Body>
??????????? <nsl:getQuoteResponse xmlns:nsl="urn:xmltoday-delayed-quotes"
?????????????? SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
?????????????? <return xsi:type="xsd:float">108.53</return>
??????????? </nsl:getQuoteResponse>
??????? </SOAP-ENV:Body>
??? </SOAP-ENV:Envelope>
??? 1) 結果所位于的元素名稱在請求方法名后加后綴“Response”,例請求方法名為:getQuote, 響應方法名為:getQuoteResponse。
26. Http響應狀態
答:1) 1XX——information
??? 2) 2XX——success
??? 3) 3XX——redirection
??? 4) 4XX——client error
??? 5) 5XX——sever error
27. Web service的好處
答:. 專注于核心商業邏輯,使用Web service應用于非核心商業邏輯從而以一個很低的成本快速發布新的IT解決方案;
??? . 通過使用Web service封裝以前軟件系統到當前系統中可保護既有投資;
??? . 以最少的費用將用戶和伙伴的商業系統結合到一塊;
28. 好處——促進協同工作能力
答:1) service provider和service requester之間的溝通設計為平臺和語言無關;
??? 2) 這個交互需要一份WSDL文檔,這份文檔定義了接口以及描述了相應的服務,連同網絡協議在一起(通常是HTTP);
29. 好處——
答:1) 當service requester使用service broker尋找service provider,這種發現是自動發生的。
??? 2) 一旦requester和provider相互找到,provider的WSDL文檔用于將requester和服務綁定到一塊。
??? 3) 這意味著requester、provider和broker一塊創建的系統是自我設置、自我適應以及強健的。
30. 好處——通過封裝降低了復雜性
答:1) service requester和provider只關心必要的接口;
??? 2) service requester并不關心service provider如何實現服務;
??? 3) 這些細節都在requester和provider方封裝好,這種封裝對于降低復雜性非常重要;
31. 好處——給遺留系統以新的生機
答:1) 對于一個遺留系統、產生一個SOAP包裝,然后產生一個WSDL文檔將應用程序作為一個web service;
??? 2) 這意味著遺留系統能用于新的方面;
??? 3) 此外,與遺留系統相聯系的基礎設施能封裝成一系列的服務;
2004-11-3???? 星期三????? 晴
SOAP
1.? 預覽
答:1) SOAP是分布式環境下交換結構化信息的規范;
??? 2) SOAP代表了SOA中三種主要行動者(service provider、service requestor、service broker)間主要的溝通方式;
??? 3) 它的設計目標是應該簡單以及可擴展;
??? 4) 由微軟最先提出;
??? 5) 當前標準版本為1.1;
2.? SOAP
答:1) SOAP是一個基于XML的協議,由三部分組成:
?????? . envelope: 定義了一個框架,該框架用于描述信息內容以及處理說明;
?????? . 一系列的編碼規則:用于表達應用程序自定義的數據類型實例;
?????? . 一個協定:用于表現遠端過程調用和響應;
??? 2) SOAP是一個與協議無關的傳輸器, 用和許多協議共同使用(這里我們描述如何和HTTP一起使用SOAP);
??? 3) 具體客戶端用什么技術實現并沒有什么關系,只要客戶端能表達XML信息;
??? 4) 服務可用任何語言實現,只要它能處理XML信息;
??? 5) 服務器和客戶端可分別置于合適的平臺;
3.? 信息格式
答:1) 一個SOAP信息是一個envelope,該envelope包含零至多個header以及一個body;
??? 2) 這個envelope是XML文檔的根元素;
??? 3) envelope為以下內容提供了了一個容器:
?????? . 控制信息;
?????? . 消息的收件人;
?????? . 消息本身;
??? 4) header包含控制信息,例如服務屬性;
??? 5) body包含消息標簽以及它的參數;
??? 6) header和body都是envelope的子元素;
4.? 編碼規則
答:1) 編碼規則定義了一系列機制用于交換程序自定義數據類型的實例;
??? 2) SOAP基于XML schema描述符(XSD)定義了一個與編程語言無關的數據類型schema, 根據這個模型為所有定義的數據類型加上這個編碼規則;
???
5.? RPC代表
答:1) RPC代表是適用于表現遠端過程調用以及相關響應消息的一個協定;
??? 2) 作為遠端方法中的參數,我們通常使用相關的簡單數據結構。當然,也可以傳輸更復雜的數據。
??? 3) 這個協定僅被SOAP執行,并非SOAP標準的一部分。
??? 4) 這個轉換的使用是可選的,假如沒有使用RPC轉換,會話是純粹面向消息的;
6.? URN
答:1) URN代表統一資源名稱(unified resource name);
??? 2) URN唯一地識別給客戶端的服務;
??? 3) 在單個SOAP服務器的所有部署的服務中,它必須是唯一的,通過一個合適的網絡地址確定;
??? 4) 一個URN被編碼為一個通用資源標識符(URI);
??? 5) 我們通過使用格式:urn:UniqueServiceID
7.? SOAP envelope
答:1) envelope是表示為下列結構的XML文檔的根元素:
?????? <SOAP-ENV:Envelope...>
????????? <SOAP-ENV:Header name="nmtoker">
???????????? <SOAP-ENV:HeaderEntry.../>
????????? </SOAP-ENV:Header>
????????? <SOAP-ENV:Body name="nmtoker">
???????????? [message payload]
????????? </SOAP-ENV:Body>
?????? </SOAP-ENV:Envelope>
??? 2) 一個SOAP消息有零至多個header和一個body;
??? 3) SOAP envelope同樣定義了結構化信息的名域空間;
??? 4) 整個SOAP消息(header和body)都封裝在envelope內;
??? 5) 注意消息body使用一個服務特定的名域空間,類似于urn:NextMessage;
??? 6) 這個名域空間不同于SOAP-ENV, 這個名域空間被envelope所使用,由SOAP規范所定義;
??? 7) 因此在創建消息體的時候,這個應用程序能使用它自己的域特定詞匯;
8.? header
答:1) header是envelope中可選的元素,假如出現的話,這個元素必須是SOAP envelope中第一個出現的子元素;
??? 2) 所有header元素的子元素稱為header條款;
??? 3) header也能裝載認證數據,數字簽名,編碼信息以及傳輸設置;
??? 4) header也能裝載客戶端或項目-指定控制以及協議的擴展;header的定義并不取決于body。
9.? Body
答:1) SOAP body元素提供了一種機制用以交換信息;
??? 2) body元素是SOAP envelope元素的下一級元素;
??? 3) 假如存在header元素,body元素應該緊跟header元素之后。否則它應該緊跟envelope元素之后。
??? 4) 所有body元素的下一級子元素稱為body的條目,這些條目各自獨立;
??? 5) 在大多數簡單的情況下,基本SOAP消息的body組成:
?????? . 一個消息名稱;
?????? . 一個服務實例的引用;
??? 6) 在Apache SOAP中,一個服務實例為它的URN所標識。這個引用編碼為名域空間的屬性。
??? 7) 一至多個參數里裝載著值和可選的類型引用;
???

??? 9) 消息可以包括幾乎任何XML結構,除了DTD及處理說明。
轉自:http://www.blogjava.net/hitlang/articles/71858.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
