MBaaS深度评测:构建移动应用程序的五朵云

译文
移动开发
MBaaS(移动后端即服务)是一类很新的产品,它在很大程度上取代了MEAP(移动企业应用程序平台)。在过去的几个月间,我认真仔细地分析了五种MBaaS系统:AnyPresence、Appcelerator、FeedHenry、Kinvey和Parse。我在本文中将总结这五种系统,介绍它们的共同之处和主要区别,并给出相应结论。

【51CTO译文】MBaaS(移动后端即服务)是一类很新的产品,它在很大程度上取代了MEAP(移动企业应用程序平台)。在过去的几个月间,我认真仔细地分析了五种MBaaS系统:AnyPresence、Appcelerator、FeedHenry、Kinvey和Parse。我在本文中将总结这五种系统,介绍它们的共同之处和主要区别,并给出相应结论。

MBaaS的基本想法是,移动应用程序需要可以在诸应用程序之间共享的常用服务,而不是专门针对每个应用程序开发服务。使用MBaaS的移动应用程序遵循了松散耦合的分布式架构,而MBaaS系统本身通常拥有比MEAP系统更加分布式的架构,后者往往采用统一的中间件服务器。

MBaaS系统通常提供这些功能特性:推送通知、文件存储及共享、与Facebook和推特等社交网络整合、位置服务、消息传递及聊天功能、用户管理、运行业务逻辑的功能以及使用情况分析工具。面向企业的MBaaS系统还提供了与现有的应用软件和数据库整合的功能。

后端并不是孤立存在的,所以MBaaS系统提供了某种级别的移动客户端支持。这种支持包括:从将REST API(应用编程接口)暴露在所有来者面前,到为iOS、安卓、某些版本的JavaScript以及可能其他移动平台提供应用程序生成功能,不一而足。

此外,后端需要加以定制和编程,于是MBaaS系统提供了结合在线开发环境和桌面开发环境的机制。最后,后端服务的目的在于确保持续运作,所以它们需要一定程度的应用程序监控和错误日志机制,另外还有使用情况分析机制。监控和分析可能由MBaaS厂商直接提供,也可能通过与第三方服务整合来提供。

另外一个优点是,MBaaS系统可生成移动SDK(软件开发工具包)。当厂商将其服务暴露在从事移动应用程序开发的合作伙伴面前时,这极其有用。此外,MBaaS系统能够支持移动应用程序的离线运作和离线/在线数据库同步。MBaaS系统可能提供自己的移动设备管理,或者与移动设备管理(MDM)厂商实现整合。MBaaS系统可能还在适当情况下支持针对特定设备的服务,比如iOS设备上的iBeacon。

共性与区别

在测评FeedHenry、Kinvey、Appcelerator、Parse和AnyPresence的过程中,某些功能和实现方法显得非常熟悉。比如说,所有五种MBaaS产品都提供了使用MongoDB存储数据的机制,这是一种存储JSON对象的开源NoSQL文档数据库。所有这些产品都为各自的MongoDB数据存储区提供了数据设计用户界面(UI),这些UI外观都很相似。要是这些UI都基于相同的MongoDB示例代码,我也不会感到惊讶。

这五种MBaaS系统在多租户模式云环境下均可使用。它们都有在线说明文档,都提供了推送通知和用户验证API,都在某种程度上支持原生的iOS和安卓应用程序,都为开发人员实现自定义服务器逻辑提供了某种方式。

这些产品之间的差异颇为显著。比如说,它们支持与企业应用程序和数据库整合的程度不一,有的只提供调用返回JSON的外部REST接口这一基本功能,有的与常见应用程序和数据库深度整合。开发人员实现某一种与MBaaS整合的企业机制所需的时间长短不一,长的需要数天,短的只要几分钟,这取决于某一家MBaaS厂商之前为特定的整合做了多少量的工作。

一些MBaaS系统可在企业内部使用,另一些可在私有云中使用。还有一些采用托管模式,符合《健康保险可携性及责任性法案》(HIPAA)、支付卡行业(PCI)、联邦信息处理标准(FIPS)和欧盟数据安全等标准。有些有自己的测试功能,有些提供了移动应用程序的云构建功能。

有些支持HTML5和混合应用程序。有些可将JavaScript编译成原生设备代码。有些支持PhoneGap,有些支持Apache Cordova,有些避免这两种包装器来编写混合应用程序,改而采用其他解决方案,比如生成原生应用程序。

有些在Node.js上运行后端,有些在Rails上运行,还有一些在未特定规定的平台上运行。有些支持黑莓、Windows Phone 8、Windows 8或Unity等客户端。

有些将应用程序和后端集成开发环境(IDE)托管在云端,有些提供支持多平台的桌面IDE,有些有桌面命令行接口,用于云控制。有些支持多种流行的JavaScript框架,比如Backbone和Angular;有些使用自己的JavaScript框架,这些框架可能对特定的开源框架进行了改动。

MBaaS五虎将

正如我们所见,不同的MBaaS厂商瞄准的市场略有不同,做出的技术选择也略有不同。不过,它们都存在很大的重叠和共性。

AnyPresence

AnyPresence的目的不仅仅是帮助企业为移动应用程序构建后端。AnyPresence结合了应用程序构建功能、后端服务和API网关。

AnyPresence有一个在线设计器,可以生成后端代码、移动应用程序代码,甚至定制的移动API代码。所有生成的代码都可以下载到兼容平台上,并且在上面编辑和运行。以AnyPresence经常提到的一个客户为例,万事达卡(MasterCard)就使用AnyPresence,让合作伙伴能够按照万事达卡的Open API服务,轻松地构建移动应用程序。

AnyPresence可以为jQuery、安卓(XML布局)和iOS(故事版)生成应用程序UI(或入门套件,如果你希望的话),它还可以为Java、安卓、HTML5、Windows Phone、Xamarin和iOS生成应用程序SDK。设计环境将生成的JavaScript/HTML5 SDK称为“jQuery”。事实上,AnyPresence其实生成的CoffeeScript使用Underscore库、Backbone库和jQuery库。

AnyPresence可以为Ruby on Rails生成后端服务器软件。在未来,它还有望生成Node.js后端,这将是一件好事。AnyPresence环境生成的程序可以部署到Heroku(通常用面向Rails后端)、亚马逊S3(通常面向HTML5应用程序)以及原生iOS和安卓应用程序,有没有Apperian安全不好说。不过,你并不受制于AnyPresence的部署选择。生成的代码总是可以下载并部署到别处,假设你拥有兼容的部署环境。

AnyPresence的应用程序构建选择屏幕。请注意:可以生成种类广泛的SDK和种类较少的原型应用程序UI。

AnyPresence设计环境处于在线,可在大多数浏览器里面运行。设计环境有仪表板,设置屏幕,创建及监控环境、部署和代码构建的屏幕,生成和部署应用程序、后端和SDK的屏幕,添加及管理数据源和数据对象的屏幕,用于授权、角色和验证策略的屏幕,用于自带和自定义插件的屏幕,接口设计器以及一套可以定制的主题。

我觉得数据源的种类很广泛,所提供的MongoDB数据存储区的实现与其他MBaaS系统大同小异。AnyPresence的过人之处在于数据模型在整个设计环境当中的整合方式以及整合到所有已生成代码中的方式。

你可以添加大多数监控整合(比如Airbrake和New Relic)的地方藏在Deployments/Add-ons选项卡的深处。很自然,监控依赖运行时环境,而AnyPresence旨在做到与环境无关。想与Splunk整合,你就得在后端上启用syslog输出,以便将所有的日志/事件推送到Splunk系统,用于报告和监控。

Appcelerator

Appcelerator Titanium扎根移动开发领域已有好几个年头了,本地开发环境能够将JavaScript编译成针对iOS、安卓及其他目标平台的原生代码。该公司在2014年7月份发布了Appcelerator Studio 3.3和Appcelerator平台2.0,之后添加了一款MBaaS,拥有大约25套API、支持Node.js以及在线分析功能。此外,Appcelerator发布了MBaaS接口,广大开发人员可以将这些接口添加到用原生SDK构建的应用程序中,不过它还没有在其自己的Appcelerator Studio IDE中支持原生SDK。

开发人员在在线Appcelerator仪表板的概览页上一眼就能看清应用程序安装、会话、API调用和崩溃的概况。仪表板的其他部分便于云管理、测试、性能度量和分析。

Cloud面板显示使用情况、暴露数据管理、显示API请求及推送通知日志、列出自定义服务以及允许云配置。测试面板使用了SOASTA的TouchTest作为一种整合的移动测试解决方案。性能面板让你可以监控自己的应用程序,并排查性能、崩溃和异常情况。它还让你可以查看崩溃趋势、与错误跟踪系统整合起来以及配置你的监控机制。

Appcelerator平台的仪表板显示了演示的Field Service应用程序的概况。崩溃有意被编码到应用程序中。

开发人员可以在线定义和查看Appcelerator分析工具,另外可以视需要,将所选择的分析工具发布到iPad版Appcelerator Insights应用程序,通常供管理人员使用。

Appcelerator平台让你可以使用Studio和Appcelerator的Node.ACS MVC(模型/视图/控制器)框架,构建自定义的后端服务。Node.ACS结合了Node.js、Express以及Appcelerator云服务的接口。Appcelerator还让你可以在其云平台上运行普通的Node.js应用程序。

Appcelerator在客户端有多个框架以及面向云端的多个API类型。在客户端的基本层面,Appcelerator提供了Titanium SDK,该SDK在JavaScript和原生服务之间提供了一种接口。在较高层面,Appcelerator提供了Alloy框架,该框架基于模型/视图/控制器架构,包含对Backbone和Underscore的内置支持。你通过Studio构建一个新的客户端应用程序时,通常生成的是使用Ally的应用程序。

Alloy框架可以处理你对离线/在线数据同步的一部分需要,但无法满足全部需要。除了面向SAP和Salesforce.com的数据连接器外,Appcelerator缺少预先配置的、经过审查的企业数据连接器。不过,由于它可以在其Node.ACS服务上运行Node模块,开发人员可以利用来自Node.js社区的模块。Appcelerator唯一的商用同步服务器目前仅限于微软Dynamics连接器。

FeedHenry

FeedHenry致力于支持企业业务应用程序,这是一种基于Node.js、面向企业的MBaaS和移动应用程序平台。它提供了一系列广泛的整合,同时拥有在线和离线开发选项,协作式应用程序构建以及拖放式表单构建器。FeedHenry在2010年从爱尔兰研究所(Irish Research Institute)分离出来,2014年9月被红帽收购。

FeedHenry声称在各大云上都有全球性基础设施,支持内部后端部署。FeedHenry在线环境直接与GitHub整合,实现协作和版本控制功能。

FeedHenry 3为iOS、安卓和Windows Phone 8支持原生的SDK,另外支持使用Apache Cordova的混合应用程序、HTML5移动Web应用程序、Sencha、Xamarin和Appcelerator Titanium。鉴于FeedHenry云的JavaScript接口的工作方式,很难找到不兼容的JavaScript框架。

用JavaScript为FeedHenry编写应用程序时,你可以在HTML中添加feedhenry.js脚本,用$fh.init来初始化,然后从$fh名称空间调用云功能。FeedHenry可以从Zip文件或Git软件库导入现有的应用程序。

FeedHenry包括一个在线编辑器,支持离线工具,还有一个命令行接口。我们在这里看到的是移动应用程序,屏幕中间是代码编辑器,右边是预览图。你可以在在线界面的另一个面板中配置后端服务。

FeedHenry构建服务的功能与Adobe PhoneGap Build如出一辙,可以将HTML5应用程序变成二进制代码程序,适用于安卓、黑莓、iPhone、iPad、iOS(通用)以及Windows Phone。每个二进制程序可以连接到你的一个MBaaS实例,它可以针对开发、分发或发行等应用而构建,具体视平台而定。

FeedHenry有一个拖放式表单构建器,拥有种类丰富的模板,可以用作起始点。不过我在测评FeedHenry时,功能完备的应用程序模板数量并不多。

FeedHenry在精选模块列表中列出了50多个Node.js插件。该列表包括大多数主要关系数据库和NoSQL数据库的接口。要是该精选列表上没有你所要找的模块,那么全面得多的Node社区模块列表可能会列有与之匹配的模块。

FeedHenry可在各大公有云和私有云上运行,还可以在一系列广泛的IaaS和PaaS基础设施上运行。FeedHenry在欧洲和北美都运行一个符合HIPAA的云环境和多个活动集群。

Kinvey

Kinvey自称是一个完整的移动和Web应用程序平台。它提供广泛的客户端支持,与主要的企业数据库整合,还提供后端数据存储区、文件存储区、推送通知、移动分析、iBeacon支持以及在后端运行自定义代码的功能。

Kinvey推销时将IT部门视作主要的客户群,因为它提供了企业平台,不是面向一两个应用程序,而是面向企业里面的成千上万个应用程序。不过,它还积极支持众多应用程序的开发者社区。

Kinvey支持原生应用程序、混合应用程序和HTML5应用程序。它为iOS和安卓提供了原生工具包支持。此外,它还支持Angular、Backbone、Node.js、Apache Cordova/PhoneGap和Appcelerator Titanium,它还提供了一套REST API。Kinvey通过代码库和API调用与应用程序整合起来,期望你在本地编辑应用程序。

Kinvey云代码用JavaScript编写,不过不是Node.js,实现在线编辑。除了使用标准的JavaScript和外部服务外,它还可以使用Kinvey API实现众多功能,比如日志、访问组合、发送推送通知、发送电子邮件、验证请求、日志和时间功能、异步处理、显示Mustache模板以及获取后端上下文。云代码可以在驻留在处理钩子的函数和自定义端点中。云代码在Kinvey中实现内部版本控制。

Kinvey组合使用MongoDB,MongoDB提供了供应用程序使用的无模式、非SQL数据库。该屏幕让你可以创建和设计组合(只需要创建步骤),并选择是启用还是绕过你的数据库业务逻辑。

Kinvey支持部署在几乎任何云上,当然包括私有云。这包括部署到符合HIPAA的设施以及完全位于欧盟国家的设施。连Kinvey的多租户模式云也被认为对大多数应用程序来说足够安全,因为该公司实现了端到端加密,使用数据链路的客户可以将数据库里面的数据放在本企业的防火墙后面保管起来。如果你有一台Google App Engine服务器,可以将它连接到你的Kinvey后端。

验证工作可以由Kinvey在内部完成,也可以通过商务版和企业版中的LDAP或活动目录来完成。Kinvey还通过OAuth,支持Facebook、推特、Google+和LinkedIn身份。

Kinvey数据链路连接到Kinvey的MongoDB数据存储区。在大多数情况下,客户将CRUD(创建、读取、更新和删除)请求直接转发到实际后端,但一些客户将数据缓存在MongoDB中。Kinvey目前为微软Dynamics CRM、Salesforce CRM、甲骨文数据库和微软SQL Server提供了相应的数据链路。

Kinvey提供了自动化控制机制,实现离线数据同步:要是应用程序处于离线状态,就自动从缓存获取数据。要是应用程序处于在线状态,就从网络获取数据,并将数据存储在缓存中。使用自动化控制,只要设备再次处于在线状态,你的Kinvey应用程序就会试图同步任何本地存储的数据,但如果服务器数据也出现了变化,就会发生冲突。你可以将设置冲突解决策略设置成clientAlwaysWins、serverAlwaysWins或自定义冲突解决功能。

Parse

Parse一度是MBaaS领域的典范,尽管已被Facebook收购,但它对容积有限的消费级应用程序来说,仍是一种切实可行、容易见效的移动后端。说到优点方面,其说明文档完备,提供了良好的原生客户端支持和基于Backbone的JavaScript客户端SDK。Parse还可以在后端运行JavaScript代码,这为开发人员提供了全是JavaScript应用程序堆栈这一选项。至于缺点方面,Parse遗漏了企业应用程序必不可少的重要功能,比如数据整合、离线操作以及在线/离线同步。与此同时,其价格似乎针对容积较小的应用程序。

Parse支持原生移动应用程序、JavaScript应用程序和桌面应用程序。在移动端,它为iOS、安卓和Windows Phone 8提供了原生支持。在桌面端,它支持OS X和Windows 8(.Net),另外还支持Unity游戏。

Parse让你可以在云端运行JavaScript代码,使用与客户端一样的Parse JavaScript SDK。Parse提供了一款命令行工具,可用于管理Parse云中的代码,还让你可以使用电脑上经常使用的JavaScript编辑器,而不是像FeedHenry和Kinvey那样,经常在浏览器中编辑云代码。不过,你可以在仪表板中查看代码和日志。命令行工具集多种角色于一体:应用程序框架生成器、应用程序部署工具、日志打印器、应用程序回滚工具以及自动更新器。

Parse云数据浏览器让你可以导入批量数量,添加类、列和栏,以及查看过滤后的数据。

Parse可以将推送通知发送到iOS、安卓、Windows 8和Windows Phone 8。不管在哪种情况下,你都要配置推送服务器,然后将一个或多证书提供给你的应用程序。

Parse有一个相当全面的预定义用户系统,包括为匿名用户提供了通常的注册机制,带有电子邮件验证和条款。访问控制列表(ACL)系统控制着每个用户可以读取和写入什么数据。至于那些较为复杂的使用场合,Parse支持角色层次体系,为每个角色提供了一层单独的ACL。

Parse与其他服务共有九种整合。其中三种:Mailgun、Mandrill和SendGrid用于发送电子邮件。Stripe用于信用卡收费。Twilio负责发送短信和语音消息。第三方模块还可用来将Parse与Cloudinary、Instagram和Paymill整合起来。

据我所知,实现企业数据与Parse整合需要为数据源编写REST Web服务包装器、为Parse编写JavaScript模块。除了使用Parse自己的多租户模式云外,我还没有见过托管Parse的任何办法。

大大改进的MBaaS

正如你从本文末尾列出的评测分数可以看到,AnyPresence得分最高:总分9.1分,并获得了“编辑选择奖”。我觉得,AnyPresence为需要将现有系统与移动应用程序整合起来的企业提供的价值超过其他产品,因为除了应用程序和后端外,它还可以通过你的模型和设计生成定制的SDK。不过,每年收费“高达六位数”,因而并不适合每家企业的预算。

FeedHenry的总分为8.6分,也是一款面向企业的MBaaS。FeedHenry与Git实现了很好的整合,可用于协作和版本控制;它的托管应用程序构建服务、Node.js后端和精选Node模块列表,还有拖放式表单构建器,我都很喜欢。与AnyPresence一样,FeedHenry可能也不适合每家公司的预算。

Kinvey的产品总分为8.3分,这家公司既吸引着开发者社区,又吸引着企业的IT部门。我喜欢Kinvey通过其内部的NoSQL数据库API提供企业数据链路的方式,也喜欢其为后端业务逻辑设计钩子的方式。

我批评Appcelerator的地方是,它显然没有竭力精选数据整合模块;我认为,它相对于FeedHenry和Kinvey较高的价格可能会降低总体价值,因而总分只有7.8分。不过,Appcelerator这家公司只是最近才转战MBaaS领域。它可能需要填补产品的缺失功能,调整价格,才能提高竞争力。

最后,我认为Parse很适合为面向消费者的移动应用程序、而不是企业应用程序构建和运行后端,那是由于它缺少任何数据连接器,只有一个基本的REST客户软件。我对Parse所持的另一大保留意见是按使用收费的价格,虽然这让开发人员很容易上手,但是可能让一家资金不足的初创公司很苦恼:要是初创公司突然有一款热门应用程序,却没有正儿八经的商业模式,更是如此。得分仅7.6分,在这组产品中垫底。

这倒不是说你不该使用Parse。这是一种切实可行、容易见效的入门方式,后端作为服务来提供。不过,如果你选择使用它,就要睁大眼睛,密切关注费用。

就企业应用程序而言,AnyPresence和FeedHenry在易用性和功能方面一路领先。Kinvey并非远远落在后面,其价格对小公司来说更实惠。

记分卡

后端服务

(20%)

客户端支持

(20%)

易用性

(20%)

整合

(20%)

监控

(10%)

价值

(10%)

总分

Parse

8

8

8

6

8

8

7.6

★★★

Kinvey

9

9

8

7

8

9

8.3

★★★★

FeedHenry 3

9

9

8

9

8

8

8.6

★★★★

Appcelerator平台

2.0.0

8

8

8

7

9

7

7.8

★★★

AnyPresence

9

9

9

10

8

9

9.1

★★★★★

英文原文链接:http://www.infoworld.com/article/2842791/application-development/mbaas-shoot-out-5-cloud-platforms-for-building-mobile-apps.html

布加迪编译

责任编辑:闫佳明 来源: 51CTO译文
相关推荐

2012-05-14 17:35:28

移动Web

2017-12-10 14:13:14

云服务云原生应用程序

2011-12-06 10:10:59

云计算移动应用

2012-03-21 09:36:33

ibmdw

2015-02-05 09:56:53

2011-11-23 10:06:32

Azure微软移动应用

2018-12-28 14:10:57

开发工具 移动应用

2012-03-30 15:54:43

ibmdw

2023-07-26 16:20:36

云原生云计算

2024-01-02 00:18:56

Buffalo项目Go Web框架

2013-09-30 10:19:46

SAP

2022-05-23 14:48:44

人工智能机器学习科技

2014-03-27 10:28:31

移动Web开发框架

2013-09-18 10:59:37

企业BYODMBaaS企业移动应用

2015-01-06 13:42:45

跨平台开发APP工具

2021-11-05 11:03:33

云计算开发技术

2012-04-19 09:34:21

ibmdw

2013-09-24 09:52:33

移动应用虚拟化

2013-01-05 10:28:18

虚拟化移动应用

2015-02-02 09:16:49

公有云云应用程序优化
点赞
收藏

51CTO技术栈公众号