Q: 什么是Parse?
A: Parse是一个基于云端的后端管理平台。对于开发者而言,Parse提供后端的一站式和一揽子服务:服务器配置、数据库管理、API、影音文件存储,实时消息推送、客户数据分析统计、等等。这样,开发者只需要处理好前端/客户端/手机端的开发,将后端放心的交给Parse即可。目前Parse支持超过50万个App。
Q: Parse 跟脸书是什么关系?
A: 脸书(Facebook)于2013年以8500万美金收购Parse。之后Parse的功能不断推陈出新。平台越来越强大的同时,越来越多的开发者也将App的后台工作完全交给Parse。但是由于脸书的云战略一直不是其主要方向,且Parse难以整合进脸书的其他产品,脸书决定于2017年1月28日彻底关闭Parse。
Q: Parse 有哪些狂拽酷炫的功能/优点?
A: Parse 有很多优点:支持功能多、API设计条理清晰、用户界面简单易用等等。笔者个人觉得,最深入人心的优点为以下两点:
- 简单易用。很多对后台完全没概念的开发者也可以快速上手。Parse的界面非常简洁明了,鼠标点几下就可以轻松管理后台。Parse的官网上还有很多的开发教程和示范,大大降低了理解和运用的难度。门槛很低、扩展空间大,无论是新手还是老手都可以开发得如鱼得水。
- 多平台支持。Parse在手机端方面支持:iOS,Android, Windows;网页端支持:Javascript, PHP, .Net;其他还支持:OS X,Cloud,Embedded C,Unity。平台上的API支持的功能应有尽有,几乎涵盖开发的方方面面。
Q: Parse 的缺点有哪些?
A: 在每期的Ask Parse Anything里面,都有开发者提出各种各样的问题 - 其中大多数是由于Parse的文档不清楚导致的。笔者在这里稍微举几个:
- 有限制的API请求,但是Parse的Doc里面并没有说明
- 数据库不支持大文件,有时候图片文件稍微大一点就存不进去了
- 通知推送有时候会有延时
- 多线程的支持有限,支持最多同时2个线程,不支持mutex/lock/semaphore
- 对数据库的Join操作非常烂,原因是Parse使用的是MongoDB NoSQL数据库
Q: Parse的内部架构/运行原理是怎样的?
A: 首先,Parse SDK的内部API传输数据都是异步且多线程处理的,API主要是基于任务机制。Parse团队在服务器上保持了一个ParseObject的依赖链,以此来拼接各种异步操作。他们还为此专门搞出来一个Bolts框架,详情请参考 Let's Bolt!
其次,Parse采取了典型的解耦架构。解耦架构就是组成架构的不同控件之间互相交流,而又不相互依赖的一种架构。比如网站开发,UI前端部分和后端部分是一起构成网站整体的。但是他们之间又可以互相独立开发:UI可以使用模拟数据开发,无需等待后端架设完成。这就是解耦架构。
Parse 将整个架构分成Parse逻辑网络,控制器,对象实例三个部分:
- 对象实例通过set和get方法更新数据。因为是解耦架构,所以不用担心底层重构或者添加新功能的影响;
- 控制器是SDK和对象实例的桥梁。对象实例通过状态与控制器交流,状态定义了两者之间的交流的接口,当两者交流完成后,相应的状态也会变化。
- 控制器通过REST格式传给Parse内部逻辑网络,这样防止不必要的序列化和反序列化。这样做同时也方便测试。
Q: Parse 有什么很酷的开源项目/工具吗?
A: 因为Parse马上要关闭了,所以他基本上已经完全开源了平台。下面是Parse几个重要项目的github链接:
Q: 与Parse类似的产品?
A: LeanCloud。功能全面,架构稳定,进步很快。Uber、知乎等App都使用的后端服务平台。团队阵容也十分强大。国产的技术产品能走向世界的不多,笔者很看好。
参考文献
What are the advantages and disadvantages of using Parse as a mobile app backend?