基于REST服务的电子相册的实现
2017-03-01徐雅琴何成万严柯
徐雅琴,何成万,严柯
武汉工程大学计算机科学与工程学院,湖北武汉 430205
基于REST服务的电子相册的实现
徐雅琴,何成万*,严柯
武汉工程大学计算机科学与工程学院,湖北武汉 430205
为降低相册系统开发的复杂性,同时提高该系统的可伸缩性,从而设计并实现一个基于Representational State Transfer(REST)风格的相册管理系统.该系统采用具有REST风格的Web服务API的主流云开发平台,通过使用Service、Bucket、Object和Multipart Upload操作,完成对相册管理功能模块和相片管理功能模块的设计和实现.首先,Bucket通过Service获取并实现对相册的管理;然后,Object通过上传、设置、下载、获取和删除操作实现对相片的管理.最后,通过Multipart Up load补充了对相片的批处理操作.该电子相册实现了在云端传递和下载图片的功能,满足了用户能够随时随地下载图片需求,同时具有较好的可扩展性.
电子相册;REST;Web服务
相册是用来记录人们生活中种种美好的瞬间[1],它本身具有存储和共享功能[2].随着新技术的发展和人们生活习惯的改变,“相册”开始以另外一种角色出现在人们的生活中.
20世纪50年代开始,人类走向了信息时代[3].信息时代为人类传播、存储、共享信息提供了新方法[4],人类的视角开始由现实转向为虚拟[5].与此同时,相册也开始了由纸质版向电子档的转变.由于Internet存储共享信息的不同,电子相册也具有了新特性——更大的存储量[6],只要有电子档就可永久保存,共享信息的瞬时性,无视时间和空间限制[7]等等.
REST是可以视为一组软件架构约束、原则或规范[8],尚且处于概念阶段.满足这些约束条件和原则的应用程序或设计就是RESTful.由于REST是基于URI和HTTP等协议标准,因此称为对早期Internet协议的回归.所以将REST应用到Web服务中,构成了REST风格的API,形成了一种新的服务调用方法.通过这种方式可以降低开发的复杂性,同时提高系统的可伸缩性.
本文基于REST服务设计并实现了电子相册的管理.系统使用REST服务实现了照片的上传、下载等各种操作,并把这些服务进行了组合,提高了系统的可维护性.系统使用的是阿里OSS(Ob⁃ject Storage Service,对象存储)提供的REST服务[9]平台.
1 REST服务的主要操作
阿里OSS提供的REST API主要实现的操作有:关于服务(Service)操作;关于容器(Bucket)的操作;关于对象(Object)的操作;关于分片上传(Multipart Upload)的操作;跨域资源共享(CORS);关于音、视频上传(Live Channel)的操作;OSS错误回应.在电子相册中主要用到前4种操作,下面是上述4种操作的主要信息.
1)关于服务的操作
关于Service的操作只有一种方法GetService(listBucket),该方法的功能是获取请求者所创建的所有Bucket.对应在电子相册系统中,该功能的作用是获取到所有创建成功的相册.
2)关于容器的操作
对Bucket的操作主要集中在创建Bucket,设置Bucket相关信息,获取Bucket和Bucket相关信息,以及删除Bucket和Bucket相关信息四个方面.Bucket在OSS中起到一个容器的作用,用于放置Object.对应在电子相册系统中,对Bucket的操作就是对相册的操作.因为在OSS提供REST服务中Bucket相对Object来说,起着容器的作用;而相册相对于相片,从逻辑上讲也是一个容器的作用.因此对Bucket的操作就是对相册的操作.
3)关于对象的操作
对Object的操作是OSS开发中的核心部分,也是对OSS应用的根源所在.Object可以是任意类型的文件,并且由于OSS提供的服务是基于HTTP的RESTful API,所以在联网的情况下,用户可以在任何应用、任何时间、任何地点对Object进行处理.因此对Object的操作主要集中在对文件的操作:上传文件,对文件的相关操作,下载文件,删除文件,以及获取文件的相关信息等.通过2)中描述可知,对Object的操作就是对相片的操作.
4)关于分片上传的操作
Multipart Upload操作是对PUTObject(上传文件)操作的补充.它在满足上传文件基础上,还支持断点上传,超过100 MB文件的上传,网络服务差或者OSS服务器之间连接经常断开的上传,以及上传未知大小文件.根据该模式上传文件特点,首先使用先导功能Initiate Multipart Upload来创建一个全局唯一的Upload ID,以确保接下来的Multipart Upload操作.接下来的操作有:分块上传;将所有的数据块合并为一个完整的Object;终止Multipart Upload操作;列出所有正在上传的Multipart Upload操作;列出所有上传完的块.因此对MultipartUpload的操作就是对相片操作的补充.
阿里云通过RESTful API[10]的形式对外提供服务,并提供了RESTful操作和相关示例,以及与开发人员相关的开发指南和相关主流编程语言的SDK工具包.在阿里云中有两个重要的概念:Object(对象)和Bucket(阿里OSS提供的云存储空间).第一,阿里云OSS的实现过程是将数据文件以Object的形式与Bucket进行交互;第二,OSS上一个账户可以创建一个或多个Bucket,但最多不能超过10个;第三,每个Bucket中可以创建一个或者多个Object.
2 系统功能模块
在电子相册的设计与实现过程中有两个核心模块[11]:相册管理模块和相片管理模块.下面就对这两个功能模块进行具体的描述.
2.1 相册管理模块
相册模块在功能上和普通电子相册类似,都具有以下4种功能:“创建相册”,“设置相册”,“获取相册”,“删除相册”.在此过程的设计中,为保证相册的唯一性以及后期对相册具体操作的可行性,相册名必须唯一.因此对相册的相关操作就会出现各种判断情况.在“创建相册”过程中如果相册已存在,在编程实现中就是相册名已存在,那么就需要重命名后再创建相册,以保证相册名的唯一;“设置相册”功能是一个直接功能,因此可以直接对相册进行设置;同时“获取相册”也是一个直接功能,该功能可以获得“设置相册”功能中对相册相关设置信息,也可以获得该相册中所有相片列表;最后“删除相册”功能,它的实现过程和所有软件的删除过程一样,都需要一个确定操作,来确认相册是否被删除,这个过程中删除操作的对象是相册的相册名以及该相册名下的所有相片.由于在电子相册的设计过程中对相册管理模块的设计,就是在电子相册开发过程中对Bucket管理模块的设计、故相册管理模块的结构如图1所示.
图1 相册管理模块Fig.1 Module ofalbum management
2.2 相片管理模块
相片管理模块的结构如图2所示.相片管理模块在功能上和普通电子相册同样类似,但是由于它的存放空间是由第三方提供的云[12],因此在应用时就有天差地别的效果.传统的电子相册是保存在计算机本地内存[13],那么用户想要查看,就只能通过计算机本身;而存储到云端的相册则可以在联网的情况下,通过网络直接获取到相片.因此可以满足用户随时随地上传和下载相片的要求[14].在此基础上对相片管理模块[15]进行设计,相片管理模块具有以下五种功能:“上传相片”,“设置相片”,“下载相片”,“操作相片”,“删除相片”.在此过程的设计中,为保证对相片操作的唯一性以及后期对相片具体操作的可行性,同一相册下相片名必须唯一,不同相册之间的相片名可以重复.因此对相片的相关操作就会出现各种判断情况.在“上传相片”过程中如果该相册中的相片已存在,在编程实现中就是相片名已存在,那么就需要对相片进行重命名,以保证该相片名唯一,该功能是将本地的相片上传到云端;“设置相片”功能是一个直接功能,可以通过阿里OSS提供REST API直接对相片的相关信息进行设置;“下载相片”功能,是直接把云端的相片下载到本地;“操作相册”中也是一个直接功能,该功能可以由述方法获得“设置相册”功能中对相片的相关设置信息,同时也可以对相片进行获取、拷贝等操作;“删除相片”功能,它的实现过程和“删除相册”一样,需要确定是否删除相片,该过程是删除选中的相片.由于在电子相册的设计过程中对相片管理模块的设计,就是在电子相册开发过程中对Object管理模块的设计.
图2 相片管理模块Fig.2 Module of photomanagement
3 主要功能实现
电子相册的主要功能按照其主要功能模块的设计思路来实现的.因此就有相册管理相关功能的实现和相片管理相关功能的实现.下面就这两大功能实现的主要操作进行描述.
3.1 相册管理相关功能实现
3.1.1 创建相册首先设计出了创建相册的命名的格式,通过将“shylot-”和页面上用户输入的相册名相结合,实现最终OSS中相册命名“shylot-用户输入相册名”这一格式,然后调用OSS提供的REST API的方法createBucket(bucketName),最终实现创建出一个Bucket,即“创建相册”的功能.而这个“相册”最终就是会在OSS云存储中以Bucket的方式出现.
3.1.2 查看相册根据获取相片所属的Bucket名称和该相片的名称,通过调用REST API的getOb⁃ject()方法,就可以获取保存在阿里云中的该Bucket下对应的照片的信息,最后通过流输出的方法,将该照片显示出来,从而达到在云相册系统中,查看保存在云中的照片的方法.
3.1.3 删除相册删除相册的实现,是在通过函数的映射,以及RESTAPI提供的开发方法,使得开发者能够很好实现该功能.同样使用通过OSS提供的RESTAPI方法中的deleteBucket()方法,以实现相册的删除.最终实现的结果在云相册中就存在已经被删除的相册,而对应在OSS云存储中相应的Bucket就会被删除掉.
3.2 相片管理相关功能实现
3.2.1 上传相片将Java编程技术与OSS提供的REST API的putObject()结合起来使用,最终实现上传相片目的.上传一个照片需要定义bucket⁃Name为上传相片所属的相册名,key为上传的相片名,content为上传文件的大小设置,meta为上传文件的信息描述,这四者结合起来就可以实现一个相片上传的后台设置.最终在OSS云存储中该相册(Bucket)名下就会出现对应的相片(Object)名. 3.2.2查看相片通过获取相片对应的bucket⁃Name相册名,然后获取该相片名key,接着调用OSS提供的REST API的getObject(bucketName,key)方法,就可获得保存在阿里云中的该相片的信息,然后将该信息以流的方式输出,Java编程的JPEGCodec.createJPEGEncoder()的方法创建一个和指定输出流关联的JPEGImageEncoder对象,最后将该对象显示出来就完成了具体相片的查看功能.
3.2.3 删除相片获得删除相片所对应的相册名bucketname,然后就是该相片的名称key,最后调用OSS提供的REST API风格的删除Object方法deleteObject(bucketName,key),最终实现将相片从阿里云中删除.同样的在OSS云存储中对应相册中的相片就会被删除掉.
4 安全性与比较
REST风格的W eb服务的核心是资源.所有REST服务利用HTTP的统一接口,以及4种基本操作方法GET、PUT、DELETE和POST,保障了资源的安全性.同时通过阿里云这一第三方云平台,保证了数据的安全可用.
文献[4]使用OpenCV视觉库来实现相片的半自动化分类,文献[11]使用SSH框架来优化相册的架构,文献[15]通过改进相片的相关技术来实现相片的准确提取和自适应划分;这3种相册都是从技术上对相册进行优化.本系统相对于这3种技术而言,具有结构和操作简单、可扩展性好的优势.通过采用RESTAPI技术从底层构建相册系统,并结合API本身的特性,从而使相册系统的结构和操作更加简单;由于系统的功能是以REST服务的形式实现,通过Web服务组合方法,可以更方便地实现系统功能扩充.
5 结语
以上介绍了基于REST服务的电子相册系统的实现方法.通过使用阿里OSS提供的REST服务API,实现了在云端传递和下载图片的功能,满足用户能够随时随地下载图片的需求,同时又保证了图片的永久存储.由REST服务和云存储技术结合起来的开发技术,为信息的分享和存储提供新的思路.以本文实现的电子相册为基础,在REST服务组合方法等方面将进行进一步的研究.
[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的多功能电子相册设计[D].重庆:重庆大学,2012.
[3]程涛,陈慧琴,孙萍,等.基于Android的手机相册分享软件的设计与实现[J].微型机与应用,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的智能相册系统[J].计算机系统应用,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]刘正伟,文中领,张海涛.云计算和云数据管理技术[J].计算机研究与发展,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平台的智能手机相册的设计与实现[D].广州:中山大学,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]管权,焦祥璞.基于SSH的网络相册系统的设计[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
国家自然科学基金项目(61272115);武汉工程大学研究生教育创新基金项目(CX 2015058)
徐雅琴,硕士研究生.E-mail:2466257007@qq.com
*通讯作者:何成万,博士,教授.E-mail:hechengwan@hotmail.com
徐雅琴,何成万,严柯.基于REST服务的电子相册的实现[J].武汉工程大学学报,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.