Parse 构建移动APP后台服务(一)
目前正在开发的产品告一段落,有时间总结下经验,也顺便分享一下我们主要使用的平台-Parse。
什么是Parse?
Parse是一群美国人开发的专为移动APP服务的云计算平台,与现有的其他云计算平台相比,Parse除了提供Restful的service
之外,也提供了官方的iOS和Android
SDK。个人认为高质量的client端SDK是Parse区分与其他云服务的核心优势。为什么呢?看完我的文章就知道了。
为什么要用Parse?
先想想开发一个简单的需要保存用户数据的APP,你需要做什么。非技术背景的人多半会认为只需要找个人做几个手机界面就行了。慢!身为程序员的我
们会告诉这个不懂技术的朋友(也许是投资人,也许是你的老板),为了保存用户数据及密码,我们需要建立一个数据库,建立一个服务器,找一个虚拟主机提供商
部署服务,花费几天到几个月的时间开发服务器的代码,尽管这些事情看上去与一个运行在手机上的程序毫无关系,却是必须而不可或缺的。这些与iPhone开
发无关的前期准备工作阻止了大多数个人或者小团体的创业想法变成实际行动。这时候,小团队的拯救者Parse出现了。只需专著于iPhone上具体需求的
开发,繁琐的后台服务全由Parse包办。
Parse提供的服务?
多数功能免费,少数功能只开放给Pro用户(199$/month),具体情况可以访问官网(https://www.parse.com/plans)。
1. JASON格式的数据保存读取。可以理解为数据库+DAO+Service。No
Schema,前台程序员无需预定义表结构,只要建立Object C
对象,保存时就可以自动建立对应面向对象的“数据库表”。传统开发过程中,整个后台服务的开发工作全部都省去了。
2. 用户管理。用户对象是最常用的,Parse提供了PFUser对象,包含了注册登陆重设密码等常用用户操作,并引入ACL管理对象的权限。
3. 消息推送:支持iOS和Android平台的消息推送。具体的说就是iOS开发者无须再建立自己的消息发送服务器了。
4. 文件存贮:除了类数据库的方式保存对象也支持二进制文件的保存。
5. 隐藏Parse: 默认情况,重设密码,验证油箱等功能使用带有Parse logo的网页和邮件地址。Pro用户可以自定义邮件模版,网页模版,或者要求Parse redirect到自己应用的官网。
6. Facebook和Twitter账户绑定。就是建立PFUser和Facebook和Twitter账户的关联。同时Parse的SDK也包含了Facebook和Twitter的SDK。这个应该只对那些面向国外市场的同学有用。
Parse的SDK包括什么?
第三方的云服务满天飞,好用才是关键。看看Parse团队的介绍,都是些牛人,放出来的SDK的质量也没话说。官方的有iOS和Android,
非官方的基本都全了,包括WP,PHP,Flex Java等等。这里只谈iOS的SDK。除了基本的和后台Restful
API的接口外,还包括了一个封装了下来刷新的table view
controller,挺漂亮的登陆,注册界面,异步读取保存数据接口和Cache。官网上除了各种例子之外,最近还放出了个真正上App
Store的项目AnyWall。有兴趣的同学可以去看看。
好了说了那么多,可以看看代码了。英语好的同学可以参考官方文档:www.parse.com,或者听我讲讲实际使用的经历,代码例子来自
Parse官方文档和我本人的项目。可以参考 https://www.parse.com/apps/quickstart 建立本地开发环境。
最简单的Parse对象就是下面这个:
- score: 1337, playerName: "Sean Plott", cheatMode: false
如果用parse保存的话就是:
- PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
- [gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"];
- [gameScore setObject:@"Sean Plott" forKey:@"playerName"];
- [gameScore setObject:[NSNumber numberWithBool:NO] forKey:@"cheatMode"];
- [gameScore save];
对应的Request格式为:
复制代码
- objectId: "xWMyZ4YEGZ", score: 1337, playerName: "Sean Plott", cheatMode: false,createdAt:"2011-06-10T18:33:42Z", updatedAt:"2011-06-10T18:33:42Z"
保存成功后可以在Parse的Data Browser里看到对应的纪录。