我的Java路上那些事兒

          快樂(lè)成長(zhǎng)
          posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          關(guān)于Hessian協(xié)議

          有個(gè)同行問(wèn)了這個(gè)問(wèn)題,問(wèn)題請(qǐng)參見(jiàn)下面鏈接
          http://www.3atesting.com/bbs/vie ... &extra=page%3D1
          程序登陸和我們常用的http協(xié)議相似,都是通過(guò)網(wǎng)頁(yè)進(jìn)行操作!但是實(shí)際上他的應(yīng)用是采用Hessian協(xié)議進(jìn)行交互!所以看到腳本中很多都是二進(jìn)制代碼!那么什么是Hessian協(xié)議呢
          目前,Web服務(wù)技術(shù)是解決異構(gòu)平臺(tái)系統(tǒng)的集成及互操作問(wèn)題的主流技術(shù)[1]。它所基于的XML已經(jīng)是Internet上交換數(shù)據(jù)的實(shí)際標(biāo)準(zhǔn),基于通用的進(jìn)程間通信協(xié)議和網(wǎng)絡(luò)傳輸協(xié)議屏蔽平臺(tái)的差異,可以將各種異構(gòu)環(huán)境下的通信及調(diào)用請(qǐng)求均統(tǒng)一為標(biāo)準(zhǔn)的Web服務(wù)格式[3]。
          但是由于SOAP協(xié)議的結(jié)構(gòu)問(wèn)題會(huì)使封裝的數(shù)據(jù)膨脹數(shù)倍。當(dāng)傳輸數(shù)據(jù)量比較小時(shí),問(wèn)題不是那么明顯,但是當(dāng)進(jìn)行大數(shù)據(jù)量傳輸時(shí)就會(huì)導(dǎo)致Web服務(wù)的傳輸性能在實(shí)際運(yùn)用中降低了很多。這對(duì)于經(jīng)常有大數(shù)據(jù)量數(shù)據(jù)交換的應(yīng)用系統(tǒng)來(lái)說(shuō)是不適用的。
          Caucho Technology公司制定的HBWSP(Hessian Binary Web Service Protocol)[2]在這方面的有所突破。Hessian協(xié)議和web service常用的SOAP協(xié)議類(lèi)似,也是將協(xié)議報(bào)文封裝在HTTP封包中,通過(guò)HTTP信道進(jìn)行傳輸?shù)摹R虼薍essian協(xié)議具有與SOAP協(xié)議同樣的優(yōu)點(diǎn),即傳輸不受防火墻的限制(防火墻通常不限制HTTP信道)。Hessian協(xié)議的優(yōu)勢(shì)在于:它把本地格式的數(shù)據(jù)編碼為二進(jìn)制數(shù)據(jù),僅用一個(gè)字符作為結(jié)構(gòu)化標(biāo)記,HBWSP封裝后的數(shù)據(jù)增量明顯小于SOAP封裝后的數(shù)據(jù)增量。并且相對(duì)于SOAP,Hessian協(xié)議的外部數(shù)據(jù)表示有3個(gè)顯著的優(yōu)勢(shì):
          1)采用簡(jiǎn)單的結(jié)構(gòu)化標(biāo)記。簡(jiǎn)單的結(jié)構(gòu)化標(biāo)記減少了編碼、解碼操作對(duì)內(nèi)存的占用量。編碼時(shí),只需寫(xiě)少量的數(shù)據(jù),就可以標(biāo)記結(jié)構(gòu);解碼時(shí),只需讀少量的數(shù)據(jù)就可以確定結(jié)構(gòu)。而且,簡(jiǎn)單的結(jié)構(gòu)化標(biāo)記減少了編碼后的數(shù)據(jù)增量。
          2)采用定長(zhǎng)的字節(jié)記錄值。用定長(zhǎng)的字節(jié)記錄值,解碼時(shí),就可以使用位操作從固定長(zhǎng)度的位獲得值。這樣不僅操作簡(jiǎn)單,而且可以獲得較高的性能。
          3)采用引用取代重復(fù)遇到的對(duì)象。使用引用取代重復(fù)遇到的對(duì)象可以避免對(duì)重復(fù)對(duì)象的編碼,而且也減少了編碼后的數(shù)據(jù)量。
          因此使用Hessian協(xié)議傳輸數(shù)據(jù)量比SOAP協(xié)議要小得多。實(shí)踐證明,傳輸同樣的對(duì)象Hessian協(xié)議傳輸?shù)臄?shù)據(jù)量比SOAP協(xié)議低一個(gè)數(shù)量級(jí)。因此Hessian協(xié)議比SOAP協(xié)議更適用于分布式應(yīng)用系統(tǒng)間大數(shù)據(jù)量的數(shù)據(jù)交換。
          4.2 Hessian協(xié)議的實(shí)現(xiàn)構(gòu)架
          Hessian協(xié)議的實(shí)現(xiàn)構(gòu)架如圖3所示:為了實(shí)現(xiàn)Hessian 構(gòu)架,設(shè)計(jì)了下列組件:編碼組件、解碼組件、通信組件、報(bào)告故障組件、代理組件、調(diào)用服務(wù)過(guò)程組件。


          圖3 Hessian協(xié)議的實(shí)現(xiàn)構(gòu)架


          首先客戶端發(fā)出本地請(qǐng)求,代理組件響應(yīng)請(qǐng)求依據(jù)服務(wù)接口,生成客戶端存根,并調(diào)用編碼組件對(duì)本地請(qǐng)求進(jìn)行基于Hessian Binary Web Service Protocol標(biāo)準(zhǔn)的二進(jìn)制編碼。然后調(diào)用通信組件將請(qǐng)求發(fā)送給服務(wù)器端。服務(wù)器端通信組件接收到請(qǐng)求后把請(qǐng)求轉(zhuǎn)發(fā)給調(diào)用服務(wù)過(guò)程組件,調(diào)用服務(wù)過(guò)程組件會(huì)首先調(diào)用解碼組件,得到過(guò)程標(biāo)識(shí),將過(guò)程標(biāo)識(shí)轉(zhuǎn)給服務(wù)器端存根,并依據(jù)部署文件和客戶端的請(qǐng)求加載服務(wù)過(guò)程的實(shí)現(xiàn)類(lèi)。然后根據(jù)過(guò)程標(biāo)識(shí)、過(guò)程參數(shù)調(diào)用服務(wù)過(guò)程。最后調(diào)用編碼組件將響應(yīng)結(jié)果進(jìn)行編碼并通過(guò)通信組件返回給客戶端。
          當(dāng)數(shù)據(jù)傳輸、通信發(fā)生錯(cuò)誤的時(shí)候就需要啟用報(bào)告故障組件,它可以以異常的形式,報(bào)告發(fā)送端、接收端、或者網(wǎng)絡(luò)連接發(fā)生的故障,并把錯(cuò)誤記錄以日志的方式記錄下來(lái)保存在文件中,以備日后查閱。
          4.3 實(shí)現(xiàn)結(jié)構(gòu)
          針對(duì)教務(wù)管理系統(tǒng)互聯(lián)網(wǎng)傳輸存在的一系列問(wèn)題,基于互聯(lián)網(wǎng)的主體數(shù)據(jù)平臺(tái)采用基于HBWSP的輕量級(jí)跨平臺(tái)通信技術(shù)實(shí)現(xiàn)數(shù)據(jù)交換,如圖4所示。在客戶端,應(yīng)用服務(wù)器從主題數(shù)據(jù)服務(wù)層中抽取數(shù)據(jù),并按著HBWSP的外部數(shù)據(jù)表示對(duì)本地格式數(shù)據(jù)進(jìn)行編碼。然后通過(guò)internet網(wǎng)進(jìn)行傳輸,在服務(wù)器端,數(shù)據(jù)交換的服務(wù)負(fù)責(zé)按照HBWSP的外部數(shù)據(jù)表示對(duì)接收到的數(shù)據(jù)進(jìn)行解碼,然后再對(duì)數(shù)據(jù)進(jìn)行分析、處理后把數(shù)據(jù)插入到服務(wù)器端的主題數(shù)據(jù)服務(wù)層中。



          圖4非持久同步方式的數(shù)據(jù)交換解決方案


          該解決方案的主要特點(diǎn)包括:
          1)采用了HBWSP的二進(jìn)制編碼方式解決了異地、異構(gòu)平臺(tái)系統(tǒng)的通信問(wèn)題,并使數(shù)據(jù)交互具有了一定的實(shí)時(shí)性。
          2)由于HBWSP簡(jiǎn)潔的編碼方式以及編碼、解碼性能高等特點(diǎn)使數(shù)據(jù)交換具有交換GB級(jí)數(shù)據(jù)的能力。
          3)采用了HBWSP的二進(jìn)制編碼方式有助于縮短整個(gè)數(shù)據(jù)交換所需要的時(shí)間。其編碼性能高的特點(diǎn),有助于提高編碼速度,減少發(fā)送方編碼本地?cái)?shù)據(jù)的時(shí)間。其解碼性能高的特點(diǎn),可以減少接收方解碼、重構(gòu)本地?cái)?shù)據(jù)的時(shí)間。從而減少了數(shù)據(jù)交換的響應(yīng)時(shí)間。
          4)采用了HBWSP的二進(jìn)制編碼方式和數(shù)據(jù)分批傳送技術(shù)有助于充分利用網(wǎng)絡(luò)狀況良好的時(shí)段。可以在網(wǎng)絡(luò)狀況良好的時(shí)段盡可能多的完成數(shù)據(jù)交換。
          5)采用了斷點(diǎn)續(xù)傳技術(shù),保證了當(dāng)網(wǎng)絡(luò)斷連或響應(yīng)超時(shí)導(dǎo)致正在進(jìn)行的數(shù)據(jù)交換被中斷,在故障修復(fù)后仍然可以從中斷處開(kāi)始,繼續(xù)完成上次沒(méi)有完成的數(shù)據(jù)交換的能力。斷點(diǎn)的粒度可以調(diào)節(jié),可以是一條數(shù)據(jù),也可以是多條數(shù)據(jù)。
          6)采用了事務(wù)保護(hù)機(jī)制,把每批要傳輸?shù)臄?shù)據(jù)定義為一個(gè)事務(wù),本批要傳輸?shù)臄?shù)據(jù)的事務(wù)完整性不依賴于已經(jīng)完成的各批數(shù)據(jù),本批數(shù)據(jù)傳輸發(fā)生錯(cuò)誤也不會(huì)對(duì)已經(jīng)完成的各批數(shù)據(jù)造成影響。采用這種方法,可以在數(shù)據(jù)交換過(guò)程被中斷的情況下保證數(shù)據(jù)交換事務(wù)的完整性。

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 潜江市| 河东区| 法库县| 民和| 贺兰县| 嘉祥县| 连云港市| 泽库县| 浏阳市| 舒兰市| 义马市| 称多县| 图片| 东台市| 闽侯县| 巫山县| 大邑县| 新竹县| 天水市| 嘉定区| 克东县| 新干县| 依安县| 屯留县| 曲周县| 阿合奇县| 新疆| 阿巴嘎旗| 松原市| 庆阳市| 西平县| 遂昌县| 中西区| 长寿区| 乌审旗| 长垣县| 深州市| 丹阳市| 黎川县| 祁连县| 锡林浩特市|