亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

[ZT]WebService概述

系統(tǒng) 1845 0

part1. Web Service概述
-----------------------------------------------------
一、 Web Service概述
? 1.動機
???? 1) 今天,萬維網(wǎng)的主要用途是交互式的訪問文檔和應用程序;
???? 2) 大多數(shù)時候,這些訪問是通過瀏覽器、音頻播放器或其它交互式的前-后端系統(tǒng);
???? 3) W3C: “假如萬維網(wǎng)支持應用程序間的交互,Web在能力及應用范圍上能得到引人注目的增長”

? 2.理念:構(gòu)建應用程序的時候通過發(fā)現(xiàn)以及調(diào)用網(wǎng)絡上現(xiàn)在的應用去實現(xiàn)某些功能;

二、 技術(shù)基礎
??? Web services = XML + HTTP
??? XML:通用數(shù)據(jù)描述語言;
??? HTTP:被瀏覽器和Web servers廣泛支持的一種傳輸協(xié)議;

三、 What is web service
???? 1) 在互聯(lián)網(wǎng)上,通過基于標準的互聯(lián)網(wǎng)協(xié)議(例如HTTP、SMTP)訪問的一段業(yè)務邏輯。或者叫Web服務組件。
???? 2) 承諾在一個分布式環(huán)境中,不同的平臺的,不同語言的應用和應用組件之間能夠互操作。
???? 3) Web service是自我包含、自我描述、模塊化的程序,它能發(fā)布、定位以及通過Web調(diào)用;
???? 4) 一旦一個web service被布署,其它應用程序即可發(fā)現(xiàn)和調(diào)用這個服務。
???? 5) 技術(shù)上來說,Web Service也是一種遠程方法調(diào)用

? 1. 自我包含
???? 1) 在客戶端,無須附加的軟件;
???? 2) 只須XML和HTTP協(xié)議客戶端支持即可開始;
???? 3) 在服務器端,僅需要一個Web服務器和servlet引擎;
???? 4) 對于Web service使一個既存的系統(tǒng)重新可用而無須寫一行代碼是可行的;
? 2. 自我描述
???? 1) 無論是客戶端還是服務器端除了格式和請求內(nèi)容以及響應信息外無須關(guān)注任何事情;
???? 2) 信息格式定義通過消息傳輸;
???? 3) 無額外的無素貯藏庫或代碼產(chǎn)生工具需要;
? 3. 模塊化的程序
???? 1) Web services標準框架提供了一個組件模型;
???? 2) Web services是一種技術(shù),用于部署和提供Web上的商業(yè)功能訪問;
???? 3) J2EE、CORBA和其它標準是實現(xiàn)這些Web services的技術(shù);
? 4. 發(fā)布、定位以及通過Web調(diào)用所需的一些額外的標準:
???? SOAP:Simple Object Access Protocol
????????? 也可理解為 service-oriented architecture protocol,基于RPC和通訊協(xié)議的XML。
???? WSDL:Web Service Description Language, 一個描述性的接口和協(xié)議綁定語言。
???? UDDI:Universal Description, Discovery and Integration,一種注冊機制,用于查找Web service描述。
? 5. 語言無關(guān)和互操作性
???? 1) 客戶端和服務器端能在不同環(huán)境下被實現(xiàn);
???? 2) 既存的環(huán)境為了實現(xiàn) Web service 無須進行改動;
???? 3) 但是在現(xiàn)在,我們假設Java是Web service客戶端和服務器端的實現(xiàn)語言;
? 6. 基于開放的標準
???? 1) XML和HTTP是Web services的技術(shù)基礎;
???? 2) 很大部分Web service技術(shù)使用開源項目構(gòu)建;
???? 3) 因此,供應商無關(guān)以及互操作性是這時的現(xiàn)實目標。
? 7. Web services是動態(tài)的
???? 通過使用Web Services,動態(tài)電子商務變得很現(xiàn)實。
???? 因為,使用UDDI和WSDL,Web service描述和發(fā)現(xiàn)可以自動進行。
? 8. Web services是組合的、簡單的
???? Web services能組合成更復雜的Web services,無論是使用工作流技術(shù)或是調(diào)用更底層的Web services。
? 9. 基于成熟技術(shù)構(gòu)建
???? 1) XML + HTML
???? 2) 和其它分布式計算框架相比,有很多相同點也有很多基礎性的不同。
??????? 例如,傳輸協(xié)議基于文本而非二進制。

四、 Web Service可以解決的問題
??? 1) 異構(gòu)應用系統(tǒng)之間的集成
?????? 異構(gòu)程序定位:使用URI標志軟件程序
????????? 傳輸協(xié)議:HTTP、FTP、SMTP等公共協(xié)議???
????????? 數(shù)據(jù)格式:XML
????????? 接口描述:XML
??? 2) 不同公司之間的系統(tǒng)集成
?????? 公共的互聯(lián)網(wǎng)協(xié)議HTTP、FTP、SMTP
??? 3) 需要集成的系統(tǒng)之間有防火墻
?????? 使用公共的網(wǎng)絡協(xié)議HTTP、FTP、SMTP
????????? 傳統(tǒng)的做法是,選擇用瀏覽器作為客戶端(大量跳轉(zhuǎn)頁面和控制程序)
????????? 新的做法(Ajax,Web Service)
?????? 區(qū)別于web應用
????????? web application: 人(瀏覽器)與應用的交互
????????? web service:???? 應用與應用的交互
??? 4) 代碼重用的問題
?????? 使用HTTP等服務,無需下載或安裝服務程序的代碼

? Web service的好處.
????? 專注于核心商業(yè)邏輯,使用Web service應用于非核心商業(yè)邏輯從而以一個很低的成本快速發(fā)布新的IT解決方案;
????? 通過使用Web service封裝以前軟件系統(tǒng)到當前系統(tǒng)中可保護既有投資;
????? 以最少的費用將用戶和伙伴的商業(yè)系統(tǒng)結(jié)合到一塊;
?? 1.好處——促進協(xié)同工作能力
???? 1) service provider和service requester之間的溝通設計為平臺和語言無關(guān);
???? 2) 這個交互需要一份WSDL文檔,這份文檔定義了接口以及描述了相應的服務,連同網(wǎng)絡協(xié)議在一起(通常是HTTP);
?? 2.好處——
???? 1) 當service requester 使用service broker尋找service provider,這種發(fā)現(xiàn)是自動發(fā)生的。
???? 2) 一旦requester和provider相互找到,provider的WSDL文檔用于將requester和服務綁定到一塊。
???? 3) 這意味著requester、provider和broker一塊創(chuàng)建的系統(tǒng)是自我設置、自我適應以及強健的。
?? 3.好處——通過封裝降低了復雜性
???? 1) service requester和provider只關(guān)心必要的接口;
???? 2) service requester并不關(guān)心service provider如何實現(xiàn)服務;
???? 3) 這些細節(jié)都在requester和provider方封裝好,這種封裝對于降低復雜性非常重要;
?? 4.好處——給遺留系統(tǒng)以新的生機
???? 1) 對于一個遺留系統(tǒng)、產(chǎn)生一個SOAP包裝,然后產(chǎn)生一個WSDL文檔將應用程序作為一個web service;
???? 2) 這意味著遺留系統(tǒng)能用于新的方面;
???? 3) 此外,與遺留系統(tǒng)相聯(lián)系的基礎設施能封裝成一系列的服務;

五、 Web Service的特點
??? 1) 基于XML,異構(gòu)應用集成容易
??? 2) 基于消息的(HTTP和SOAP消息)
?????? 松散耦合的(調(diào)用服務代碼時無需下載和安裝)
?????? 編程語言獨立的(使用HTTP等協(xié)議,通信更加簡單,使用XML的數(shù)據(jù)格式,程序更易識別)
?????? 提供異步和同步的能力(異步功能提高訪問性能)
?????? 能動態(tài)裝配和集成(可以使用更多服務)
?????? 通過互聯(lián)網(wǎng)進行訪問
??? 3) 基于工業(yè)標準的(W3C的 WSDL, SOAP, UDDI)

六、 Web Service角色
???? 1) service provider 創(chuàng)建web service并發(fā)布它的接口和訪問信息到服務登記處;
???? 2) service broker?? (也稱為service registry)
??????? 有責任使Web service接口和實現(xiàn)訪問信息對任何潛在的service requestor可用;
???? 3) service requestor
??????? 為了使用Web service,使用各種查找操作在broker登記處定義入口以及綁定到service provider。

??? Service provider子角色
???? 1) WSDL規(guī)范由二部分組成:服務接口和服務實現(xiàn);
???? 2) 服務接口提供者和服務實現(xiàn)者是service provider的子角色;
???? 3) 二個角色可以,但非必須被同一個事務承擔;

七、 Web services架構(gòu)體系
???? 1) 通過 service provider 部署到Web上;
???? 2) 提供的功能使用WSDL描述;
???? 3) service broker 幫助 service provider 和 service requestor 能互相找到對方;
???? 4) service requestor 使用 UDDI API從service broker 處尋找它所需要的服務;
???? 5) 當service broker 返回查找的結(jié)果,service requestor 可使用這些結(jié)果綁定到一個特定服務;
???? 6) Web service 描述由service provider創(chuàng)建和發(fā)布;
???? 7) 由service broker 組織和查找;
???? ?由service requester 定位和調(diào)用;

八、 Web services組件
??? 前面顯示了Web service中用到的三種主要的組件:
???? 1) Service provider:? 提供服務并使這些服務可用;
???? 2) Service broker:??? 為service provider和service requestor配對;
???? 3) Service requester: 使用service broker查找Web service,然后調(diào)用這些服務去創(chuàng)建應用程序;

九、 Web service操作
???? 1) 發(fā)布/取消發(fā)布
??????? 發(fā)布服務至登記處;
??????? 移除這些登記的條款
??????? service provider聯(lián)系
??????? service broker發(fā)布/取消服務
???? 2) 查找操作由service requestor和service broker共同完成:
??????? service requestor描述他們查找的服務種類;
??????? service broker遞交最匹配的請求結(jié)果。
???? 3) 綁定發(fā)生在service requestor和service provider間
??????? 他們會協(xié)議好以便requestor能訪問和調(diào)用service provider提供的服務。

六、 SOA架構(gòu)(Service-Oriented Architecture)
??? 面向服務的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)是一個分布式組件模型,用來將現(xiàn)有的應用集成
??? 1) 把組件都看做網(wǎng)絡服務
??????? 將現(xiàn)有的應用、組件、業(yè)務邏輯發(fā)布為服務
??????? 對服務的要求:與平臺無關(guān)(硬件,操作系統(tǒng),語言);基于 internet 的服務,采用公共的網(wǎng)絡協(xié)議
??? 2) SOA系統(tǒng)原型的一個典型例子是通用對象請求代理體系結(jié)構(gòu)
?????? (Common Object Request Broker Architecture,CORBA)
??? 3) 現(xiàn)在的SOA以XML為基礎的,也就是Web Service
?????? Web服務是技術(shù)規(guī)范,而SOA是設計原則,Web服務是實現(xiàn)SOA的方式之一


part2. Web Service關(guān)鍵技術(shù)? ----? SOAP協(xié)議
-----------------------------------------------------
一、 What is SOAP(Simple Object Access Protocol) ——簡單對象訪問協(xié)議
???? 1) SOAP是一個網(wǎng)絡中立的、輕量級的協(xié)議,用于交換兩個遠端應用程序的信息;
???? 2) SOAP是一個基于XML的協(xié)議,由三部分組成:
??????? envelope: 定義了一個框架,該框架用于描述信息內(nèi)容以及處理說明;
??????? 一系列的編碼規(guī)則:用于表現(xiàn)系統(tǒng)定義的數(shù)據(jù)類型實例;
??????? 一個協(xié)定:用于表現(xiàn)遠端處理調(diào)用和響應
???? 3) SOAP使用XML技術(shù)定義了一個可擴展的消息框架,底層可以通過各種協(xié)議進行數(shù)據(jù)交換(主要HTTP、FTP、SMTP)
???? 4) SOAP定義為與特定的編程模型和實現(xiàn)語句無關(guān)(只要它能處理XML信息)
??????? 是一個與協(xié)議無關(guān)的傳輸器, 用和許多協(xié)議共同使用(這里我們描述如何和HTTP一起使用SOAP);
???? 5) SOAP是分布式環(huán)境下交換結(jié)構(gòu)化信息的規(guī)范;
???? 6) SOAP代表了SOA中三種主要行動者
??????? (service provider、service requestor、service broker)間主要的溝通方式;
???? 7) 它的設計目標是應該簡單以及可擴展;

?? 1.SOAP VS JRMP、IIOP
??????? SOAP:傳遞基于XML的文本數(shù)據(jù)(基于文本的協(xié)議易識別和理解,例如HTTP)
??????? JRMP、IIOP:傳遞字節(jié)數(shù)據(jù)
?? 2.SOAP1.2 是 W3C 推薦標準
??????? W3C(萬維網(wǎng)聯(lián)盟)組織是一個制定網(wǎng)絡標準的非贏利組織,像 HTML、XHTML、CSS、XML 的標準都是由W3C來定制
?? 3.defines1:
??????? SOPA信封????? 定義消息結(jié)構(gòu):一個信封內(nèi)包含一個消息頭和一個消息體
??????? 協(xié)議綁定框架??? 定義了一組規(guī)則把SOAP消息綁定到其他的底層協(xié)議
??????? 參看:http://www.w3.org/TR/soap12-part1/
?? 4.defines2:
??????? Data modle for SOAP
??????????? 定義SOAP消息中的XML數(shù)據(jù),和具體編程實現(xiàn)的數(shù)據(jù)類型的對應關(guān)系(如:XML轉(zhuǎn)換成Java數(shù)據(jù)類型)
??????? Binding to Http
??????????? 定義了如何將SOPA消息綁定到HTTP協(xié)議
??????? 參看:http://www.w3.org/TR/soap12-part2/
?? 5.需要知道SOAP的細節(jié)嗎?
???? 需要:了解細節(jié)有助于你構(gòu)建更好的應用(如提高效率和性能:這要求對XML和底層通信協(xié)議的了解)
???? 無需:一般情況你應該使用一些高層的API(如JAX-WS)構(gòu)建應用,SOAP的實現(xiàn)細節(jié)對開發(fā)者透明

二、 SOAP信封
??? 1) 一條 SOAP 消息就是一個普通的 XML 文檔,包含下列元素:
?????? 必需的 Envelope 元素,可把此 XML 文檔標識為一條 SOAP 消息
?????? 可選的 Header 元素,包含頭部信息
?????? 必需的 Body 元素,包含所有的調(diào)用和響應信息
???????????? 包含可選的 Fault 元素,提供有關(guān)在處理此消息所發(fā)生錯誤的信息
??? 2) 所有以上的元素均被聲明于針對 SOAP 封裝的默認命名空間中:
???????? http://www.w3.org/2001/12/soap-envelope
?????? 以及針對 SOAP 編碼和數(shù)據(jù)類型的encodingStyle屬性:
???????? http://www.w3.org/2001/12/soap-encoding

??? 1. SOAP消息 語法規(guī)則:
??????? 必須用 XML 來編碼
??????? 必須使用 SOAP Envelope 命名空間
??????? 必須使用 SOAP Encoding 命名空間
??????? 不能包含 DTD 引用
??????? 不能包含 XML 處理指令
??? 2. SOAP 消息的基本結(jié)構(gòu)
??????? <?xml version="1.0"?>
??????? <soap:Envelope
??????? xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
??????? soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
????????? <soap:Header>?? ...??? </soap:Header>
????????? <soap:Body>???? ...
??????????? <soap:Fault>? ...?? </soap:Fault>
????????? </soap:Body>
??????? </soap:Envelope>

三、 信息格式
???? 1) 一個SOAP信息是一個envelope,該envelope包含零至多個header以及一個body元素;
???? 2) 這個envelope是XML文檔的根元素;
???? 3) envelope為以下內(nèi)容提供了了一個容器:
??????? 控制信息; 消息的收件人; 消息本身;
???? 4) header包含控制信息,例如服務屬性;
???? 5) body包含消息標簽以及它的參數(shù);

四、 編碼規(guī)則
???? 1) 編碼規(guī)則定義了一系列機制用于交換程序自定義數(shù)據(jù)類型的實例;
???? 2) SOAP基于XML schema描述符(XSD)定義了一個與編程語言無關(guān)的數(shù)據(jù)類型schema,
??????? 根據(jù)這個模型為所有定義的數(shù)據(jù)類型加上這個編碼規(guī)則;

五、 RPC代表
???? 1) RPC代表是適用于表現(xiàn)遠端過程調(diào)用以及相關(guān)響應消息的一個協(xié)定;
???? 2) 作為遠端方法中的參數(shù),我們通常使用相關(guān)的簡單數(shù)據(jù)結(jié)構(gòu)。當然,也可以傳輸更復雜的數(shù)據(jù)。
???? 3) 這個協(xié)定僅被SOAP執(zhí)行,并非SOAP標準的一部分。
???? 4) 這個轉(zhuǎn)換的使用是可選的,假如沒有使用RPC轉(zhuǎn)換,會話是純粹面向消息的;

六、 URN
???? 1) URN代表統(tǒng)一資源名稱(unified resource name);
???? 2) URN唯一地識別給客戶端的服務;
???? 3) 在單個SOAP服務器的所有部署的服務中,它必須是唯一的,通過一個合適的網(wǎng)絡地址確定;
???? 4) 一個URN被編碼為一個通用資源標識符(URI);
???? 5) 我們通過使用格式:urn:UniqueServiceID

七、 SOAP envelope
???? 1) envelope是表示為下列結(jié)構(gòu)的XML文檔的根元素:?? [message payload]?
???? 2) 一個SOAP消息有零至多個header和一個body;
???? 3) SOAP envelope同樣定義了結(jié)構(gòu)化信息的名域空間;
???? 4) 整個SOAP消息(header和body)都封裝在envelope內(nèi);
???? 5) 注意消息body使用一個服務特定的名域空間,類似于urn:NextMessage;
???? 6) 這個名域空間不同于SOAP-ENV, 這個名域空間被envelope所使用,由SOAP規(guī)范所定義;
???? 7) 因此在創(chuàng)建消息體的時候,這個應用程序能使用它自己的域特定詞匯;

八、 SOAP Header
???? 1) header是envelope中可選的元素,假如出現(xiàn)的話,這個元素必須是SOAP envelope中第一個出現(xiàn)的子元素;
???? 2) 所有header元素的子元素稱為header條款;
???? 3) header也能裝載認證數(shù)據(jù),數(shù)字簽名,編碼信息以及傳輸設置;
???? 4) header也能裝載客戶端或項目-指定控制以及協(xié)議的擴展;header的定義并不取決于body。
?? 1.可選的,用于擴展SOAP消息,例如:
???? 調(diào)用的上下文??????? 目前的應用模式基本上停留在遠程過程/對象的調(diào)用上,
?????????????????????? 基于多次協(xié)調(diào)調(diào)用或者遵循上下文的調(diào)用模式尚很少使用,這其實是受簡單的SOAP消息的制約
???? 安全認證?????????? 保存用戶標識及密碼信息或者其他鑒定證書???
???? 事務控制?????????? 利用SOAP Header條目進行事務控制
???? 其他高級語義功能
?? 2.SOAP Header由一些Header條目組成
????? <env:Header xmlns:env="http://www.w3.org/2001/06/soap-envelope" >
??????? <auth:authentication xmlns:auth="http://example.org/authentication"
???????? env:role="authentication:signin_service"? env:mustUnderstand="1"?? relay=""? >
?????????? <auth:userID>testuserid</auth:userID>
?????????? <auth:password>[encodedPassword]</auth:password>
?????????? <auth:redirection>http://example.com/service/</auth:redirection>
??????? </auth:authentication>
????? </env:Header>
??? 3.role屬性:(next|none|ultimateReceiver)
???????? 指定這個條目必須被哪種角色處理
??? 4.mustUnderstand:(true|false)
???????? 處理節(jié)點必須被處理,如果處理節(jié)點理解不了,必須返回一個SOAP Fault. (此時relay無意義)
??? 5.relay:(true|false)
???????? 處理節(jié)點理解的條目,將會保留,并轉(zhuǎn)發(fā)給下一個SOAP節(jié)點處理

九、 SOAP Body
??? 必須的,包含傳遞給最終的節(jié)點的實際信息
???? 1) SOAP body元素提供了一種機制用以交換信息;
???? 2) body元素是SOAP envelope元素的下一級元素;
???? 3) 假如存在header元素,body元素應該緊跟header元素之后。否則它應該緊跟envelope元素之后。
???? 4) 所有body元素的下一級子元素稱為body的條目,這些條目各自獨立;
???? 5) 在大多數(shù)簡單的情況下,基本SOAP消息的body組成:
??????? 一個消息名稱;
??????? 一個服務實例的引用;
???? 6) 在Apache SOAP中,一個服務實例為它的URN所標識。這個引用編碼為名域空間的屬性。
???? 7) 一至多個參數(shù)里裝載著值和可選的類型引用;
???? 典型的body元素使用包括用相應的參數(shù)調(diào)用RPC、返回結(jié)果及錯誤報告;
???? 9) 消息可以包括幾乎任何XML結(jié)構(gòu),除了DTD及處理說明。

????? <soap:Body xmlns:m="http://www.example.org/stock">
??????? <m:GetStockPrice>
??????????? <m:StockName>IBM</m:StockName>
??????? </m:GetStockPrice>
????? </soap:Body>


十、 SOAP Fault
??? 可選的,元素用于存留 SOAP 消息的錯誤和狀態(tài)信息。必須出現(xiàn)在SOAP Body中
??? <soap:Body xmlns:m="http://www.example.org/stock">
??????? <soap:Fault>
??????????? <faultcode>MustUnderstand</faultcode>
??????????? <faultstring>
??????????????? 一個或多個必須的soap頭未被理解
??????????? </faultstring>
??????? </soap:Fault
??? </soap:Body>

??? <faultcode> 供識別故障的代碼
??? <faultstring> 可供人閱讀的有關(guān)故障的說明
??? <faultactor> 有關(guān)是誰引發(fā)故障的信息
??? <detail> 存留涉及 Body 元素的應用程序?qū)S缅e誤信息

??? faultcode的值:
????? VersionMismatch:?? SOAP Envelope 元素的無效命名空間被發(fā)現(xiàn)
????? MustUnderstand:??? Header 元素的一個直接子元素(帶有設置為 "1" 的 mustUnderstand 屬性)無法被理解。
????? Client:??????????? 消息被不正確地構(gòu)成,或包含了不正確的信息。
????? Server:??????????? 服務器有問題,因此無法處理進行下去。

十一、SOAP HTTP Binding
??? HTTP + XML = SOAP
??? SOAP 請求可能是 HTTP POST 或 HTTP GET 請求。
??? HTTP POST 請求規(guī)定至少兩個 HTTP 頭:Content-Type 和 Content-Length。

? 1. SOAP請求
???? POST /soapsamples/servlet/rpcrouter HTTP/1.0
???? Host: localhost
???? Content-Type:
???? text/xml:charset=utf-8
???? Content-Length: 460
???? SOAPAction: ""? IBM?
????? 1) SOAP請求表明getQuote方法從以下地址調(diào)用:http://localhost/soapsamples/servlet/rpcrouter
????? 2) SOAP協(xié)議并沒有指定如何處理請求,服務提供者可運行一個CGI腳本,調(diào)用servlet或執(zhí)行其它產(chǎn)生對應響應的處理;
????? 3) 響應包含于一個XML文檔格式的表單內(nèi),該表單包含了處理的結(jié)果,在我們這個范例中是IBM的股價;
? 2. 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? 108.53?
???? 1) 結(jié)果所位于的元素名稱在請求方法名后加后綴“Response”,
??????? 例請求方法名為:getQuote, 響應方法名為:getQuoteResponse。
? 3. Http響應狀態(tài)
???? 1) 1XX——information
???? 2) 2XX——success
???? 3) 3XX——redirection
???? 4) 4XX——client error
???? 5) 5XX——sever error


part3. Web Service關(guān)鍵技術(shù)? ---? WSDL
-----------------------------------------------------
1. What is WSDL(Web Service Description Language) ——Web服務描述語言
?? WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。
?? 一些最新的開發(fā)工具既能根據(jù)你的Web service生成WSDL文檔,又能導入WSDL文檔,生成調(diào)用相應Web service的代碼
???? 1) WSDL是以XML為基礎的接口定義語言,它提供了一種分類和描述Web service的方式;
??????? 描述Web服務 和說明如何與Web服務通信的XML語言
???? 2) WSDL定義了 Web service的接口,包括:
??????? a. 操作方式(單向、通知、請求-響應);
??????? b. 定義了Web service的消息;
??????? c. 數(shù)據(jù)類型(XML schema);
?????????? Web service訪問協(xié)議(SOAP over HTTP);
?????????? Web service聯(lián)系的終點(Web service URL);
?????????? 符合要求的服務端應用程序必須支持這些接口,客戶端用戶能從這份文檔中得知如何訪問一個服務。

2. WSDL文檔結(jié)構(gòu)
?? <definitions>
?????? <types>??? definition of types........??? </types>
?????? <message>? definition of a message....??? </message>
?????? <portType> definition of a port.......??? </portType> //代表interface:接口
?????? <binding>? definition of a binding....??? </binding>
?????? <service>? service of a binding....?????? </service>
?? </definitions>

?? 總體上可以分為兩大部分:
??? 1)抽象定義
????? 定義要交換的數(shù)據(jù)格式(數(shù)據(jù)類型/參數(shù)/返回值/方法聲明)
????? types????? 定義數(shù)據(jù)類型,使用XML Schema作為類型系統(tǒng)
????? messages?? 定義要交換的數(shù)據(jù),數(shù)據(jù)類型是types中定義的數(shù)據(jù)類型。對應方法的參數(shù)
???????????????? 包括若干個part,每個part 都對應types中定義一個元素。對應方法的一個參數(shù)
????? porttype(接口) 包含若干 operation;定義一個服務,對應Java的接口
???????????????? 包含一些operation,operation對應Java的方法
???????????????? operation 都包含一個input 和 output 消息(messages中定義)
??? 2)具體描述
????? 定義要采用的互操作協(xié)議(soap)、傳輸協(xié)議(http,ftp,smtp 等)、聲明服務的訪問地址???
????? binding 針對 porttype 定義協(xié)議綁定和數(shù)據(jù)格式的細節(jié):
????????????? 首先是定義消息風格(style) 和 傳輸協(xié)議(transport)
????????????? 然后是對操作的輸入輸出的 消息編碼方式(use)
????? service 包含若干 port
????????????? port 定義了一個通信端點,代表 binding(不同協(xié)議)到 address 的映射

使用XFire開發(fā)Web Service
??? XFire是一個開源的Web Service框架
???
??? operation的四種類型:
??????? 單向: 端點接收請求消息
??????? 請求/應答: 端點接收請求消息,然后返回一個響應消息
??????? 通知: 斷點發(fā)送一個消息
??????? 要求/響應: 端點發(fā)送請求消息,然后接收一個響應消息

??? SOAP的兩種消息風格
??????? style=[document|rpc]
??????? document: 客戶端使用 XML 模式調(diào)用約定。優(yōu)點:更松散的客戶端和服務器端耦合性,跨平臺互操作性更好
?????????? 分兩種: bared(裸露);? wrapped,模擬rpc(包裝的)
??????? rpc:????? 客戶端使用遠程過程調(diào)用約定。? 優(yōu)點:對開發(fā)人員更加簡單.

??? binding的傳輸協(xié)議
??????? transport="http://schemas.xmlsoap.org/soap/http"
??????? transport="http://schemas.xmlsoap.org/soap/smtp"
??? binding中消息的編碼方式
??????? user=[literal|encoded]
??????? literal: 使用types定義的數(shù)據(jù)類型
??????? encoded: 使用soap定義好的數(shù)據(jù)類型,不能使用自定義數(shù)據(jù)類型

??? 可能的style/user組合
??????? 1. style="rpc" and use="encoded"
??????? 2. style="rpc" and use="literal"
??????? 3. style="document" and use="encoded"
??????? 4. style="document" and use="literal"
??????? 其中WS-I組織只支持(user=literal)格式;(user=encoded不被支持)
??????? WS-I(Web Services Interoperability Organization) Web服務協(xié)同組織
??????? 盡量使用第4種: style="document" and use="literal"?

???
part4. Web Service關(guān)鍵技術(shù)? ---? UDDI
-----------------------------------------------------
一、 What is UDDI (Universal Description Discovery and Integration)
???? 1) 即統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議。
???? 2) UDDI提供了一種發(fā)布和查找Web服務的方式,使貿(mào)易伙伴彼此發(fā)現(xiàn)對方和查詢對方。
???? 3) UDDI提供了一個全球的、平臺無關(guān)的、開放式框架,使得商業(yè)應用能:
??????? 相互查找;
??????? 定義它們通過Web交互的方式;
??????? 在一個全球注冊場所共享信息;
???? 4) 在Web上存在三種開放的UDDI注冊場所, 由IBM、Microsoft 和HP發(fā)起;
???? 5) 注冊是免費的,在任一注冊處注冊的內(nèi)容被其它注冊處所復制;
???? 6) 在UDDI商業(yè)注冊處提供的信息由三部分組成:
??????? “白皮書”:(白頁 White pages)包括地址、聯(lián)系以及標識符、產(chǎn)品信息;
??????? “黃皮書”:(黃頁 Yellow pages)包括基于標準分類學的各產(chǎn)業(yè)分類;
??????? “綠皮書”:(綠頁 Green pages)所提供的service的詳細信息;
???? 7) Web service provider 和 requester 使用SOAP API和UDDI注冊處交流;

預想的結(jié)構(gòu):發(fā)布者--注冊服務--使用者
?? 不是必須的,公共的注冊服務目前還沒有被廣泛接受

UDDI的數(shù)據(jù)結(jié)構(gòu)
?? 1. businessEntity. 白頁信息,公司的信息
  2. businessService.黃頁信息,Web服務的分類信息
  3. bindingTemplate. 綠頁信息,Web服務的技術(shù)信息,包括如何調(diào)用Web服務的信息
  4. tModels. 調(diào)用細節(jié)信息,包含WSDL文檔的引用。

XFire動態(tài)客戶端
-----------------------------------------------------
??? 第一步:引入 XFire相關(guān)的類庫
??????? Core Libraries
??????? JAXB Libraries
??????? HTTP Client Libraries

??? 第二步:
??????? Client client = new Client(new URL("WSDL文檔URL"));??????????? //創(chuàng)建一個動態(tài)客戶端
??????? Object[] results = client.invoke("test", new Object[] { "Juliet" });??? //調(diào)用方法
??????? System.out.println( results[0]);

XFire動態(tài)客戶端2
Service srvcModel = new ObjectServiceFactory().create(MathService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());

// HelloWorld 服務名稱
String helloWorldURL = "http://localhost:8081/Hello/services/HelloWorld";
IHelloWorld srvc = (IHelloWorld) factory.create(srvcModel, helloWorldURL);
System.out.println("結(jié)果 :" + srvc.example("tarena"));

[ZT]WebService概述


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲视频精品在线 | 黄色网在线 | 久久天天躁狠狠躁夜夜 | 99热3| 欧美成人看片黄a免费 | 四虎影视国产精品永久在线 | 欧美高清性粉嫩交 | 天天草夜夜爽 | 国产精品亚洲一区二区麻豆 | 午夜亚洲国产理论秋霞 | 免费亚洲视频在线观看 | 日日夜人人澡人人澡人人看免 | 国产精品久久久久999 | 欧美一级在线免费观看 | 玖玖精品在线 | 色丁香在线观看 | 国产欧美日韩精品高清二区综合区 | 精品国产免费一区二区 | 激情小视频在线播放免费 | 亚洲视频精选 | 9久热久re爱免费精品视频 | 日本免费高清一级毛片 | 精品一区二区三区视频在线观看免 | 亚洲欧美国产日产综合不卡 | 我要看欧美精品一级毛片 | 国产成人精品s8p视频 | 老子影院午夜理伦手机不卡 | 美女被视频在线看九色 | 国产成人综合一区人人 | 极品精品国产超清自在线观看 | 成人免费视频日本 | 亚洲欧美综合另类 | 99久久国产综合精品女不卡 | 色色网视频 | 真人一级毛片免费观看视频 | www.91色.com| 欧美不卡影院 | 亚洲精品第一国产麻豆 | 成人在线综合 | 久草手机视频在线 | 国产羞羞视频 |