軟件開發(fā)接口_第1頁
軟件開發(fā)接口_第2頁
軟件開發(fā)接口_第3頁
軟件開發(fā)接口_第4頁
軟件開發(fā)接口_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、接口技術(shù)接口技術(shù)2All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.主流接口技術(shù)123XML解析技術(shù)Webservice介紹內(nèi)容提要內(nèi)容提要4Webservice框架3All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd

2、.主流接口技術(shù)主流接口技術(shù) WEB Service Corba EJB 消息隊列 FTP HTTP Socket 中間表4All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.WEB Service 基于HTTP 傳遞xml 定義的SOAP 協(xié)議數(shù)據(jù),是開 放的標準,標準性高,擴展性好。 優(yōu)點: 因為是基于HTTP 協(xié)議,耦合度低,可以方便穿 越防火墻,目前有大量成熟應(yīng)用,接口開發(fā)有很多支持工具和環(huán)境,開發(fā)工

3、作量較低。 缺點: 性能方面相對于中間件服務(wù)調(diào)用較低5All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.Corba 系統(tǒng)向外提供 Corba 服務(wù),客戶端直接調(diào)用。 優(yōu)點: 跨平臺、跨系統(tǒng)、跨語言,性能很高,比較穩(wěn)定,擴展性良好。 缺點: Corba 產(chǎn)品不十分成熟、系統(tǒng)間耦合度增高,而且對于外部系統(tǒng)之間客戶端開發(fā)接口以及調(diào)試工作量相對大一些,適用于實時性要求比較高的場合接口6All Rights Res

4、erved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.EJB 系統(tǒng)向外提供服務(wù)供客戶端直接調(diào)用。 優(yōu)點: 性能很高,有成熟產(chǎn)品支持,可靠穩(wěn)定,擴展性良好。 缺點: 系統(tǒng)間耦合度增高,而且對于外部系統(tǒng)之間客戶端開發(fā)接口以及調(diào)試工作量相對大一些,十分適用于系統(tǒng)內(nèi)部子系統(tǒng)之間的接口7All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian

5、Fujitsu Communication Software Co., Ltd.中間表中間表 這種方式是通過數(shù)據(jù)庫中間表獲取系統(tǒng)的數(shù)據(jù),將相關(guān)的數(shù)據(jù)同步到其他系統(tǒng)。 優(yōu)點: 接口實現(xiàn)簡單,效率高, 缺點: 系統(tǒng)間耦合度較高,對雙方系統(tǒng)的穩(wěn)定性以及接口的穩(wěn)定性要求較高。8All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.接口分類 接口調(diào)用方式 同步:調(diào)用方在調(diào)用接口后必須在接口的結(jié)果返回后才可以繼續(xù)執(zhí)行自己

6、的任務(wù) 異步:調(diào)用方在調(diào)用接口后不需要等待接口的結(jié)果返回,可以繼續(xù)執(zhí)行自己的任務(wù) 接口交互方式 實時:接口的響應(yīng)速度有很高要求,通常要求接口處理能在秒級完成 非實時:調(diào)用者對接口執(zhí)行速度要求不太高。 接口數(shù)據(jù)量 大數(shù)據(jù)量:指大量數(shù)據(jù)傳輸,通常是批量數(shù)據(jù); 小數(shù)據(jù)量:接口數(shù)據(jù)量偏小,一般小于 100K 的數(shù)據(jù)包 接口頻率 非周期:接口不按固定周期交互,通常為事件觸發(fā),比如查詢; 周期:接口按固定周期,比如按日、按周、按月、按小時、按分鐘或其他頻率交互。 9All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FF

7、CS)Fujian Fujitsu Communication Software Co., Ltd.corba,ejb ,webservice的區(qū)別 Corba,EJB 共同點: 通過專有的網(wǎng)絡(luò)協(xié)議通訊 不能跨平臺調(diào)用 通過分布式對象調(diào)用來實現(xiàn)分布式架構(gòu),分布式架構(gòu)是綁定在面向?qū)ο蟮臋C制上的分布式對象架構(gòu)的缺陷在EJB2時代被充分暴露了出來 web services有一些明顯不同于Corba和EJB分布式對象架構(gòu)的特征: 通過標準SOAP協(xié)議通訊,一般走HTTP通道 能夠跨平臺調(diào)用 通訊格式是xml文本,而不是二進制數(shù)據(jù)格式 通過RPC(Remote Procedure Call Protoc

8、ol)機制來實現(xiàn)分布式調(diào)用,而不是通過面向?qū)ο髾C制實現(xiàn)分布式調(diào)用 RPC是一種通過網(wǎng)絡(luò)從遠程計算機程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。 10All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.選擇接口技術(shù) 同步實時小數(shù)據(jù)量 WEB SERVICE、CORBA 異步非實時小數(shù)據(jù)量 接口表、WEB SERVICE 異步非實時大數(shù)據(jù)量 接口表、FTP 11All Rights Reserved, Co

9、pyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.主流接口技術(shù)123XML解析技術(shù)Webservice介紹內(nèi)容提要內(nèi)容提要4Webservice框架12All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.XML解析技術(shù) XML解析技術(shù)分析 所有的XML處理都從解析

10、開始,無論是使用XSLT或Java語言,第一步都是要讀入XML文件,解碼結(jié)構(gòu)和檢索信息等等,這就是解析,即把代表XML文檔的一個無結(jié)構(gòu)的字符序列轉(zhuǎn)換為滿足XML語法的結(jié)構(gòu)化組件的過程。 XML解析技術(shù)的分類 面向文檔的流式解析; 面向文檔的對象式解析; 面向文檔的指針式解析; 面向應(yīng)用的對象式解析;13All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.面向文檔的流式解析技術(shù) 流式解析是一種基于事件的解析過

11、程,解析器順序讀取XML文檔,產(chǎn)生一個對應(yīng)的事件流,并向事件處理程序發(fā)送所捕獲的各種事件,如元素開始和元素結(jié)束等,而事件處理程序則通過不同的方法處理這些事件。流式解析是將XML文檔作為一個數(shù)據(jù)流來處理,因此,它具有類似于流媒體的優(yōu)點,能夠立即開始讀取數(shù)據(jù),而不是等待所有的數(shù)據(jù)被處理。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時檢查數(shù)據(jù),不需要將整個文檔一次加載到內(nèi)存中,使得在處理大型文檔時具有較好的時間和空間上的效率。然而效率的代價是易用性的降低,流式解析編程較為復雜,程序員需要負責更多的操作。并且由于應(yīng)用程序沒有以任何方式存儲數(shù)據(jù),所以使得更改數(shù)據(jù)或在數(shù)據(jù)流中往后移是不可能的。再加上它的單遍解析特性,

12、意味著它也不支持隨機訪問。流式解析又分為兩種解析方式:推式解析(SAX)和拉式解析(StAX)。這兩種方式的主要區(qū)別在于是由解析器還是應(yīng)用程序控制讀循環(huán)(讀入文件的循環(huán))。拉式解析: 在這種解析方式中,應(yīng)用程序控制著讀循環(huán)。循環(huán)中,應(yīng)用程序負責反復調(diào)用解析器獲得下一個事件,直到文檔結(jié)束。 推式解析: 在這種解析方式中,解析器控制著讀循環(huán),在文檔結(jié)束之前控制權(quán)不會返回給應(yīng)用程序。解析器通過回調(diào)的方式進行數(shù)據(jù)處理。14All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Co

13、mmunication Software Co., Ltd.java常用的XML解析技術(shù) DOM(Document Object Model) W3C 里邊一種成熟的標準。 SAX (Simple API for XML) 一種被廣泛接受的 XML 的 API ,成為事實上的標準 。 StAX (Streaming API for XML) 在 JSR-173 中提到的一種很有前途的新型解析模型。 按照解析方式可分為: 基于樹(tree-based), DOM 基于事件(event-based), SAX, StAX 15All Rights Reserved, Copyright FFCS

14、2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.DOM解析技術(shù)DOM解析是面向文檔的對象式解析技術(shù) DOM解析器把XML文檔轉(zhuǎn)化為一個包含其內(nèi)容的樹,并可以對樹進行遍歷。DOM是用與平臺和語言無關(guān)的方式表示XML文檔的官方W3C標準。DOM是以層次結(jié)構(gòu)組織的節(jié)點或信息片斷的集合。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作。由于 它是基于信息層次的,因而DOM被認為是基于樹或基于對象的。 DOM 以及廣義的基于

15、樹的處理具有幾個優(yōu)點。首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。它還可以在任何時候在樹中上下導航,而不是像SAX那樣是一次性的處理。DOM使用起來 也要簡單得多。DOM解析模型的優(yōu)點是編程容易,開發(fā)人員只需要調(diào)用建樹的指令,然后利用 navigation APIs訪問所需的樹節(jié)點來完成任務(wù)。可以很容易的添加和修改樹中的元素。然而由于使用 DOM解析器的時候需要處理整個XML文檔,所以對性能和內(nèi)存的要求比較高,尤其是遇到很大的XML文件的時候。由于它的遍歷能力,DOM解析器常用于 XML文檔需要頻繁的改變的服務(wù)中。 16All Rights Reserved

16、, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.SAX解析技術(shù) SAX 采用了“推模式”( push modal )解析 SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發(fā)一系列的事件,當發(fā)現(xiàn)給定的tag的時候,它可以激活一個回調(diào)方法,告訴該方法制定的標簽已經(jīng)找到。SAX對內(nèi)存的要求通常會比較低,因為它讓開發(fā)人員自己來決定所要處理的 tag.特別是當開發(fā)人員只需要處理文檔中所包含的部分數(shù)據(jù)時,SAX這種擴展能力得到了更好的體

17、現(xiàn)。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數(shù)據(jù)。 SAX 處理的優(yōu)點非常類似于流媒體的優(yōu)點。分析能夠立即開始,而不是等待所有的數(shù)據(jù)被處理。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲在內(nèi)存中。這對于大型文檔來說是個巨大的優(yōu)點。事實上,應(yīng)用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。17All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Commun

18、ication Software Co., Ltd.STAX解析技術(shù)StAX 是一種令人振奮的新型解析技術(shù),和 SAX 一樣,它也采用了事件驅(qū)動模型。不過,在對于事件的處理上, SAX 采用了“推模式”( push modal ),而 StAX 則使用的是“拉模式”( pull model )。從這個原理來判斷的話, StAX 的實現(xiàn)顯然要更加靈活,程序可以選擇自己需要處理的部分,而 SAX 則一定會遍歷整個文檔。將 StAX 叫成“程序驅(qū)動模型”可能更利于理解一些。 優(yōu)點: 接口簡單,使用方便。 采用流模型分析方式,有較好的性能。缺點: 單向?qū)Ш?,不支持XPath,很難同時訪問同一文檔的不同

19、部分。18All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.技術(shù)有利局限適用于DOM1.易于上手2.豐富的 API ,易于訪問3.整棵樹被載入內(nèi)存,能隨機訪問節(jié)點4 讀寫1.整個文檔必須一次解析完2.載入文檔樹到內(nèi)存代價昂貴3.不利于實現(xiàn)對象類型綁定,需要給所有節(jié)點創(chuàng)建單獨的類型需要修改 xml 或者用來處理 XSLT (不要用在對 XML 只有讀操作的程序中)SAX1.沒有將整個文檔讀入內(nèi)存,內(nèi)存耗費較

20、低2.“ 推模式 ” 允許注冊多種內(nèi)容處理器3 只讀1.沒有內(nèi)建的文檔導航支持2.不能隨機訪問 XML 文檔3.不支持命名空間對 XML 只有讀操作的程序(不要用來操作和修改 XML 文檔)StAX1.有針對簡單和性能的兩種解析模式2.由程序控制解析器,易于支持多輸入( easily supporting multiple inputs )3.強大的過濾功能有利于數(shù)據(jù)檢索4 讀寫1.沒有內(nèi)建的文檔導航支持2.不能隨機訪問 XML 文檔需要對 XML 文檔進行流處理而且支持命名空間的程序(不要用來操作和修改 XML 文檔)19All Rights Reserved, Copyright FFCS

21、 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.選擇解析技術(shù)為了比較這五種方式在解析XML文檔時的性能表現(xiàn),創(chuàng)建了三個不同大小的XML文檔:(100KB)、 (1MB)、(10MB)。分別用以上解析方式對這三個XML進行解析,然后打印出所有的用戶信息,并分別計算它們所用的時間。測試代碼會在文章后面的附件中給出,這里只比較它們的耗時。 由上面的測試結(jié)果可以看出,性能表現(xiàn)最好的是SAX,其次是StAX Stream和StAX Event,DOM和DOM4J也有著不錯的表現(xiàn)。性

22、能最差的是JDOM。所以如果你的應(yīng)用程序?qū)π阅艿囊蠛芨?,SAX當然是首選。如果你需要訪問和控制任意數(shù)據(jù)的功能,DOM是個很好的選擇,而對Java開發(fā)人員來講,DOM4J是更好的選擇。 如果只需要做XML文檔解析的話,綜合性能、易用性、面向?qū)ο筇卣鞯雀鞣矫鎭砗饬?,StAX Event無疑是最好的選擇。 單位:s(秒) 100KB 1MB 10MB DOM 0.146s0.469s 5.876sSAX 0.110s0.328s 3.547sJDOM0.172s0.756s45.447sDOM4J 0.161s0.422s5.103sStAX Stream 0.093s0.334s 3.553sS

23、tAX Event 0.131s0.359s 3.641s 20All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.主流接口技術(shù)123XML解析技術(shù)Webservice介紹內(nèi)容提要內(nèi)容提要4Webservice框架21All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communi

24、cation Software Co., Ltd.WebServiceWebService簡介簡介Webservice是描述一些操作(利用標準化的 XML 消息傳遞機制可以通過網(wǎng)絡(luò)訪問這些操作)的接口。存在于互聯(lián)網(wǎng)當中的組件,具有獨立性,跨平臺和技術(shù),通過URL進行定位調(diào)用Webservice體系結(jié)構(gòu)基于三種角色(服務(wù)提供者、服務(wù)注冊中心和服務(wù)請求者)之間的交互。交互涉及發(fā)布、查找和綁定操作。22All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communicati

25、on Software Co., Ltd.WebService的功能WebService是一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術(shù)所謂遠程調(diào)用,就是一臺計算機a上的一個程序可以調(diào)用到另外一臺計算機b上的一個對象的方法,譬如,銀聯(lián)提供給商場的pos刷卡系統(tǒng)(采用交互提問的方式來加深大家對此技術(shù)的理解)。遠程調(diào)用技術(shù)有什么用呢?商場的POS機轉(zhuǎn)賬調(diào)用的轉(zhuǎn)賬方法的代碼是在銀行服務(wù)器上,還是在商場的pos機上呢?什么情況下可能用到遠程調(diào)用技術(shù)呢?例如,amazon,天氣預(yù)報系統(tǒng),淘寶網(wǎng),校內(nèi)網(wǎng),百度等把自己的系統(tǒng)服務(wù)以webservice服務(wù)的形式暴露出來,讓第三方網(wǎng)站和程序可以調(diào)用這些服務(wù)功能,

26、這樣擴展了自己系統(tǒng)的市場占有率,往大的概念上吹,就是所謂的SOA應(yīng)用。所謂跨編程語言和跨操作平臺,就是說服務(wù)端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫,反之亦然!跨操作系統(tǒng)平臺則是指服務(wù)端程序和客戶端程序可以在不同的操作系統(tǒng)上運行。除了WebService外,常見的遠程調(diào)用技術(shù)還有RMI(Remote method invoke)和CORBA,由于WebService的跨平臺和跨編程語言特點,因此比其他兩種技術(shù)應(yīng)用更為廣泛,但性能略低。23All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(

27、FFCS)Fujian Fujitsu Communication Software Co., Ltd.WebService的調(diào)用原理WebService使用SOAP協(xié)議實現(xiàn)跨編程語言和跨操作系統(tǒng)平臺WebService采用HTTP協(xié)議傳輸數(shù)據(jù),采用XML格式封裝數(shù)據(jù)(即XML中說明調(diào)用遠程服務(wù)對象的哪個方法,傳遞的參數(shù)是什么,以及服務(wù)對象的返回結(jié)果是什么)。WebService通過HTTP協(xié)議發(fā)送請求和接收結(jié)果時,發(fā)送的請求內(nèi)容和結(jié)果內(nèi)容都采用XML格式封裝,并增加了一些特定的HTTP消息頭,以說明HTTP消息的內(nèi)容格式,這些特定的HTTP消息頭和XML內(nèi)容格式就是SOAP協(xié)議協(xié)議(simp

28、le object access protocol,簡單對象訪問協(xié)議) 。SOAP協(xié)議 = HTTP協(xié)議 + XML數(shù)據(jù)格式 SOAP協(xié)議是基于HTTP協(xié)議的,兩者的關(guān)系就好比高速公路是基于普通公路改造的,在一條公路上加上隔離欄后就成了高速公路。商店的服務(wù)員只要收到了錢就給客戶提供貨物,商店服務(wù)員不用關(guān)心客戶是什么性質(zhì)的人,客戶也不用關(guān)心商店服務(wù)員是什么性質(zhì)的人。同樣, WebService客戶端只要能使用HTTP協(xié)議把遵循某種格式的XML請求數(shù)據(jù)發(fā)送給WebService服務(wù)器, WebService服務(wù)器再通過HTTP協(xié)議返回遵循某種格式的XML結(jié)果數(shù)據(jù)就可以了,WebService客戶端

29、與服務(wù)器端不用關(guān)心對方使用的是什么編程語言。HTTP協(xié)議和XML是被廣泛使用的通用技術(shù),各種編程語言對HTTP協(xié)議和XML這兩種技術(shù)都提供了很好的支持,WebService客戶端與服務(wù)器端使用什么編程語言都可以完成SOAP的功能,所以,WebService很容易實現(xiàn)跨編程語言,跨編程語言自然也就跨了操作系統(tǒng)平臺。24All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.WebService框架的底層實現(xiàn)原理

30、各類WebService框架的本質(zhì)就是一個大大的Servlet,當遠程調(diào)用客戶端給它通過http協(xié)議發(fā)送過來soap格式的請求數(shù)據(jù)時,它分析這個數(shù)據(jù),就知道要調(diào)用哪個java類的哪個方法,于是去查找或創(chuàng)建這個對象,并調(diào)用其方法,再把方法返回的結(jié)果包裝成soap格式的數(shù)據(jù),通過http響應(yīng)消息回給客戶端。25All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.WebService的工作過程UDDI注冊中心注冊

31、中心天氣天氣WebServiceWebService消費者消費者1 創(chuàng)建Web Service, 定義WSDL; 部署Web Service, URI標識;股票股票WebService2 把自己注冊到UDDI via SOAPWebService消費者消費者3 查找Web Service via SOAP4 使用Web Service via SOAP(替代2和3)直接告知WSDL的URLWebService提供者提供者26All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujit

32、su Communication Software Co., Ltd.WebService的開發(fā)應(yīng)用 WebService開發(fā)可以分為服務(wù)器端開發(fā)和客戶端開發(fā)兩個方面:把公司內(nèi)部系統(tǒng)的業(yè)務(wù)方法發(fā)布成WebService服務(wù),供遠程合作單位和個人調(diào)用。(借助一些WebService框架可以很輕松地把自己的業(yè)務(wù)對象發(fā)布成WebService服務(wù),Java方面的典型WebService框架包括:axis,xfire,cxf等,java ee服務(wù)器通常也支持發(fā)布WebService服務(wù),例如JBoss。這框架應(yīng)用不是學習的重點,看看相關(guān)的技術(shù)手冊都很輕松地掌握,關(guān)鍵還是要了解WebService的工作

33、原理。)調(diào)用別人發(fā)布的WebService服務(wù),大多數(shù)人從事的開發(fā)都屬于這個方面,例如,調(diào)用天氣預(yù)報WebService服務(wù)。(使用廠商的WSDL2Java之類的工具生成靜態(tài)調(diào)用的代理類代碼;使用廠商提供的客戶端編程API類;使用SUN公司早期標準的jax-rpc開發(fā)包;使用SUN公司最新標準的jax-ws開發(fā)包。)27All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.WebService的客戶端編程原理

34、 我們給這各類WebService客戶端API傳遞wsdl文件的url地址,這些API就會創(chuàng)建出底層的代理類,我調(diào)用這些代理,就可以訪問到webservice服務(wù)。代理類把客戶端的方法調(diào)用變成soap格式的請求數(shù)據(jù)再通過HTTP協(xié)議發(fā)出去,并把接收到的soap數(shù)據(jù)變成返回值返回。28All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd. WebService優(yōu)缺點 WebService優(yōu)點 Webservic

35、e的互操作性,平臺無關(guān)性。 Webservice的SOAP協(xié)議是基于XML和HTTP這些業(yè)界的標準的,得到了所有的重要公司的支持。 由于使用了SOAP,數(shù)據(jù)是以ASCII文本的方式而非二進制傳輸,調(diào)試很方便;并且由于這樣,它的數(shù)據(jù)容易通過防火墻,不需要防火墻為了程序而單獨開一個“漏洞”。 WebService實現(xiàn)的技術(shù)難度要比CORBA和DCOM小得多。要實現(xiàn)B2B集成,EDI比較完善與比較復雜;而用WebService則可以低成本的實現(xiàn),小公司也可以用上。 在C/S的程序中,WebService可以實現(xiàn)網(wǎng)頁無整體刷新的與服務(wù)器打交道并取數(shù)。 WebService缺點 WebService使用

36、了XML對數(shù)據(jù)封裝,會造成大量的數(shù)據(jù)要在網(wǎng)絡(luò)中傳輸。 WebService規(guī)范沒有規(guī)定任何與實現(xiàn)相關(guān)的細節(jié),包括對象模型、編程語言,這一點,它不如CORBA。 29All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd. WEB SERVICE 術(shù)語術(shù)語30All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fuji

37、an Fujitsu Communication Software Co., Ltd.XML XML(eXtensible Markup Language) 擴展標記語言 XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立。 雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。 31All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.X

38、SD XSD是 XML結(jié)構(gòu)定義 ( XML Schemas Definition )。 XSD是DTD的替代品。描述了XML文檔的結(jié)構(gòu)。 可以用一個指定的XSD來驗證某個XML文檔,以檢查該XML文檔是否符合其要求。 文檔設(shè)計者可以通過XSD指定一個XML文檔所允許的結(jié)構(gòu)和內(nèi)容,并可據(jù)此檢查一個XML文檔是否是有效的。 XSD本身是一個XML文檔,它符合XML語法結(jié)構(gòu)??梢杂猛ㄓ玫腦ML解析器解析它。 一個XSD會定義:文檔中出現(xiàn)的元素、文檔中出現(xiàn)的屬性、子元素、子元素的數(shù)量、子元素的順序、元素是否為空、元素和屬性的數(shù)據(jù)類型、元素或?qū)傩缘哪J和固定值。 XSD是DTD替代者的原因, 一是據(jù)將來

39、的條件可擴展, 二是比DTD豐富和有用, 三是用XML書寫, 四是支持數(shù)據(jù)類型, 五是支持命名空間。 XSD文件的后綴名為.xsd。 32All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.SOAP SOAP(Simple Object Access Protocol)簡單對象訪問協(xié)議。 SOAP是一種輕量的、簡單的、基于 XML 的協(xié)議,它被設(shè)計成在Web 上交換結(jié)構(gòu)化的和固化的信息。 SOAP 可以和現(xiàn)

40、存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議( HTTP),簡單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴充協(xié)議(MIME)。它還支持從消息系統(tǒng)到遠程過程調(diào)用(RPC)等大量的應(yīng)用程序。 SOAP 包括三個部分: SOAP 封裝:它定義了一個框架 , 該框架描述了消息中的內(nèi)容是什么,誰應(yīng)當處理它以及它是可選的還是必須的。 SOAP 編碼規(guī)則:它定義了一種序列化的機制,用于交換應(yīng)用程序所定義的數(shù)據(jù)類型的實例。 SOAP RPC 表示:它定義了用于表示遠程過程調(diào)用和應(yīng)答的協(xié)定。 SOAP 消息基本上是從發(fā)送端到接收端的單向傳輸,但它們常常結(jié)合起來執(zhí)行類似于請求 / 應(yīng)答的模式。所有的 SO

41、AP 消息都使用 XML 編碼。一條 SOAP 消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的XML 文檔。 把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及HTTP 的豐富的特征庫的優(yōu)點。在 HTTP 上傳送 SOAP 并不是說 SOAP 會覆蓋現(xiàn)有的 HTTP 語義,而是 HTTP 上的SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作為協(xié)議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應(yīng)答映射到 HTTP 應(yīng)答。然而,在 RPC 上使用 SOAP 并不僅

42、限于 HTTP 協(xié)議綁定。 33All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.WSDLWSDL(webservice description language)是基于XML格式的,它是WebService客戶端和服務(wù)器端都能理解的標準格式,其中描述的信息可以分為what,where,how等部分! 好比我們?nèi)ド痰曩I東西,首先要知道商店里有什么東西可買,然后再來購買,商家的做法就是張貼廣告海報。 Web

43、Service客戶端要調(diào)用一個WebService服務(wù),首先要有知道這個服務(wù)的地址在哪,以及這個服務(wù)里有什么方法可以調(diào)用,所以,WebService務(wù)器端首先要通過一個WSDL文件來說明自己家里有啥服務(wù)可以對外調(diào)用,服務(wù)是什么(服務(wù)中有哪些方法,方法接受的參數(shù)是什么,返回值是什么),服務(wù)的網(wǎng)絡(luò)地址用哪個url地址表示,服務(wù)通過什么方式來調(diào)用。WSDL文件保存在Web服務(wù)器上,通過一個url地址就可以訪問到它??蛻舳艘{(diào)用一個WebService服務(wù)之前,要知道該服務(wù)的WSDL文件的地址。WebService服務(wù)提供商可以通過兩種方式來暴露它的WSDL文件地址: 注冊到UDDI服務(wù)器,以便被人查

44、找 直接告訴給客戶端調(diào)用者,例如,在自己網(wǎng)站給出信息或郵件告訴。34All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.UDDI UDDI(Universal Description, Discovery and Integration)統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議 UDDI是為解決Web服務(wù)的發(fā)布和發(fā)現(xiàn)問題而制訂的新一代基于Internet的電子商務(wù)技術(shù)標準。 包含一組基于Web的、分布式的Web服務(wù)信息注冊

45、中心的實現(xiàn)標準,以及一組使企業(yè)能將自己提供的Web服務(wù)注冊到該中心的實現(xiàn)標準。 35All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.主流接口技術(shù)123XML解析技術(shù)Webservice介紹內(nèi)容提要內(nèi)容提要4Webservice框架36All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujit

46、su Communication Software Co., Ltd.Apache - Axis2(Apache EXtensible Interaction System ) Apache - Axis237All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.Axis2簡介簡介 Apache Axis2 是 Apache Axis SOAP 項目的后繼項目。此項目是 Web 服務(wù)核心引擎的重要改進,目標是

47、成為 Web 服務(wù)和面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)的下一代平臺。作為一個干凈的可擴展的開放源代碼 Web 服務(wù)平臺,它正逐漸受到廣泛的關(guān)注。Axis2 的體系結(jié)構(gòu)高度靈活,支持很多附加功能,如可靠消息傳遞和安全性等。Axis本質(zhì)上就是一個SOAP引擎,提供創(chuàng)建服務(wù)器端、客戶端和網(wǎng)關(guān)SOAP操作的基本框架。AXIS2支持更廣泛的數(shù)據(jù)并對,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定義的數(shù)據(jù)綁定ADB;Axis2支持多語言-除了Java,他還支持C/C+版本;Axis2允許自己作為獨立的應(yīng)用來發(fā)布Web Service,并

48、提供了大量的功能和一個很好的模型,這個模型可以通過它本身的架構(gòu)(modular architecture)不斷添加新的功能。 Axis2 將不會對 Web 服務(wù)概念進行驗證,而將提供更好的 SOAP 處理模型,且與 Axis 1.x 及其他現(xiàn)有 Web 服務(wù)引擎相比,其速度和內(nèi)容方面的性能都得到很大的提高。此外,它還為用戶提供了方便的 API,用于部署服務(wù)、擴展核心功能和新客戶機編程模型?,F(xiàn)在已經(jīng)進入了 Axis2 的時代了。38All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fu

49、jitsu Communication Software Co., Ltd.Axis2體系結(jié)構(gòu) Axis2 具有模塊化體系結(jié)構(gòu),由核心模塊和非核心模塊組成。據(jù)說,Axis2 核心是純 SOAP 處理引擎,并沒有包含 Java API for XML-based RPC (JAX-RPC) 概念作為其核心的一部分。Axis2 體系結(jié)構(gòu)的設(shè)計充分考慮了以下原則: 邏輯和狀態(tài)分離,以提供無狀態(tài)處理機制,因為 Web 服務(wù)是無狀態(tài)的。 所有信息位于一個信息模型中,允許對系統(tǒng)進行掛起和恢復。 能夠在不更改核心體系結(jié)構(gòu)的情況下擴展功能,能以最小或沒有核心更改的情況下直接支持新 Web 服務(wù)規(guī)范。核心組件

50、XML 對象模型 (AXIOM) SOAP 處理模型:處理程序框架 信息處理模型:上下文和描述 其他組件 部署模型 傳輸 客戶機 API 核心生成模型 Axis2 體系結(jié)構(gòu)關(guān)系圖體系結(jié)構(gòu)關(guān)系圖39All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.Axis2主要特性 Axis2 不僅是 Apache 的新 Web 服務(wù)框架。它還體現(xiàn)了從 Axis 1.x 系列獲得的經(jīng)驗和最近兩年在 Web 服務(wù)領(lǐng)域的發(fā)展。

51、推出 Axis2 的主要原因之一是從速度和內(nèi)存方面獲得更好的性能不過還添加了一些新特性和功能。大部分新特性都是為了提高 Axis2 的易用性,并同時保留通過各種方式擴展功能的空間。大部分新功能所添加到的主要領(lǐng)域如下所示: 新 XML 對象模型 (AXIOM) AXIOM 是一個 XML 對象模型,設(shè)計用于提高 XML 處理期間的內(nèi)存使用率和性能,基于 Pull 解析。通過使用 Streaming API for XML (StAX) Pull 解析器,AXIOM(也稱為 OM)可以控制解析過程,以提供延遲構(gòu)建支持。延遲構(gòu)建是指 AXIOM 不完全構(gòu)建對象模型,模型的其余部分基于用戶的需求構(gòu)建。

52、 基于消息傳遞的核心 Axis2 是一個純 SOAP 處理器,并不依賴于任何 Java 特定的規(guī)范。例如,JAX-WS 將作為 Axis2 上的一個層實現(xiàn),而不會進入核心部分中。40All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.Axis2主要特性經(jīng)過改進的部署模型 Axis2 現(xiàn)在支持將服務(wù)熱部署到 Axis2 引擎中。這就允許用戶在不用重新啟動服務(wù)器的情況下部署服務(wù)。服務(wù)應(yīng)該存檔為 ZIP 文件,且

53、在文件名中使用 .aar(Axis2 存檔,Axis2 archive)作為擴展名。 可插入模塊體系結(jié)構(gòu)模塊為服務(wù)器提供了一個擴展機制。Axis2 中的每個模塊都包含一組相關(guān)的處理程序。例如,WS-Addressing 模塊將包含一組為 Axis2 引擎提供 WS-Addressing 支持的處理程序。Axis2 管理員可以下載 WS-Addressing 模塊,并將其部署到 Axis2 引擎中,從而為 Axis2 引擎添加 WS-Addressing 支持。module.xml 文件包含指定處理程序應(yīng)屬于哪個管道和階段的規(guī)則。 可插入數(shù)據(jù)綁定 在純 SOAP 級別上工作有時候比較麻煩,因此大

54、部分用戶更喜歡使用 Java 代碼,而讓框架處理 XML 和 Java 代碼間的轉(zhuǎn)換。這稱為數(shù)據(jù)綁定。有很多數(shù)據(jù)綁定框架可用,用戶會因為各種不同的原因而偏好使用某個框架。Axis2 支持目前可用的大部分數(shù)據(jù)綁定框架,而且沒有任何限制。例如,Axis2 內(nèi)置了對 XMLBeans、JAXB 和 JiBX 的支持,用戶可以選擇使用其中任何一個。任何其他數(shù)據(jù)綁定框架都可以方便地插入。 41All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Soft

55、ware Co., Ltd.Axis2主要特性 新客戶機 API Axis2 可以采用兩種方式調(diào)用 Web 服務(wù)。ServiceClient API 是最簡單的方法,但為用戶提供的控制較少。OperationClient API 在調(diào)用期間提供了大量的控制。這兩個 API 都內(nèi)置了基本 In-Out 和 In-Only MEP。Axis2 現(xiàn)在同時支持阻塞和非阻塞調(diào)用模型。非阻塞調(diào)用在設(shè)計用戶界面時以及服務(wù)調(diào)用非常費時的情況下很有用。 REST 支持隨著 Web 2.0 的推出,代表性狀態(tài)傳輸(REpresentational State Transfer,REST)得到了認可。一段時間以來,

56、REST 陣營和 SOAP 陣營一直在就使用哪個規(guī)范進行激烈的爭論。我們嘗試在 Axis2 中同時支持二者,采用了 WSDL 2.0 中將 REST 與 Web 服務(wù)結(jié)合的工作成果。在 Axis2 中,用戶可以調(diào)用 Axis2 引擎中采用 REST 方式部署的所有 Web 服務(wù),但受到 WSDL 2.0 HTTP Bindings 規(guī)范中定義的約束的限制。 42All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., L

57、td. sun JAX-WS sun JAX-WS43All Rights Reserved, Copyright FFCS 2011 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(FFCS)Fujian Fujitsu Communication Software Co., Ltd.概述概述 JAX-WS2.0 (JSR 224)是Sun新的web services協(xié)議棧,是一個完全基于標準的實現(xiàn)。在binding層,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing層,使用的是the Streami

58、ng API for XML (StAX, JSR 173),同時它還完全支持schema規(guī)范。 Sun最開始的web services的實現(xiàn)是JAX-RPC 1.1 (JSR 101)。這個實現(xiàn)是基于Java的RPC,并不完全支持schema規(guī)范,同時沒有對Binding和Parsing定義標準的實現(xiàn)。 JAX-WS規(guī)范是一組XML web services的JAVA API。JAX-WS允許開發(fā)者可以選擇RPC-oriented或者message-oriented 來實現(xiàn)自己的web services。 在 JAX-WS中,一個遠程調(diào)用可以轉(zhuǎn)換為一個基于XML的協(xié)議例如SOAP。在使用JA

59、X-WS過程中,開發(fā)者不需要編寫任何生成和處理SOAP消息的代碼。JAX-WS的運行時實現(xiàn)會將這些API的調(diào)用轉(zhuǎn)換成為對應(yīng)的SOAP消息。 在服務(wù)器端,用戶只需要通過Java語言定義遠程調(diào)用所需要實現(xiàn)的接口SEI (service endpoint interface),并提供相關(guān)的實現(xiàn),通過調(diào)用JAX-WS的服務(wù)發(fā)布接口就可以將其發(fā)布為WebService接口。 在客戶端,用戶可以通過JAX-WS的API創(chuàng)建一個代理(用本地對象來替代遠程的服務(wù))來實現(xiàn)對于遠程服務(wù)器端的調(diào)用。 當然 JAX-WS 也提供了一組針對底層消息進行操作的API調(diào)用,你可以通過Dispatch 直接使用SOAP消息或

60、XML消息發(fā)送請求或者使用Provider處理SOAP或XML消息。 通過web service所提供的互操作環(huán)境,我們可以用JAX-WS輕松實現(xiàn)JAVA平臺與其他編程環(huán)境(.net等)的互操作。 JAX-WS(JSR-224) 是Java Architecture for XML Web Services的縮寫,簡單說就是一種用Java和XML開發(fā)Web Services應(yīng)用程序的框架, 目前版本是2.0, 它是JAX-RPC 1.1的后續(xù)版本, J2EE 1.4帶的就是JAX-RPC1.1, 而Java EE 5里面包括了JAX-WS 2.0,但為了向后兼容,仍然支持JAX-RPC. 現(xiàn)在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論