999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

REST服務(wù)資源多重表述在資源獲取時(shí)的性能比較

2011-04-20 07:27:18鄭燦
關(guān)鍵詞:資源服務(wù)

鄭燦

(1.上海電力學(xué)院校長辦公室,上海200090;2.同濟(jì)大學(xué)軟件工程學(xué)院,上海 200092)

表述性狀態(tài)轉(zhuǎn)移(REpresentational State Transfer,REST)是一種分布式超媒體系統(tǒng)的軟件架構(gòu)風(fēng)格,它由HTTP協(xié)議的關(guān)鍵作者之一Roy Fielding博士在2000年的博士論文中提出并加以定義[1].REST從資源的角度來觀察整個(gè)應(yīng)用,分布在系統(tǒng)各處的資源由URI統(tǒng)一標(biāo)識,而客戶端則通過標(biāo)準(zhǔn)的HTTP方法來訪問資源.資源有多種表述方式,客戶端對資源的訪問使應(yīng)用改變了狀態(tài),隨著訪問資源的不斷表述,應(yīng)用也不斷地轉(zhuǎn)變狀態(tài),即所謂“表述性狀態(tài)轉(zhuǎn)移”.

文獻(xiàn)[2]提到了REST的5個(gè)關(guān)鍵原則,即:為所有資源定義標(biāo)識;將所有資源鏈接在一起;使用標(biāo)準(zhǔn)方法;資源多重表述;無狀態(tài)通信.具備了這5個(gè)原則的Web服務(wù)即可稱為Restful的Web服務(wù).

資源多重表述是REST的基本原則之一,它將資源用多種數(shù)據(jù)格式進(jìn)行表述.常用的數(shù)據(jù)格式有HTML,XML,JSON等.采用資源多重表述可以滿足不同的客戶端應(yīng)用的需要,如采用HTML和XML作為資源表述方式,資源就可以被標(biāo)準(zhǔn)瀏覽器所使用.此外,不同的資源表述方式在資源獲取的性能上存在差異[3-5].本文主要通過算法比較了不同資源表述方式在資源獲取時(shí)的性能差異.

本文基于RESTEasy設(shè)計(jì)開發(fā)了一個(gè)書店Rest服務(wù).對書店的資源(每一本書)都采用了資源多重表述方式,然后在獲取資源時(shí)比較不同方式下所耗費(fèi)的時(shí)間和空間.這些資源表述方式主要有以下幾種:XML(Extensible Markup Language);Atom;JSON(JavaScript Object Notation); Jackson JSON;YAML(YAML Ain’t Markup Language);Fastinfoset;KRYO;Hessian;Protobuf.

1 幾種資源表述方式

(1)XML是一種可擴(kuò)展標(biāo)記語言,作為Internet環(huán)境中跨平臺、依賴于內(nèi)容的技術(shù),是處理結(jié)構(gòu)化文檔信息的常用工具.XML作為一種簡單的數(shù)據(jù)存儲語言,可以使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立.雖然XML占用的空間比二進(jìn)制數(shù)據(jù)更多,但XML極其簡單,易于掌握和使用.

(2)Atom是一種基于XML用來聯(lián)合內(nèi)容的文件格式,常用作經(jīng)常更新的博客和網(wǎng)站的統(tǒng)一發(fā)布標(biāo)準(zhǔn).

(3)JSON是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成.它是基于JavaScript Programming Language,Standard ECMA-262 3rd Edition-December 1999的一個(gè)子集.JSON采用完全獨(dú)立于語言的文本格式,是一種理想的數(shù)據(jù)交換語言.

(4)YAML是一種用來表達(dá)資料序列的編程語言.與XML不同,這種語言以數(shù)據(jù)為中心,而不是以標(biāo)記語言為重點(diǎn).它具有可讀性好、與腳本語言的交互性好、信息模型一致、易于實(shí)現(xiàn)等優(yōu)點(diǎn).

(5)Fastinfoset即快速信息集,是一種為XML信息集提供二進(jìn)制編碼來替代XML的技術(shù)框架.它提供更優(yōu)于基于文本的XML序列化性能和大小的序列化格式.

(6)KRYO是一個(gè)快速高效的Java對象網(wǎng)絡(luò)序列化框架,其主要特點(diǎn)是性能高效、易用,可以采用序列化對象,使其進(jìn)入文件、數(shù)據(jù)庫或網(wǎng)絡(luò).

(7)Hessian是一種用于連接Web Services的簡單二進(jìn)制協(xié)議,可使各種Web Services不需要復(fù)雜的框架就可以做到無縫連接.由于它是二進(jìn)制協(xié)議,故其發(fā)送或接收二進(jìn)制數(shù)據(jù)時(shí)不需要擴(kuò)展任何協(xié)議.

(8)Protobuf是用于結(jié)構(gòu)化數(shù)據(jù)序列化的靈活、高效、自動的方法,比XML更小、更快,也更簡單.Protobuf的使用者可以自定義數(shù)據(jù)結(jié)構(gòu),然后使用代碼生成器生成的代碼來讀寫這個(gè)數(shù)據(jù)結(jié)構(gòu),甚至可以在無需重新部署程序的情況下更新數(shù)據(jù)結(jié)構(gòu).Google公司內(nèi)部的RPC協(xié)議和文件格式基本都使用了Protobuf.

2 REST服務(wù)設(shè)計(jì)與資源獲取性能的比較算法

2.1 書店REST服務(wù)設(shè)計(jì)

本文所設(shè)計(jì)的書店REST服務(wù),涉及的資源對象類見圖1.每本書都有一系列的信息字段,如書號、書名、作者、價(jià)格、出版時(shí)間、簡介等,其中作者又包括編號、姓名、年齡和出生日期等信息.一系列的書組成書列.本文資源獲取的單元主要為書列,以獲取100本、1 000本和10 000本書的書列為例,比較其資源獲取時(shí)間和空間耗費(fèi).

圖1 資源對象類示意

本文主要使用RESTEasy框架來開發(fā)此書店REST應(yīng)用.RESTEasy框架提供了豐富的資源表述方式,如XML,JSON,YAML,F(xiàn)astinfoset,Atom等,本文在使用上述框架自帶的資源表述方式的供應(yīng)器(Provider)以外,還擴(kuò)展了幾種資源表述方式供應(yīng)器,如KRYO,Hessian,Protobuf,使資源表述方式更加豐富.這些資源表述方式都是二進(jìn)制的序列化格式,性能較為優(yōu)異,在業(yè)界較為流行,應(yīng)用也很普遍.

2.2 資源獲取性能的比較算法

本文所采用的資源獲取性能比較算法主要依據(jù)時(shí)間耗費(fèi)和空間耗費(fèi)兩個(gè)指標(biāo),具體比較算法為:計(jì)算取得n本書的書列時(shí),使用各種資源表述方式所需要的資源獲取時(shí)間和占用空間.在設(shè)置HTTPGET方法無緩存的情況下重復(fù)100次,然后計(jì)算100次資源獲取的平均時(shí)間和占用空間的平均值,并進(jìn)行比較.本文共比較了3組資源表述方式,n分別為100,1 000,10 000.需要注意的是,如設(shè)置資源獲取無緩存,則GET方法的響應(yīng)必須要設(shè)置NoCache,以避免緩存對資源獲取造成的影響.

3 結(jié)果比較

表1為獲取100本、1 000本和10 000本書的書列時(shí)各種資源表述方式所需要的時(shí)間值,該時(shí)間值是指100次資源獲取時(shí)間的平均值.

表1 時(shí)間耗費(fèi)數(shù)據(jù)結(jié)果統(tǒng)計(jì)ms

表2為獲取100本、1 000本和10 000本書的書列時(shí)各種資源表述方式所需要占用的空間耗費(fèi)數(shù)據(jù),這個(gè)空間指的是100次資源獲取所占用空間大小的平均值.

表2 空間耗費(fèi)數(shù)據(jù)結(jié)果統(tǒng)計(jì)字節(jié)

由表1和表2可知,采用不同的資源表述方式,其時(shí)間耗費(fèi)和空間耗費(fèi)均存在差異.

(1)在獲取100本書的資源時(shí),時(shí)間耗費(fèi)從少到多依次為:Kryo,Hessian,Protobuf,F(xiàn)astinfoset,JSON(jettison),Jackson,Atom,XML,YAML.空間耗費(fèi)從少到多依次為:Hessian,Kryo,Protobuf,F(xiàn)astinfoset,Jackson,JSON(jettison),XML,Atom,YAML.

(2)在獲取1 000本書的資源時(shí),時(shí)間耗費(fèi)從少到多依次為:Hessian,Kryo,F(xiàn)astinfoset,Protobuf,Jackson,JSON(jettison),Atom,XML,YAML.空間耗費(fèi)從少到多依次為:Hessian,Kryo,Protobuf,F(xiàn)astinfoset,JSON(jettison),Jackson,Atom,XML,YAML.

(3)在獲取10 000本書的資源時(shí),時(shí)間耗費(fèi)從少到多依次為:Hessian,Kryo,F(xiàn)astinfoset,Jackson,JSON(jettison),Protobuf,Atom,XML,YAML.空間耗費(fèi)從少到多依次為:Hessian,Kryo,Protobuf,F(xiàn)astinfoset,JSON(jettison),Jackson,Atom,XML,YAML.

將所有時(shí)間耗費(fèi)數(shù)據(jù)匯集在一起,見圖2.將所有空間耗費(fèi)數(shù)據(jù)匯集在一起,見圖3.

圖2 資源獲取時(shí)間耗費(fèi)對比

圖3 資源獲取空間耗費(fèi)對比

由圖2和圖3可知,采用不同的資源表述方式,其資源獲取時(shí)的時(shí)間耗費(fèi)和空間耗費(fèi)均存在差異.在本文所采用的資源和算法實(shí)現(xiàn)下,以二進(jìn)制字節(jié)碼作為序列化結(jié)果的資源表述方式(如Hessian,Kryo,F(xiàn)astinfoset,Protobuf),其資源獲取時(shí)的時(shí)間耗費(fèi)和空間耗費(fèi)都較少,性能較好.另外,資源獲取的時(shí)間耗費(fèi),與采用不同的資源表述方式進(jìn)行序列化和反序列化所耗費(fèi)的時(shí)間大小,以及序列化結(jié)果的空間大小有一定的關(guān)系.

4 結(jié)論

(1)資源多重表述是REST的基本原則之一.不同的資源表述方式對于資源訪問有著性能差異.在本文所設(shè)計(jì)的書店REST服務(wù)應(yīng)用中,對于書列資源,以二進(jìn)制字節(jié)碼作為序列化結(jié)果的資源表述方式在資源獲取時(shí)的時(shí)間耗費(fèi)較少,性能較好.

(2)選擇不同的資源表述方式不僅需要考慮客戶端應(yīng)用的需要,也應(yīng)考慮其性能指標(biāo).使用二進(jìn)制字節(jié)碼作為序列化結(jié)果的資源表述方式在犧牲可讀性的同時(shí)可以提供更優(yōu)的性能.

[1]FIELDINGR T.Architectural styles and the design of networkbased software architectures[EB/OL].[2011-04-15]http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm.

[2]TILKOV Stefan.A brief introduction to REST[EB/OL].[2007-12-10]http://www.infoq.com/articles/restintroduction.

[3]鄧濤.REST服務(wù)開發(fā)實(shí)戰(zhàn)[EB/OL].[2011-02-22]http://www.infoq.com/cn/articles/dt-rest-service.

[4]許卓明,栗明,董逸生.基于RPC和基于REST的Web服務(wù)交互模型比較分析[J].計(jì)算機(jī)工程,2003,29(20):6-8.

[5]馮新?lián)P,沈建京.REST和RPC:兩種Web服務(wù)架構(gòu)風(fēng)格比較分析[J].小型微型計(jì)算機(jī)系統(tǒng),2010(7):1 393-1 396.

(編輯胡小萍)

猜你喜歡
資源服務(wù)
讓有限的“資源”更有效
基礎(chǔ)教育資源展示
一樣的資源,不一樣的收獲
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
資源回收
招行30年:從“滿意服務(wù)”到“感動服務(wù)”
商周刊(2017年9期)2017-08-22 02:57:56
主站蜘蛛池模板: 国产v精品成人免费视频71pao| 日本一本在线视频| 99精品伊人久久久大香线蕉 | 国产人妖视频一区在线观看| 国产欧美日韩在线一区| 成年人国产视频| 一本综合久久| 搞黄网站免费观看| 久久成人免费| 日韩精品一区二区三区swag| 91精选国产大片| 国产男女免费视频| 老熟妇喷水一区二区三区| 亚洲黄网在线| 久久五月天国产自| 三级毛片在线播放| 久久综合婷婷| AⅤ色综合久久天堂AV色综合| 国产欧美性爱网| 尤物亚洲最大AV无码网站| 91成人精品视频| 国产亚洲精久久久久久无码AV| 乱人伦99久久| 99这里只有精品6| 五月天天天色| 五月婷婷激情四射| 亚洲成人在线网| 国产在线98福利播放视频免费| 丝袜亚洲综合| 成人免费黄色小视频| 26uuu国产精品视频| 午夜不卡视频| 欧美亚洲一区二区三区导航| 欧美国产在线一区| 色悠久久综合| 人妻少妇久久久久久97人妻| 国产拍揄自揄精品视频网站| 91破解版在线亚洲| 久夜色精品国产噜噜| 亚洲欧美日韩另类在线一| 亚洲欧美自拍中文| 国产第八页| 国产日韩欧美中文| 日本欧美在线观看| 国产精欧美一区二区三区| 成年人国产视频| 亚洲欧洲综合| 欧美日韩午夜| 国产精品欧美在线观看| 中文无码精品a∨在线观看| 找国产毛片看| h视频在线观看网站| 亚洲男人的天堂网| 成年A级毛片| 亚洲人成网站观看在线观看| a级毛片免费网站| 国产乱子精品一区二区在线观看| 久久毛片免费基地| 午夜人性色福利无码视频在线观看| 18禁不卡免费网站| 欧美亚洲综合免费精品高清在线观看| 又大又硬又爽免费视频| 亚洲综合欧美在线一区在线播放| 国产手机在线观看| 日韩无码视频网站| 在线观看网站国产| 国产亚洲现在一区二区中文| 九九九精品成人免费视频7| 18禁黄无遮挡免费动漫网站| 午夜在线不卡| 国产麻豆91网在线看| 亚洲国产精品无码久久一线| 国产av剧情无码精品色午夜| 成人无码区免费视频网站蜜臀| 久久先锋资源| 国产精品尹人在线观看| 亚洲成人播放| 亚洲中文精品人人永久免费| 国产精品尹人在线观看| 亚洲国产成人麻豆精品| 中文字幕人成人乱码亚洲电影| 波多野结衣一区二区三视频|