阅读此文章需要对Objective-C和iOS有一定的了解,完全没有基础的朋友请先阅读《让不懂编程的人爱上iPhone开发》系列教程。

什么是后台服务(back-end service)?说白了,就是联机服务。比如说一个备忘录应用,如果所有的数据信息只能保存在本地设备(也就是你所用的电脑、手机、平板电脑上),那么它就是一个单机应用。如果一个游戏只能在自己的设备上玩,而且所有的游戏进度、档案都保存在本地设备上,那么它就是一个单机游戏。

因此,简单来说,后台服务的作用就是把单机应用变成网络应用,把单机游戏变成网络游戏。

现在如果说哪一个移动应用(非游戏)没有提供后台服务的功能,几乎就是不可想象的。不过之前为了提供所谓的后台服务,你需要拥有自己的数据库和web服务器,这个很少是免费的。除非之外,你还需要借助于类似Ruby on Rails,PHP或JAVA等编程语言来实现后台服务。但这样做有几个问题:

  1. 大量时间的投入:

为移动应用提供后台服务需要大量的开发时间和精力的投入。通常来说,开发后台服务的时间和客户端的时间几乎是一样的。

  1. 更高的技能要求:

即便你已经是iOS或Android客户端开发高手,也不意味着你在后台服务的开发上同样NB。事实上,绝大多数程序猿都是专攻其中一项,能够前端后端同时开火左右手互搏的牛人当然有,只是要耗费大量的时间沉淀才可能达到这一步。

  1. 用户规模可扩展性的问题:

移动应用的天性决定,你永远不知道你的应用只是小众俱乐部成员,还是哪天成为百万用户俱乐部的一员。除非是后台开发的高手,很难在开发应用时让应用具有极好的可扩展性。

4.金钱的投入

即便是选择最便宜的虚拟主机服务,你也得为此支付一定的费用。

正是因为有以上问题的存在,近年来出现了不少专门针对移动应用/游戏的第三方后台服务。

PART I 关于BAAS服务

随着移动应用开发市场的火爆,已经有聪明人认识到了开发者的这一强烈需求,并提供高度可定制的网络后台服务模块,方便开发者整合到自己的应用之中。有砖家给这种服务提供了一个新的名词,美其名曰Backend as a Service(后台服务),或者更NB的说法叫BaaS。 这些后台服务提供商通常会提供一个整合的方案,其中包括了后台数据库存储,以及其它 可定制化的服务。而在iOS和Android应用中整合这些服务并不难,只需要调用一两个类库就好。大多数此类服务可以提供免费账号,当然也针对规模可扩展性问题提供了不同的付费账号标准。

让我们大概了解下BaaS提供商所提供的基本功能。 这样吧,让我们假想一个应用,比如我们要存储属于不同队伍的运动员。这些BaaS提供 商能帮我们些什么呢?
1. Custom objects(可定制的对象):通常来说,后台服务的最重要功能就是可以将 应用数据存储到网络服务器的数据库中。在你的应用中一般都有代表数据的model对象(比如一个运动员对象,以及一个球队对象),以及对象间的关系(比如某个运动员属于哪一只球队)。BaaS服务提供商通常会让开发者用一种简单的方式从对象中获取数据, 并将其存储/保持到网络服务器的数据库中。

2. File storage(文件存储):除了保存数据库类型的数据,有时开发者还需要保存文 件-比如图片,大型文档等等。在这款假想的应用中,或许你需要为每一个运动员保存一张肖像照片。绝大多数的后台服务都提供文件存储功能,方便开发者将文件和某个定制对 象关联在一起。

3. Geolocation:(地理位置信息)在大多数的移动应用中,可能会需要根据某个特定的位置来查询对象。例如,用户可能想查找自己手机附近的球队。BaaS服务允许开发者将 自己的对象标记一个特定的地理位置,这样用户就可以根据地理位置来查找对象。
4. Users(用户):很显然开发者需要对应用中的对象实行权限管理,并指定用户可以访问的特定对象。几乎所有的BaaS服务都允许开发者创建自己的用户,而大多数用户都 通过Facebook或Twitter来登录。这样既可以扩大用户基数,同时也无需让用户创建新的 账户。

5. Push notification(推送服务):BaaS服务允许开发者向自己的所有或选定用户发送 推送消息。 好吧,这样一来,你大概就清楚了BaaS服务提供商能帮到你些什么。接着让我们来大概 了解下几个主要的BaaS服务提供商吧。

1. StackMob(StackMob)

可能是目前所有BaaS服务中最流行也是最具可定制性的服务了。开发者可以上传自己的后端代码,创建自己的网络服务,这一点让它在BaaS服务提供商中显得鹤立鸡群。

当然也有不爽的地方,如果你要存储二进制文件(比如假想应用中的球员肖像图片),还得需要一个Amazon S3账户。开发者无法直接在StackMob中维护管理二进制文件。他们的免费计划也稍显吝啬,但付费服务计划就显得非常慷慨合理了,而且扩容方面很方便。

2. Appcelerator Cloud Service (Cloud | Titanium Mobile App Development ) 毫无疑问,该服务是所有BaaS服务中功能最完整的,而且免费计划相当慷慨。不过它是设计来和Titanium SDK一起使用的,所有帮助文档稍显晦涩。而如果开发者不是在使用 Titanium的话,会发现有很多看不懂的地方需要跳过。 当然,该网站也提供了很不错的Q&A⻚页面帮助开发者解决各类问题,而且对问题的响应 非常迅速。

3. Parse(Parse):

提供所有BaaS服务中最好的免费服务计划。其帮助文档也是最容易理解的,所提供的服 务特别适合初学者,可以很短时间里轻松上手(译者推荐)。 Parse还提供了示例项目,以及可以在项目中添加的定制UIView视图,比如Facebook和 Twitter登陆视图。此外,它还提供了大量可用的第三方类库。

4. Applicasa(Virtual Store Platform, Complete In-App Purchase & Backend Solution): 提供了和其它BaaS相似的功能,不过增加了一个拖曳功能,可以方便开发者创建自己的 表格和定制化对象。一旦数据库结果设计完成,就可以下载定制的SDK。Applicasa的收 费基于你的活跃用户数量。如果你是创业型团队,那么它会提供一个免费账户,允许每月 10万人的活跃用户。不过你得主动联系他们申请。

5. Kinvey(Backend as a Service): 同样是一个很流行的BaaS服务。开发者在转为付费账户前,该服务支持200个活跃用户。不过它的付费价格还是比较高的。当然,大浪淘沙唯留真金,在很短的时间里面Parse已经成为了最主流的BAAS服务提供 商之一,特别是被Facebook以8500万美刀的价格收购之后(参考新闻http:// tech.sina.com.cn/i/2013-04-26/11458285564.shtml),Parse更是成为了BAAS服务的首 选。为了证明Parse可以为移动应用开发节约后台相关的时间,Parse提供了一个仿 Instagram的应用,号称在30分钟内即可开发完成(36氪 | 关注互联网创业139629.html)。

PART II Parse简介

在上面的内容中我们已经了解到Parse也是BAAS服务的一种,那么它有什么样的特点 呢? parse的最大特定是简单易用,提供完美的文档支持,可以在极短的时间内上手。

1. Parse Data

类似网络数据库的功能,可以在云端存储应用中的数据,无需配置自己的服务器。 支持多种数据类型:

可存储的数据类型包括基本数据类型,地理位置信息,照片和查询等等,可完全替代 MySQL和NoSQL数据库。
云端更新:
Parse Data具有云端更新功能,开发者可以通过这里上传应用中的新资源文件,并立即 推送到应用中,而无需经过苹果的第三方审查重新提交应用。

强大的数据管理功能: 支持可视化操作,可以在无需编写一行代码的情况下管理,查询和更新服务器数据。 Parse提供了Data browser数据浏览器,允许开发者在类似excel表格的界面中管理数据库 中的数据。 当然,如果数据库中的数据很多,parse还提供了强大的filtering筛选功能,通过设置筛选 条件(类似sql语句),可以迅速找到需要更新的数据。
在data browser中开发者还可以直接添加或删除数据列,删除所有数据,设置访问权限 等。 此外,如果开发者需要一些定制功能,还可以直接联系parse(Plans | Parsecontact_sales)。

2. Parse Push(推送服务)
使用Parse Push可以创建、预设置和分割推送消息。parse的推送服务SDK简单高效,可 以通过网⻚页平台,REST API或客户端SDK来发送推送消息。
Parse Push的推送服务支持超大规模推送,无论你的应用有多少需求,都可以扩展满 足。
可视化的Push Composer:通过Parse dashboard里面的Push Composer,可以很方便的 创建、预览和发送推送消息到所有平台(iOS,Android,win8)。其简单程度和发送邮件无 异。 开发者只需要在文本框中输入相关信息,设置要发送的时间,格式(文本或JSON),并 选择要推送的设备类型(可全选),就可以立即在设备上看到效果。 精准目标设定:Pro和企业用户还可以设置特定的条件将消息推送给特定用户。

3. Parse Social

只需短短几行代码,就可以创建自己的账号系统,或者和第三方社交网络绑定 (twitter,facebook)。parse social负责账号绑定,密码设置,信息验证和安全等最繁琐 的事情。当然,类似微博微信这样的天朝社交网络还是需要自行绑定的。

此外,parse social允许用户在多个不同设备上使用同一账号来登录。 4. Parse Hosting-为网站所推出的特别服务

类似于云存储的服务,利用支持Javascript SDK和Cloud Code来实现。 让你的网站为他人所知,parse hosting可以保持静态网⻚页HTML,JavaScript,CSS,并通 过和Cloud Code交互创建动态⻚页面,从而无需后台服务器。
如果升级到Parse Pro,还可以支持自定义域名。
Parse Hosting的价格如下:
(1)免费服务: 每月100万次API请求,每超出1000次收费7美分,文件存储1GB免费空间,每超出1GB 收费20美分
(2)付费199美元服务: 每月1500万次API请求,每超出1000次收费5美分,文件存储10GB,每超出1GB收费15 美分
(3)企业级服务:
可以联系对方确认。

可以看到,Parse Hosting 的服务价格从文件存储的角度来看并没有太大优势,对于重度 文件存储类应用需要考虑其它云服务。此类用户可以考虑StackMob +Amazon S3服务。

5.Cloud Code 支持iOS,Android或HTML5,

6.所支持平台或服务:
iOS, OSX,ANDROID,Javascript,Windows Phone 8,Windows 8,.NET,RESTful API

parse的整体服务价格是基于API调用的:
1. 免费: 支持每月 100万 次API调用, 支持每月 100万次推送服务,峰值每秒20次

2. 付费:每月199美刀,支持每月1500万次API调用,支持每月500万次推送服务,峰

值每秒40次,提供30天的免费试用期

3. 企业级服务:可以单独谈。

PART III. Parse的iOS应用示例(使用Xcode4.6, iOS6.1)

该部分内容涉及到代码(示例代码参考了parse官方示例及raywenderlich网站中的相关教程),详细内容参考链接中的pdf文件:

http://vdisk.weibo.com/s/3Q0p9MS10TK

原文: http://zhuanlan.zhihu.com/kidscoding/19597061

----文章完----

最后,推荐一个神器

内测宝

个人觉得比TestFlight更简单好用,开发者只需要简单把打好的ipa包上传上去,生成二维码,测试人员在手机上扫码二维码,就可以直接安装最新的测试版本了,好用的让人想哭。

那些年一起用过的iOS开发利器之Parse的更多相关文章

  1. 那些年一起用过的iOS开发利器之CocoaPods

    本系列所有工具的简介见:http://www.cnblogs.com/lloydsheng/p/3637606.html CocoaPods是一个负责管理iOS项目中第三方开源代码的工具.CocoaP ...

  2. 那些年一起用过的iOS开发利器之Code Pilot

    本系列所有工具的简介见:http://www.cnblogs.com/lloydsheng/p/3637606.html 什么是Code Pilot? Code Pilot是一个Xcode的扩充套件, ...

  3. Android开发利器之ActivityTracker

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/113 Android开发利器之ActivityTracke ...

  4. iOS开发——高级篇——Parse 教程:网络后台基础

    本教程已针对Swift, iOS 8.3, Xcode 6.3及最新的Parse SDK(1.7.1版本)更新. 网络后台支持可以为你的App添加许多崭新的功能:不论是数据同步,社交分享,还是云端存储 ...

  5. 那些年一起用过的iOS开发利器[4月2号更新]

    4月2号新增Runscope. Runscope 这是一家专注于API工具开发的公司,其创始人John Sheehan曾就职于IFTTT和Twilio.Runscope是一款集调试.测试于一身的网络服 ...

  6. iOS开发之基于parse的登录注册

    基本上现在的每一款app都有登录功能.那也就少不了注册,找回密码等操作. 今天要说的就是初学者可以使用parse做为后台的服务器来进行一系列的操作,等以后工作的时候可以用公司的服务器. 注册用户 Bm ...

  7. Android开发利器之stetho

    文章同步自javaexception Stetho是什么? github上地址https://github.com/facebook/stetho stetho是facebook出品的一款开发调试工具 ...

  8. Android开发利器之Data Binding Compiler V2 —— 搭建Android MVVM完全体的基础

    原创声明: 该文章为原创文章,未经博主同意严禁转载. 前言: Android常用的架构有:MVC.MVP.MVVM,而MVVM是唯一一个官方提供支持组件的架构,我们可以通过Android lifecy ...

  9. 后端系统开发利器之gflags

    gflags是Google的一个开源项目,用于解析程序运行参数.gflags简单易用,它的好处在于统一配置格式,减少开发工作量.在工程实践中,gflags在简化开发和测试方面表现非常出色,它还有一个很 ...

随机推荐

  1. 数位dp模板

    #include <bits/stdc++.h> typedef long long LL; const int MOD = (int)1e9 + 7; LL L,R,G,T; int d ...

  2. EF Code First 常用命令

    1.Enable-Migrations  开启版本库 2. Add-Migration addname 新增版本 3.Update-Database –TargetMigration: addname ...

  3. php-css外边距

    css 基本语法  selector{declaration1;declaration2;....delecrationN;} (选择器和一条或多条声明)  选择器为需要改变样式的html元素,每条声 ...

  4. DPM算法源程序voc-release5在Windows中的配置修改过程

    最近的<视频处理与分析>课程中有一个大作业,是有关DPM物体检测算法的.网上有DPM的源代码,但是原版只能在Linux或Mac上运行,而我的电脑是Windows系统,于是在网上搜了一下在怎 ...

  5. 用Javascript(js)进行HTML转义工具(处理特殊字符显示)

    转自:http://blog.csdn.net/hj7jay/article/details/51280405  众所周知页面上的字符内容通常都需要进行HTML转义才能正确显示,尤其对于Input,T ...

  6. ecshop商品详情相册顺序调整

    更改相册顺序为根据id升序: 找到/include/lib_goods.php 821行: 修改为: $sql = 'SELECT img_id, img_url, thumb_url, img_de ...

  7. ASP.NET MVC中的两个Action之间值的传递--TempData

    一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictiona ...

  8. servlet 之 response 回复 字节流 字符流

    重定向 设置状态吗为302  添加响应头Location(告诉他重定向到哪里去)           //response.setStatus(302);         //添加响应头Locatio ...

  9. RobotFrameWork(四)变量运算与Evaluate

    一.特殊变量运算: 执行结果: 二.Evaluate使用 函数释义:Evaluate是执行Python表达式,并返回执行结果 示例1: 执行结果: 示例2: 执行结果:

  10. jQuery插件写法总结以及面向对象方式写法总结

    前两个是jQuery插件,后面2个是以对象的形式开发,都类似. 写法一 (function($, window){ // 初始态定义 var _oDialogCollections = {}; // ...