Facebook 开源 Parse 后端 SDK

  • 张天雷

2015 年 8 月 17 日

话题:Facebook语言 & 开发架构

作为一个 App 开发支撑平台,Parse在 2013 年被 Facebook 收购之后,8 月 13 日正式宣布开源其所有的软件开发包(SDK)。这是包括React, PrestoHHVMOSQuery,和 RocksDB在内的众多开源项目取得广泛成功之后,Facebook 开源行动的又一重大举措。

Parse 是专为移动应用提供后台服务的云计算平台,Parse 为开发者承接了繁琐的后台服务,让开发者只需专注于具体的前端开发工作。它提供任意数据存储、通知发送 / 推送、地理位置数据使用、Facebook/Twitter 登陆帐号添加等服务。Facebook 不断开源其内部项目,将内部成果反馈给开源社区。同时,通过不断开源自己的产品项目,Facebook 也吸引了大量优秀开发者为其工作,这加速了整个移动开发社区的研究创新。

Parse 的 SDK 被广泛用于移动开发社区。事实上,Parse SDK 每个月已经运行在超过 800 万个活跃的应用程序中,Parse SDK 是 Parse 平台的重要组成部分。但是对于许多开发者来说,SDK 就像是一个黑盒,用户利用 SDK 可以获得功能服务,却不知道它内部是如何运行的。正如 Parse 公司的联合创始人 James Yu 所说,开发人员有时候希望获取更多的透明性,希望了解 SDK 是如何与后端服务器进行交互的。

Yu 表示,公司的出发点并不是将所有 SDK 作为黑盒,在 Parse 团队决定开放 SDK 源码之后,不久公众将能够访问所有的代码。同时,Yu 还指出,开源之后,Parse 公司希望开发人员不仅仅是访问代码,而是希望更多开发者参与到 SDK 的开发中来,帮助修复 bug,甚至在 SDK 中加入新的功能。正如 Parse 的软件工程师 Nikita Lutsenko 在其Blog中说到的,“我们非常兴奋地可以首次向开发者展示 hook 下的真实内容”。而在 hook 背后的是,Parse 在构建一个支持多平台的应用开发支撑平台的过程中,为解决所面临的挑战的所做的努力。Lutsenko 在其 Blog 中向大家介绍了公司是如何解决这些挑战的。

Lutsenko 谈到,面向公众的 API 必须易于理解和使用,同时需要在不破坏任何现有功能的基础上持续快速地增加新的功能。为了解决这个问题,Parse 的工程师在外部对公共 API 进行结构化,内部的代码和功能却可以持续改进。此外,为了在架构上实现统一,Parse 的工程师开发了一种全新的方式来异步操作 promises 和 Bolts 框架任务。为了提升速度和稳定性,Parse 建立了一个松散耦合的架构模型,它可以让程序运行得更快,同时让已有的 SDK 功能保持足够的可靠性。

伴随着对 SDK 开源,Parse 也开放了开发者支持流程。新的 SDK 支持流程利用 GitHub 平台,在这里你可以直接与 Parse 工程师以及其他 Parse 开发者进行交互。由于源代码是所有用户都能够获取,用户可以为其发现的任意 bug 提交 Pull Request。欲了解更多关于 SDK 的 bug 报告指南,可以参考Android 指南iOS/OS X 指南

接下来,Parse 将会发布一系列的 Blog,详细介绍这些 SDK 是如何工作的。已经发布的第一篇 Blog,介绍了 Parse 的异步 API 是如何工作的。

Parse 目前在 GitHub repository 有超过 40 个项目(其中有些是文档和 Demo App),在 8 月 5 日的时候,他们还开源了命令行工具,其能够让开发者与云代码实现交互。

但是关于 Parse,不同的用户有不同的看法,用户在 Hacker News 上展开了大量的讨论。一些用户认为 Parse 对于快速地构建和运行一个 App 是不错的,但在面对比接口读写更复杂的任务的时候,其可用性会受到限制。另外,有用户认为使用 Parse 事实存在一些窍门,其可用性更取决于是否使用了正确的方式。同时也有用户针对 Parse 在使用过程中出现的各种问题,提供了可借鉴的解决方法。不过总的来说,用户对于 Facebook 开源 Parse 后端 SDK 都表现出很高的关注。

Parse SDK for AndroidParse SDK for iOS/OS X现在就可以在 GitHub 上被获取,像 Windows Phone,JavaScript,Xamarin 和 React 等其他 SDK 服务也很快能被访问。


感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

Facebook语言 & 开发架构