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

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

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

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