徐雅琴,何成萬,嚴(yán)柯
武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北武漢 430205
基于REST服務(wù)的電子相冊的實(shí)現(xiàn)
徐雅琴,何成萬*,嚴(yán)柯
武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北武漢 430205
為降低相冊系統(tǒng)開發(fā)的復(fù)雜性,同時(shí)提高該系統(tǒng)的可伸縮性,從而設(shè)計(jì)并實(shí)現(xiàn)一個(gè)基于Representational State Transfer(REST)風(fēng)格的相冊管理系統(tǒng).該系統(tǒng)采用具有REST風(fēng)格的Web服務(wù)API的主流云開發(fā)平臺,通過使用Service、Bucket、Object和Multipart Upload操作,完成對相冊管理功能模塊和相片管理功能模塊的設(shè)計(jì)和實(shí)現(xiàn).首先,Bucket通過Service獲取并實(shí)現(xiàn)對相冊的管理;然后,Object通過上傳、設(shè)置、下載、獲取和刪除操作實(shí)現(xiàn)對相片的管理.最后,通過Multipart Up load補(bǔ)充了對相片的批處理操作.該電子相冊實(shí)現(xiàn)了在云端傳遞和下載圖片的功能,滿足了用戶能夠隨時(shí)隨地下載圖片需求,同時(shí)具有較好的可擴(kuò)展性.
電子相冊;REST;Web服務(wù)
相冊是用來記錄人們生活中種種美好的瞬間[1],它本身具有存儲和共享功能[2].隨著新技術(shù)的發(fā)展和人們生活習(xí)慣的改變,“相冊”開始以另外一種角色出現(xiàn)在人們的生活中.
20世紀(jì)50年代開始,人類走向了信息時(shí)代[3].信息時(shí)代為人類傳播、存儲、共享信息提供了新方法[4],人類的視角開始由現(xiàn)實(shí)轉(zhuǎn)向?yàn)樘摂M[5].與此同時(shí),相冊也開始了由紙質(zhì)版向電子檔的轉(zhuǎn)變.由于Internet存儲共享信息的不同,電子相冊也具有了新特性——更大的存儲量[6],只要有電子檔就可永久保存,共享信息的瞬時(shí)性,無視時(shí)間和空間限制[7]等等.
REST是可以視為一組軟件架構(gòu)約束、原則或規(guī)范[8],尚且處于概念階段.滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是RESTful.由于REST是基于URI和HTTP等協(xié)議標(biāo)準(zhǔn),因此稱為對早期Internet協(xié)議的回歸.所以將REST應(yīng)用到Web服務(wù)中,構(gòu)成了REST風(fēng)格的API,形成了一種新的服務(wù)調(diào)用方法.通過這種方式可以降低開發(fā)的復(fù)雜性,同時(shí)提高系統(tǒng)的可伸縮性.
本文基于REST服務(wù)設(shè)計(jì)并實(shí)現(xiàn)了電子相冊的管理.系統(tǒng)使用REST服務(wù)實(shí)現(xiàn)了照片的上傳、下載等各種操作,并把這些服務(wù)進(jìn)行了組合,提高了系統(tǒng)的可維護(hù)性.系統(tǒng)使用的是阿里OSS(Ob?ject Storage Service,對象存儲)提供的REST服務(wù)[9]平臺.
阿里OSS提供的REST API主要實(shí)現(xiàn)的操作有:關(guān)于服務(wù)(Service)操作;關(guān)于容器(Bucket)的操作;關(guān)于對象(Object)的操作;關(guān)于分片上傳(Multipart Upload)的操作;跨域資源共享(CORS);關(guān)于音、視頻上傳(Live Channel)的操作;OSS錯(cuò)誤回應(yīng).在電子相冊中主要用到前4種操作,下面是上述4種操作的主要信息.
1)關(guān)于服務(wù)的操作
關(guān)于Service的操作只有一種方法GetService(listBucket),該方法的功能是獲取請求者所創(chuàng)建的所有Bucket.對應(yīng)在電子相冊系統(tǒng)中,該功能的作用是獲取到所有創(chuàng)建成功的相冊.
2)關(guān)于容器的操作
對Bucket的操作主要集中在創(chuàng)建Bucket,設(shè)置Bucket相關(guān)信息,獲取Bucket和Bucket相關(guān)信息,以及刪除Bucket和Bucket相關(guān)信息四個(gè)方面.Bucket在OSS中起到一個(gè)容器的作用,用于放置Object.對應(yīng)在電子相冊系統(tǒng)中,對Bucket的操作就是對相冊的操作.因?yàn)樵贠SS提供REST服務(wù)中Bucket相對Object來說,起著容器的作用;而相冊相對于相片,從邏輯上講也是一個(gè)容器的作用.因此對Bucket的操作就是對相冊的操作.
3)關(guān)于對象的操作
對Object的操作是OSS開發(fā)中的核心部分,也是對OSS應(yīng)用的根源所在.Object可以是任意類型的文件,并且由于OSS提供的服務(wù)是基于HTTP的RESTful API,所以在聯(lián)網(wǎng)的情況下,用戶可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)對Object進(jìn)行處理.因此對Object的操作主要集中在對文件的操作:上傳文件,對文件的相關(guān)操作,下載文件,刪除文件,以及獲取文件的相關(guān)信息等.通過2)中描述可知,對Object的操作就是對相片的操作.
4)關(guān)于分片上傳的操作
Multipart Upload操作是對PUTObject(上傳文件)操作的補(bǔ)充.它在滿足上傳文件基礎(chǔ)上,還支持?jǐn)帱c(diǎn)上傳,超過100 MB文件的上傳,網(wǎng)絡(luò)服務(wù)差或者OSS服務(wù)器之間連接經(jīng)常斷開的上傳,以及上傳未知大小文件.根據(jù)該模式上傳文件特點(diǎn),首先使用先導(dǎo)功能Initiate Multipart Upload來創(chuàng)建一個(gè)全局唯一的Upload ID,以確保接下來的Multipart Upload操作.接下來的操作有:分塊上傳;將所有的數(shù)據(jù)塊合并為一個(gè)完整的Object;終止Multipart Upload操作;列出所有正在上傳的Multipart Upload操作;列出所有上傳完的塊.因此對MultipartUpload的操作就是對相片操作的補(bǔ)充.
阿里云通過RESTful API[10]的形式對外提供服務(wù),并提供了RESTful操作和相關(guān)示例,以及與開發(fā)人員相關(guān)的開發(fā)指南和相關(guān)主流編程語言的SDK工具包.在阿里云中有兩個(gè)重要的概念:Object(對象)和Bucket(阿里OSS提供的云存儲空間).第一,阿里云OSS的實(shí)現(xiàn)過程是將數(shù)據(jù)文件以O(shè)bject的形式與Bucket進(jìn)行交互;第二,OSS上一個(gè)賬戶可以創(chuàng)建一個(gè)或多個(gè)Bucket,但最多不能超過10個(gè);第三,每個(gè)Bucket中可以創(chuàng)建一個(gè)或者多個(gè)Object.
在電子相冊的設(shè)計(jì)與實(shí)現(xiàn)過程中有兩個(gè)核心模塊[11]:相冊管理模塊和相片管理模塊.下面就對這兩個(gè)功能模塊進(jìn)行具體的描述.
2.1 相冊管理模塊
相冊模塊在功能上和普通電子相冊類似,都具有以下4種功能:“創(chuàng)建相冊”,“設(shè)置相冊”,“獲取相冊”,“刪除相冊”.在此過程的設(shè)計(jì)中,為保證相冊的唯一性以及后期對相冊具體操作的可行性,相冊名必須唯一.因此對相冊的相關(guān)操作就會出現(xiàn)各種判斷情況.在“創(chuàng)建相冊”過程中如果相冊已存在,在編程實(shí)現(xiàn)中就是相冊名已存在,那么就需要重命名后再創(chuàng)建相冊,以保證相冊名的唯一;“設(shè)置相冊”功能是一個(gè)直接功能,因此可以直接對相冊進(jìn)行設(shè)置;同時(shí)“獲取相冊”也是一個(gè)直接功能,該功能可以獲得“設(shè)置相冊”功能中對相冊相關(guān)設(shè)置信息,也可以獲得該相冊中所有相片列表;最后“刪除相冊”功能,它的實(shí)現(xiàn)過程和所有軟件的刪除過程一樣,都需要一個(gè)確定操作,來確認(rèn)相冊是否被刪除,這個(gè)過程中刪除操作的對象是相冊的相冊名以及該相冊名下的所有相片.由于在電子相冊的設(shè)計(jì)過程中對相冊管理模塊的設(shè)計(jì),就是在電子相冊開發(fā)過程中對Bucket管理模塊的設(shè)計(jì)、故相冊管理模塊的結(jié)構(gòu)如圖1所示.
圖1 相冊管理模塊Fig.1 Module ofalbum management
2.2 相片管理模塊
相片管理模塊的結(jié)構(gòu)如圖2所示.相片管理模塊在功能上和普通電子相冊同樣類似,但是由于它的存放空間是由第三方提供的云[12],因此在應(yīng)用時(shí)就有天差地別的效果.傳統(tǒng)的電子相冊是保存在計(jì)算機(jī)本地內(nèi)存[13],那么用戶想要查看,就只能通過計(jì)算機(jī)本身;而存儲到云端的相冊則可以在聯(lián)網(wǎng)的情況下,通過網(wǎng)絡(luò)直接獲取到相片.因此可以滿足用戶隨時(shí)隨地上傳和下載相片的要求[14].在此基礎(chǔ)上對相片管理模塊[15]進(jìn)行設(shè)計(jì),相片管理模塊具有以下五種功能:“上傳相片”,“設(shè)置相片”,“下載相片”,“操作相片”,“刪除相片”.在此過程的設(shè)計(jì)中,為保證對相片操作的唯一性以及后期對相片具體操作的可行性,同一相冊下相片名必須唯一,不同相冊之間的相片名可以重復(fù).因此對相片的相關(guān)操作就會出現(xiàn)各種判斷情況.在“上傳相片”過程中如果該相冊中的相片已存在,在編程實(shí)現(xiàn)中就是相片名已存在,那么就需要對相片進(jìn)行重命名,以保證該相片名唯一,該功能是將本地的相片上傳到云端;“設(shè)置相片”功能是一個(gè)直接功能,可以通過阿里OSS提供REST API直接對相片的相關(guān)信息進(jìn)行設(shè)置;“下載相片”功能,是直接把云端的相片下載到本地;“操作相冊”中也是一個(gè)直接功能,該功能可以由述方法獲得“設(shè)置相冊”功能中對相片的相關(guān)設(shè)置信息,同時(shí)也可以對相片進(jìn)行獲取、拷貝等操作;“刪除相片”功能,它的實(shí)現(xiàn)過程和“刪除相冊”一樣,需要確定是否刪除相片,該過程是刪除選中的相片.由于在電子相冊的設(shè)計(jì)過程中對相片管理模塊的設(shè)計(jì),就是在電子相冊開發(fā)過程中對Object管理模塊的設(shè)計(jì).
圖2 相片管理模塊Fig.2 Module of photomanagement
電子相冊的主要功能按照其主要功能模塊的設(shè)計(jì)思路來實(shí)現(xiàn)的.因此就有相冊管理相關(guān)功能的實(shí)現(xiàn)和相片管理相關(guān)功能的實(shí)現(xiàn).下面就這兩大功能實(shí)現(xiàn)的主要操作進(jìn)行描述.
3.1 相冊管理相關(guān)功能實(shí)現(xiàn)
3.1.1 創(chuàng)建相冊首先設(shè)計(jì)出了創(chuàng)建相冊的命名的格式,通過將“shylot-”和頁面上用戶輸入的相冊名相結(jié)合,實(shí)現(xiàn)最終OSS中相冊命名“shylot-用戶輸入相冊名”這一格式,然后調(diào)用OSS提供的REST API的方法createBucket(bucketName),最終實(shí)現(xiàn)創(chuàng)建出一個(gè)Bucket,即“創(chuàng)建相冊”的功能.而這個(gè)“相冊”最終就是會在OSS云存儲中以Bucket的方式出現(xiàn).
3.1.2 查看相冊根據(jù)獲取相片所屬的Bucket名稱和該相片的名稱,通過調(diào)用REST API的getOb?ject()方法,就可以獲取保存在阿里云中的該Bucket下對應(yīng)的照片的信息,最后通過流輸出的方法,將該照片顯示出來,從而達(dá)到在云相冊系統(tǒng)中,查看保存在云中的照片的方法.
3.1.3 刪除相冊刪除相冊的實(shí)現(xiàn),是在通過函數(shù)的映射,以及RESTAPI提供的開發(fā)方法,使得開發(fā)者能夠很好實(shí)現(xiàn)該功能.同樣使用通過OSS提供的RESTAPI方法中的deleteBucket()方法,以實(shí)現(xiàn)相冊的刪除.最終實(shí)現(xiàn)的結(jié)果在云相冊中就存在已經(jīng)被刪除的相冊,而對應(yīng)在OSS云存儲中相應(yīng)的Bucket就會被刪除掉.
3.2 相片管理相關(guān)功能實(shí)現(xiàn)
3.2.1 上傳相片將Java編程技術(shù)與OSS提供的REST API的putObject()結(jié)合起來使用,最終實(shí)現(xiàn)上傳相片目的.上傳一個(gè)照片需要定義bucket?Name為上傳相片所屬的相冊名,key為上傳的相片名,content為上傳文件的大小設(shè)置,meta為上傳文件的信息描述,這四者結(jié)合起來就可以實(shí)現(xiàn)一個(gè)相片上傳的后臺設(shè)置.最終在OSS云存儲中該相冊(Bucket)名下就會出現(xiàn)對應(yīng)的相片(Object)名. 3.2.2查看相片通過獲取相片對應(yīng)的bucket?Name相冊名,然后獲取該相片名key,接著調(diào)用OSS提供的REST API的getObject(bucketName,key)方法,就可獲得保存在阿里云中的該相片的信息,然后將該信息以流的方式輸出,Java編程的JPEGCodec.createJPEGEncoder()的方法創(chuàng)建一個(gè)和指定輸出流關(guān)聯(lián)的JPEGImageEncoder對象,最后將該對象顯示出來就完成了具體相片的查看功能.
3.2.3 刪除相片獲得刪除相片所對應(yīng)的相冊名bucketname,然后就是該相片的名稱key,最后調(diào)用OSS提供的REST API風(fēng)格的刪除Object方法deleteObject(bucketName,key),最終實(shí)現(xiàn)將相片從阿里云中刪除.同樣的在OSS云存儲中對應(yīng)相冊中的相片就會被刪除掉.
REST風(fēng)格的W eb服務(wù)的核心是資源.所有REST服務(wù)利用HTTP的統(tǒng)一接口,以及4種基本操作方法GET、PUT、DELETE和POST,保障了資源的安全性.同時(shí)通過阿里云這一第三方云平臺,保證了數(shù)據(jù)的安全可用.
文獻(xiàn)[4]使用OpenCV視覺庫來實(shí)現(xiàn)相片的半自動(dòng)化分類,文獻(xiàn)[11]使用SSH框架來優(yōu)化相冊的架構(gòu),文獻(xiàn)[15]通過改進(jìn)相片的相關(guān)技術(shù)來實(shí)現(xiàn)相片的準(zhǔn)確提取和自適應(yīng)劃分;這3種相冊都是從技術(shù)上對相冊進(jìn)行優(yōu)化.本系統(tǒng)相對于這3種技術(shù)而言,具有結(jié)構(gòu)和操作簡單、可擴(kuò)展性好的優(yōu)勢.通過采用RESTAPI技術(shù)從底層構(gòu)建相冊系統(tǒng),并結(jié)合API本身的特性,從而使相冊系統(tǒng)的結(jié)構(gòu)和操作更加簡單;由于系統(tǒng)的功能是以REST服務(wù)的形式實(shí)現(xiàn),通過Web服務(wù)組合方法,可以更方便地實(shí)現(xiàn)系統(tǒng)功能擴(kuò)充.
以上介紹了基于REST服務(wù)的電子相冊系統(tǒng)的實(shí)現(xiàn)方法.通過使用阿里OSS提供的REST服務(wù)API,實(shí)現(xiàn)了在云端傳遞和下載圖片的功能,滿足用戶能夠隨時(shí)隨地下載圖片的需求,同時(shí)又保證了圖片的永久存儲.由REST服務(wù)和云存儲技術(shù)結(jié)合起來的開發(fā)技術(shù),為信息的分享和存儲提供新的思路.以本文實(shí)現(xiàn)的電子相冊為基礎(chǔ),在REST服務(wù)組合方法等方面將進(jìn)行進(jìn)一步的研究.
[1]ARDIZZONE E,CASCIA M L,MORANA M,et al. Clustering techniques for personal photo album management[J].Journal of Electronic Imaging,2009,18(4):1-12.
[2]高湛.基于Nios II的多功能電子相冊設(shè)計(jì)[D].重慶:重慶大學(xué),2012.
[3]程濤,陳慧琴,孫萍,等.基于Android的手機(jī)相冊分享軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2014(13):1-2.
CHEN T,CHEN H Q,SUN P,et al.Design and imp lementation of mobile phone photo album sharing software based on Android[J].Microcomputer&Its Applications,2014(13):1-2.
[4]劉云鵬,李瑾,潘聞.基于OpenCV的智能相冊系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014(9):61-64.
LIU Y P,LI J,PANW.Smart album based on OpenCV[J].Computer Systems&Applications,2014(9):61-64.
[5]KOWAL B M,SCHREIER T R,DAUER J T,et al. Programmatic access to logical models in the cell collective modeling environment via a REST API[J]. Bio Systems,2016(139):12-16.
[6]劉正偉,文中領(lǐng),張海濤.云計(jì)算和云數(shù)據(jù)管理技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2012,49(增刊1):26-31.
LIU ZW,WEN Z L,ZHANG H T.Cloud computing and cloud data management technology[J].Journal of Computer Research and Development,2012,49(Suppl.1):26-31.
[7]MEREDITH F.From desktop to cloud top:cloud com puting comes of age[J].American Libraries:Official Bulletin of the American Library Association,2009,40(4):27-61.
[8]CAROSG,LAURA D,ALAIN T,et al.Assessment of OGC web processing services for REST principles[J]. International Journal of Data Mining,Modelling and Management,2014,6(4):391-412.
[9]JESUS B,ROSA A,CESARE P,et al.Control-flow patterns for decentralized RESTful service com position[J].ACM Transactions on the Web,2014,8(1):591-604.
[10]ROMAN D,KOPECKY J,VITVAR T,etal.WSMO-lite and hRESTS:lightweight semantic annotations for web services and RESTful APIs[J].Journal of Web Semantics,2015(31):39-58.
[11]王華旭.基于Android平臺的智能手機(jī)相冊的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:中山大學(xué),2014.
[12]SALAJA S,ELIJAH B R,KIRUBAKARAN E,et al. Efficient service selection m idd leware using ELECTRE methodology for cloud environments[J]. Information Technology Journal,2012,11(7):868-875.
[13]BLOWERS H.Considering the c loud and the greater computing atmosphere[J].Computers in Libraries,2012,32(4):29-31.
[14]DING B,YU X Y,SUN L J,et al.A cloud-based collaborative manufacturing resource sharing services[J].Information Technology Journal,2012,11(9):1258-1264.
[15]管權(quán),焦祥璞.基于SSH的網(wǎng)絡(luò)相冊系統(tǒng)的設(shè)計(jì)[J].科技廣場,2013(6):245-248.
GUAN Q,JIAO X P.SSH-based system design web albums[J].Science Mosaic,2013(6):245-248.
本文編輯:陳小平
Im p lem entation of Electronic A lbum Based on REST Service
XU Yaqin,HE Chenwan*,YAN Ke
Schoolof Computer Science and Engineering,Wuhan Institute of Technology,Wuhan 430205,China
To reduce the complexity of the system development and improve the system's salability,we designed the electronic album based on the Representational State Transfer(REST)style.The system adopted operations of Service,Bucket,Object and Multipart Upload to implement the album and the photomanagement based on the mainstream cloud platform with the REST style's web service API.Firstly,Bucket obtained by Service implemented the photo album management.Next,Objectmanaged photos through uploading,setting,downloading,obtaining and deleting operations.Finally,Multipart Up load supp lemented the batch operations for photos.The electronic photo album implements the function of passing and downloading photos in the cloud,meeting user'sneeds to download photos in anytime and anywherewith a good scalability.
electronic album;REST;Web service
TP311.5
:Adoi:10.3969/j.issn.1674?2869.2017.01.014
1674-2869(2017)01-0078-05
2016-10-25
國家自然科學(xué)基金項(xiàng)目(61272115);武漢工程大學(xué)研究生教育創(chuàng)新基金項(xiàng)目(CX 2015058)
徐雅琴,碩士研究生.E-mail:2466257007@qq.com
*通訊作者:何成萬,博士,教授.E-mail:hechengwan@hotmail.com
徐雅琴,何成萬,嚴(yán)柯.基于REST服務(wù)的電子相冊的實(shí)現(xiàn)[J].武漢工程大學(xué)學(xué)報(bào),2017,39(1):78-82. XU Y Q,HE CW,YAN K.Implementation of electronic album based on REST service[J].Journal ofWuhan Institute of Technology,2017,39(1):78-82.