面向移动开发者的云服务:谷歌、Amazon、Azure、Parse

基于云的移动应用程序后端结合了不同复杂度的关键服务

移动平台的胜利给企业世界带来了许多变化。现在的电子邮件更简洁了,因为没有人可以用小小的键盘打字。网页更简单,因为没有人的眼睛能看到小屏幕上所有的细节。云计算是必不可少的。移动电话和平板电脑如果没有位于很远的货架上的机器提供的健康的服务集合,就不可能存在。

云一直是一个好主意,但现在它是不可或缺的。能够在桌面计算机的文件系统中查找信息是一种令人敬畏的自由——也是一种巨大的责任。桌面世界仍然遵循着早期个人电脑时代创造的生活规则。它们是你的文件;现在拿出点勇气,好好照顾他们。

[住宿在云的顶部用“云计算深入研究”的特别报道。今天下载它!|从亚马逊到Windows Azure,看看《信息世界》的评论中对精英公共云的比较吧。|对于一个快速,智能取你会谈论新闻,请查看信息世界TechBrief- 今天订阅。]

移动操作系统使得粗犷的个人主义几乎不可能实现。移动用户不能操作文件或处理他们自己的数据,除非他们采取极端措施和根目录他们的手机。可能是因为早期的手机相对来说太笨了,所以它的发展是偶然的。也许这是设计上的,因为史蒂夫·乔布斯知道智能手机用户并不想要台式电脑用户拥有的传统权力。或许智能手机的创造者们之所以在《几个好男人》(A Few Good Men)中模仿杰克·尼科尔森(Jack Nicholson),是因为他们知道我们应付不了。

无论如何,如果没有稳定的云后端连接,几乎不可能为移动世界构建任何重要的应用程序。电子邮件和笔记最好存储在某个地方,因为有人会把手机丢在马桶、湖泊、水坑、一锅汤里,谁知道呢。即使是在教室后排浪费时间的小游戏也需要保存用户的历史记录。桌面游戏可以将最大分数存储在本地磁盘上,但这不适用于手机。所有这些数据都需要存在于手机之外的某个地方。

好消息是,云计算公司已经准备好提供帮助。在早期,您总是可以设置自己的服务器、连接自己的例程和启动自己的数据库来处理移动客户机。现在谷歌,亚马逊,微软,还有Parse (收购Facebook(去年4月),正加紧提供更多的交钥匙系统。他们在自己的基础机器上构建了另一层数据服务,并将其卖给希望购买后端而不是批量购买的开发人员。这些包完成了应用程序所需的大部分工作,并提供了扩展能力。

接下来我们将介绍这四种云,它们提供被称为“移动服务”或“移动后端服务”(MBaaS)的api。虽然移动服务听起来是全新的,但实际上,这些云将大量的旧工具和少量的新工具混合在一起,然后在结果上加上关键词“移动”。This isn't a shabby play on our gullibility, but a savvy repackaging. Desktops and other machines need many of the same services. After all, the only differences between mobile and desktop are often the size of the screen, the keyboard, and the pointing device. To a data center, the devices are exactly the same. It's not surprising that many of these APIs recognize that fact.

微软Windows Azure移动服务Windows Azure是微软围绕其原始计算能力和数据存储云而推出的品牌名称。在越来越多的工具中,移动服务占据了一个角落,这是一组将JSON信息包导入和导出微软云数据库的例程。

这个名字说明了mba们围坐在桌边谈论品牌名称时会发生什么。并不是云中的所有东西都与Windows操作系统有很大关系。所有进出流量都是开放标准的,而且大部分基础设施都是开源的。用于出租的虚拟机上操作系统的选择菜单开始Windows服务器,但它也包括Ubuntu和Oracle Linux。身份管理器支持使用Microsoft帐户以及Facebook、Twitter和谷歌帐户登录。Azure团队显然希望对客户的任何需求都开放,但品牌经理可能认为加入“Windows”这个词将起到杠杆作用或品牌延伸的作用。

当我深入挖掘时,微软封闭社区和开放网络之间的分歧变得更加明显。许多文档鼓励程序员使用Visual Studio创造一切。我点击了下载按钮,等待超过3GB的文件到达。

在等待的过程中,我摆弄着我的Linux机器,发现我不需要Windows或Visual Studio来享受Windows Azure移动服务的奇迹。在浏览器窗口中点击几下之后,我配置并测试了一个位于微软云中的庞大数据库表,它吸收了我发送给它的数据。我在Visual Studio上的下载仪表最多只有几百兆字节的数据,但我的移动应用程序有一个运行后端。我取消了下载。

这个秘密就是Windows Azure的移动服务是漂亮的前端在Node.js。顶部的logo来自Microsoft central branding,但只需几分钟就会意识到,下面的几乎所有东西都是Node.js,它充当了Microsoft SQL数据库的看门人。

当您开始通过添加逻辑定制移动服务时,这一点就变得很明显了。如果单击Insert,浏览器中将为您提供一个字段,其中包含一个用JavaScript编写的启动器函数。在将数据传递给将其写入数据库的代码之前,可以以任何方式操作数据。您可以在几行JavaScript中过滤数据、检查错误和添加自定义字段(如时间戳)。当你点击保存时,Windows Azure移动服务会将其转换为Node.js代码。

这是构建简单Web服务的干净方法。编辑JavaScript函数,Web后端将它们打包为Node使用。在开始犯错误之前,我度过了一段美好的时光——没有太多的调试支持。代码要么工作,要么失败。当我留下一个大括号时,一切都停止了,直到我弄明白。对于基本工具和快速前端来说,Web界面很好,但不能在数据上构建长而复杂的过滤器。

Windows Azure仪表盘可以显示所有服务的使用情况并跟踪数据流。

值得注意的是,您不需要处理许多细节。当我向发送给服务器的JSON数据包中添加额外字段时,存储这些字段的新列就神奇地出现了。后端完成了大量工作,并使该过程非常类似于使用非结构化文档存储(如CouchDB)。用很少的代码也可以走很长的路。

Azure简化了这一过程,它为从Windows到iOS、从Windows Phone 8到Windows Phone 8的六种平台提供了所需的所有代码模板Xamarin的。在它们中,添加正确的库只需要几行代码,存储数据需要多几行代码。你不需要Visual Studio来做这些。

我不知道这将会与品牌经理想部署概念“品牌延伸”,但我喜欢使用移动云用一个简单的HTML5应用。微软做得很好开放到每个人,这意味着它将会很容易使用的项目需要跨越传统的Web,遗留的桌面机和移动应用的新的世界。

并不是每个部分都如此简单或容易理解。推送服务主要针对Windows应用程序。用Visual Studio构建它们更简单。这些也可以通过一些工作连接到苹果和谷歌的云信息系统上。Azure服务器上的编程是用JavaScript完成的,只需插入一个库就可以将消息发送到正确的通道ID。

Azure移动服务有更多的部分,微软也在不断地增加。像调度和缩放这样的功能被列为“预览”,尽管它们看起来是可行的。计划作业是一个JavaScript函数,而扩展会改变服务层的容量级别。

整个包展示了可以用JavaScript做什么。如果您熟悉这种语言,那么您会喜欢使用一些函数和一些表单输入来创建相当复杂的系统。添加简单的业务逻辑来导入和导出数据库中的数据是非常容易的。如果你不喜欢JavaScript,学习需要什么并不难。

我怀疑,更雄心勃勃的项目将迅速打这个系统的限制。如果你认为你需要返工一个低级别的呼叫或添加复杂的逻辑,你可能会开始遇到把一些JavaScript到浏览器的文本字段的限制。但是你可以做相当多的什么微软提供了这里。

谷歌移动后端启动谷歌提供了第一个作为计量服务出售的应用平台:应用引擎。现在谷歌也想成为移动后端,为了做到这一点,它将一些现有的云基础设施捆绑在一起。谷歌已经有一个带有REST API的存储引擎、一个用于谷歌登录的身份验证系统和一个消息传递系统。把它变成一个有凝聚力的移动产品并不难。

一个移动应用程序的基础可以用这些部分中的任何一部分来构建。谷歌的api集合非常庞大,对于任何应用程序或桌面工具来说,它总是一个好的开始。在谷歌云中存储信息很容易,只需要做一点点工作。

行动后端更侧重于消息传递、身份验证和连续查询,最后一个是处理来自超共享世界的无尽信息流的工具。虽然App引擎将接受PHP、Python和Go代码,但所有移动后端示例都是Java。

挖掘这些工具是惊人的繁重。在下载了几个小时的Eclipse插件之后,我无法将库和代码组合在一起。问题的一个主要部分是谷歌播放服务,越来越多我们认为是谷歌的封闭源途径。关于开放的适当程度总会有争论,但我花了好几个小时来安装这个库。部分问题在于模拟器现在有两种风格:谷歌和Android。区别要清楚,因为如果没有谷歌播放服务,代码无法单独在Android上运行。

谷歌的移动后端API Explorer允许您测试和调试您的API调用。

新功能很吸引人,但也有点吓人。谷歌想要与一些更新的,看起来持续的服务如Twitter竞争。如果你写了一个新的连续查询,你可以让App Engine搜索过去,未来,或者两者都搜索。对未来的探索不用时间机器;它们只是坐在服务器上等待新数据被存储。如果新信息与查询匹配,则将其推送到客户机。该文档指出,目前等待的客户数量限制在1万。至少在谷歌解决这个限制之前,你不会马上启动一个像Twitter这样大的项目。

该文档附带,是为了吓跑休闲编码器的警告:“预期搜索是一个实验性,创新性和快速变化的谷歌应用程序引擎的新功能不幸的是,作为对最前沿的手段,我们可以利用后向兼容。变为潜在搜寻,我们会通知社区时,此功能已不再是实验性的。”

这是什么意思?在一些屏幕上,App Engine本身仍然被列为“预览”。事情真的会改变吗?毫无疑问,谷歌会尽其所能确保平台保持尽可能稳定,但云的一些元素显然还在开发中。

使用任何附加的移动后端特性都是一个很好的教训,说明了为什么Java开发仍然是一个昂贵的过程,只有那些有足够的时间和金钱的人才知道。工具很复杂,代码又长又复杂。例如,从谷歌云存储中删除blob的代码包含一个循环,该循环将尝试删除5次,以防API被淹没或不可用。它充满了处理许多类型异常的块。丰富性对于构建高可用性的可靠软件的大型团队是有用的,但这不是一个简单的过程。

当然,你不需要深入挖掘才能享受财富。有几十个api——地图、日历、联系人、驱动器、Hangouts等等——其中大多数对于移动世界都有一些真正的价值。所有这些不同的元素都应该被视为移动服务的一部分,即使它们不在所谓的移动服务的官方列表中。

12 第1页
第1页共2页
工资调查:结果在