清远高端建站:将移动后端理解为服务

2019.08.12 mf_web

174

如果您可以在开始构建移动体验之前为移动应用程序创建完整的数据同步,推送通知支持,用户管理和文件处理后端,该怎么办?如果它以这样的方式构建,以便您可以在此后端轻松地无缝创建新的跨平台本机和Web应用程序,该怎么办?

虽然这可能听起来像童话故事,但正是移动后端服务提供商(MBaaS)的目标是为应用程序开发人员提供服务。您可以自行决定是否对您正在创建的体验采用这种方法。清远高端建站

通过本文,我希望您获得四个关键信息:MBaaS提供商适应现代移动应用程序开发的方式,评估MBaaS提供商的过程,MBaaS提供商提供的核心功能以及利用此类解决方案的缺点。有了这些信息,您就可以确定MBaaS提供商是否适合您的数字战略。

构筑讨论

规范围绕MBaaS的讨论极具挑战性。虽然MBaaS是一个被接受的术语,但每个人都有不同的定义。Kinvey最近映射了后端即服务企业解决方案的提供商。该地图说明了一个广泛的生态系统,定义不同的解决方案组可能极具挑战性。

随着景观每分钟都在变化,在任何给定时间点击倒所有玩家都很困难。但是,一些主要的提供商已经在市场上证明了自己。Parse,Kinvey和Salesforce.com等提供商已经构建了成熟的平台,这些平台目前被您每天使用的许多应用程序所依赖。其他更新生的解决方案,如亚马逊网络服务(AWS)Cognito,Microsoft Azure 移动服务,Apple的CloudKit,Kony MobileFabric和Pivotal CF仍需要时间进行评估。比较MBaaS提供商的另一个关键挑战是并非所有提供商都具有功能奇偶校验。

注意:对于本文,我将把时间花在Parse和Kinvey上,因为它们的成熟度和功能广泛。这两种解决方案适用于大多数用例,从独立开发人员的应用程序到跨多个数字属性的企业解决方案。

现实生活中的MBaaS

为了帮助解释MBaaS的目的,我将使用我们最近在Universal Mind的研发团队创建的一个例子。我们在Universal Mind的所有办公室都拥有灵活的工作空间。我们想要研究如何使用iBeacons跟踪可用的工作空间。

iBeacons是一类遵循Apple的iBeacon规范的传感器。它们利用蓝牙4低能量进行通信,允许应用程序不间断地搜索它们而不会耗尽用户的电池。它们是用于确定用户接近度(用户与物体的接近程度)的理想传感器,在某些设置(例如室内)中比使用GPS更理想。

作为概念验证,我们希望创建一个快速的跨平台应用程序原型,说明如何大规模利用这一想法。该应用程序本身是相当基本的。以下是描述应用程序如何运行的数据关系的简单概述:

  • 用户有帐户。

  • 如果用户足够靠近给定站点的iBeacon,则可以将用户分配到工作空间。

  • 工作空间可以占用或空置。

  • 工作空间存在于具有特定位置的办公室。

  • 用户可以在该点获得他们附近的空闲工作空间列表。

在这个应用程序示例中,我将引导您完成两个不同的场景。首先,我们将看到如何在没有MBaaS解决方案的情况下构建它。然后,我将与使用MBaaS解决方案实际构建它的方式进行对比。通过这一点,您将清楚地看到使工作所需的工作量水平完全不同。

这是由Universal Mind的研发团队开发的移动应用程序原型的视图。

这是由Universal Mind的研发团队开发的移动应用程序原型的视图。

没有MBAAS

要创建这个跨平台的应用程序,我们需要放置一些核心组件:

  • 服务器。我可以启动AWS Elastic Compute Cloud(EC2)实例并运行Node.js服务器。我甚至可以利用Elastic Beanstalk或OpsWorks来处理一些常见的部署过程。

  • 数据库。因为我在查看AWS,所以我可以利用关系数据库服务(RDS)或DynamoDB来存储数据。还可以选择在AWS上部署其他解决方案,例如MongoLab。

  • 服务。我可以创建与数据库的整个集成,然后公开基于REST的服务,以便轻松地对数据执行CRUD操作。

  • 用户管理和安全。我需要将用户实体作为数据的一部分包含在内,然后将服务中的权限与特定用户和/或组拥有的数据联系起来。此外,我需要让用户能够注册,重置密码,删除他们的帐户等。

  • 推送通知。在EC2服务器上部署的Node.js应用程序中,我需要集成一些模块中的一个,以便为iOS和Android提供跨平台通知。虽然大多数繁重的工作都会在这些开源模块中发生,但我仍然需要将应用程序逻辑与通知集成在一起。

  • iOS服务集成。因为iOS是目标操作系统,所以我需要在iOS上使用Swift或Objective-C与此服务器集成。另外,我需要确定如何处理服务缓存,数据存储,离线处理,推送通知处理等。

  • Android服务集成。因为Android是一个完全不同的平台,我需要在该平台上创建相同的服务器集成。我需要处理我在iOS上解决的所有问题。

有了这些项目,我就可以开始实际构建应用程序的视图并将它们与数据连接起来。我也可以开始处理iBeacon集成并根据用户的接近程度将工作站设置为“占用”。但是,达到这一点并使基础设施到位将需要我花费大量的时间和配置。这就是实现MBaaS的好处的地方。

有了MBAAS

这里的美妙之处在于最重要的项目是我照顾的:我从来不必处理配置服务器,设置和配置数据库,设置服务,管理用户,保护数据,设置推送通知或集成本机服务。所有这些都是作为MBaaS的一部分提供的。我的步骤现在看起来有点不同:

  1. 使用MBaaS提供商创建应用程序。

  2. 在每个应用程序中包含本机SDK。

有了这些项目,我可以用最少的代码来处理两个主要的服务交互:获取附近的工作空间并将工作空间的状态从空置变为占用(反之亦然)。下面,我使用Parse作为MBaaS提供程序,详细介绍了一些带有这些示例的iOS Objective-C代码示例:

// In header file or class extension@property (nonatomic,strong) NSArray *workstations;// Within the implementation/*
  After the view loads, we can asynchronously grab the user's location
  and then use that to query for a list of nearby workstations.
*/- (void)viewDidLoad{
  [super viewDidLoad];
  // Get the user's location as a Parse PFGeoPoint
  [PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) {
    if (!error) {
      [self fetchWorkstationsNearPoint:geoPoint];
    }
  }];}/*
  This method asychronously fetches an array of the workstations
  that are within two miles of the user's current location.
*/- (void)fetchWorkstationsNearPoint:(PFGeoPoint *)geoPoint{
  PFQuery *query = [PFQuery queryWithClassName:@"Workstations"];
  [query whereKey:@"location" nearGeoPoint:userLocation withinMiles:2];
  [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error)
    {
      self.workstations = objects;
    }
  }];}
复制

 

在上面的代码中,我解决了第一个挑战:在距离用户当前位置两英里的范围内获取工作站的数据。这首先是在应用程序加载完成后调用抓取用户的当前位置。Parse提供了一个获取此数据的帮助程序,因此我们不必CLLocationManager直接依赖。接下来,fetchWorkstationsNearPoint调用该方法,该方法异步查询Parse的数据存储。在幕后,SDK正在进行REST调用以从Parse的数据存储中获取数据。

/*
  This method fetches a workstation data object given the iBeacon
  identifier. Then, it sets the occupied property and saves the
  object asynchronously.
*/- (void)setWorkstationState:(BOOL)isOccupiedwithBeaconIdentifier:(NSString *)beaconcompletionHandler:^(NSError *error)completion{
  PFQuery *query = [PFQuery queryWithClassName:@"Workstations"];
  [query whereKey:@"beaconIdentifier" equalTo:beaconIdentifier];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error)
    {
      POWorkstation *workstation = [objects firstObject];
      workstation[@"occupied"] = [NSNumber numberWithBool:isOccupied];
      [workstation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        completion(error);
      }];
    }
  }];}
复制

在上面的代码中,我解决了第二个挑战:设置给定工作站的占用状态。此代码与第一个代码片段一样简洁。虽然您没有看到触发此交互的iBeacon代码,但我想捕获与Parse的所有交互。首先,基于信标标识符提取特定工作站。此字符串值是数据存储中工作站的属性。接下来,我设置对象的占用属性,然后将该值保存回后台的数据存储。

完成这些任务所需的代码非常少,因为大部分逻辑都发生在Parse的iOS SDK中。它处理诸如服务委托,数据转换和缓存数据存储之类的事情,大大减少了开发人员随着时间的推移编写和维护的代码。虽然这不是灵丹妙药,但它为最常见的移动用例提供了可靠的解决方案。

核心前提

通过这个例子,你可以看到MBaaS的核心承诺是它解决了一次支持你的移动后端的困难挑战,它可以在多个项目中一致地利用它。您可以利用MBaaS供应商,而不是启动基于云的数据库,推送通知服务器和用户管理系统,这将提供所有这些开箱即用的功能。此外,您不再需要对后端的正常运行时间和可扩展性负责,而是依赖供应商。

虽然MBaaS肯定有其怀疑论者(我将在本文后面讨论),但过去一年对MBaaS的关注是不可否认的。早期的MBaaS提供商Parse被Facebook收购; 从那以后,苹果,微软,亚马逊和谷歌都出现了自己的云平台。此外,随着平台的成熟,现有供应商蓬勃发展,并且正在看到采用率的大幅提升。

区分选项

没有两个MBaaS解决方案是相同的,因此了解如何比较它们至关重要。提供商之间的主要区别在于三个方面:平台支持,部署方法和功能焦点。

跨平台支持

MBaaS的核心优势是能够跨多个平台支持应用程序。某些解决方案(如iCloud和CloudKit)可以在单一平台上提供深度集成的数据存储(MBaaS的一个组件)。虽然这适用于单个平台,但它极大地限制了应用程序在未来成为跨平台的能力。但是,如果应用程序只能在单个平台上运行,那么这可能是一个很好的解决方案。

一些提供商专注于本地移动平台,而其他提供商则支持移动Web体验甚至桌面应用程序。大多数MBaaS体验的核心是提供REST服务,允许在大多数平台上使用,但特定于技术的SDK对开发人员来说是一项重要的好处。选择为您希望支持的所有平台提供SDK的MBaaS提供商将是理想的选择。

  • Parse目前为iOS,Android,Windows Phone 8,Windows 8,PHP,JavaScript,Mac OS X和Unity提供SDK。

  • Kinvey目前为iOS,Android,JavaScript,AngularJS,Backbone.js,Ember.js,Node.js,PhoneGap和Titanium提供SDK。

部署方法

除了跨平台支持,MBaaS解决方案还可根据其部署方式进行区分。确定哪些选项对组织有意义取决于几个因素,包括现有基础架构,数据存储法规(针对敏感数据)和成本阈值。

以下是MBaaS解决方案最流行的部署方法:

  • 管理,多租户。借助托管多租户MBaaS解决方案,您无需担心在基础架构上部署环境。在大多数情况下,提供商将利用现有的云提供商(如AWS)将您的应用程序部署到可扩展的环境中。在此环境中,您的后端将在服务器上与其他应用程序一起在平台的其他用户上运行。

  • 管理,敬业。使用托管专用解决方案,提供商仍将利用AWS等公共云,但您将确保将MBaaS环境部署到专用于您的服务器。

  • 管理,内部部署。通过内部部署解决方案,提供商将MBaaS环境部署到您拥有的服务器上。在大多数情况下,这需要您使用特定的虚拟化平台,例如VMware vCloud Air。对于一些处理敏感受监管数据的组织,这可能是一项要求。在大多数情况下,提供商将与组织的内部IT团队一起管理平台。

  • 开源。借助开源MBaaS解决方案(如OpenKit和Helios),您可以在自己选择的任何基础架构上自行部署和管理解决方案。这可以是内部部署或基于云的解决方案。但是,您必须自己维护和更新系统。虽然这些解决方案可以让您完全控制,但它们也否定了MBaaS解决方案的许多优势。

对于大多数小型组织而言,托管多租户选项将完美运行。较大的企业可能面临隐私问题,州和联邦法规以及企业法令规定一种解决方案而非另一种解决方案。例如,金融机构通常对可以存储帐户数据的地方有严格的限制。在这种情况下,管理的内部部署解决方案可能是唯一的可能性。

Parse目前提供托管多租户选项。Kinvey目前提供托管多租户,托管专用和托管的内部部署选项。

特色焦点

大多数MBaaS解决方案都有一个重点领域。一些主要针对独立应用程序开发人员,而其他提供商则专注于企业。了解您的努力所在也将帮助您确定哪些MBaaS解决方案值得投入您的时间和金钱。

一个很好的例子就是Kinvey对企业的关注。Kinvey提供数据连接器规范,允许企业将外部数据源连接到现有MBaaS数据存储,以及AuthLink以与企业身份验证和授权集成。对于大多数独立应用程序开发人员而言,这些功能相当微不足道,但对于希望将MBaaS解决方案集成到现有系统中的企业而言,这些功能绝对必不可少。

Parse有不同的侧重点。自Facebook收购以来,它一直没有像企业那样关注,但由于它与Facebook的整合,它现在提供了与社交巨头的很好的整合。Parse的SDK现在提供了几个专门用于更容易访问特定Facebook数据的实用程序。

核心MBaaS功能

通过MBaaS解决方案提供的大多数核心服务可满足移动应用程序的核心需求。主要的MBaaS提供商共享四个关键功能:用户管理,带安全性的同步数据,推送通知和文件处理。了解这些关键功能领域将有助于您了解MBaaS提供商如何成为您数字战略的一部分。

用户管理

大多数提供商都将用户管理作为核心功能。使用此功能,您可以为每个用户提供一个可以附加元数据的帐户。有些服务更进一步,允许您轻松集成电子邮件验证,密码重置,社交登录和匿名用户支持。这是MBaaS功能的核心方面,因为它直接与整个平台的安全性相关联。

对于以企业为中心的MBaaS,此解决方案更进了一步。Kinvey等供应商提供与现有LDAP提供程序的集成,甚至允许用户使用Salesforce.com凭据进行身份验证。关键在于很少有企业客户希望重新发明用户管理,而只是想与现有解决方案集成。一些企业级MBaaS供应商很好地满足了这一需求。

具有安全性的同步数据

在当今的数字环境中,用户很少只与一个设备甚至一个平台进行交互。虽然像iCloud这样的解决方案使开发人员能够在同一平台上为具有多个设备的用户保留数据,但它无法解决用户需要从移动应用程序访问网站中相同数据的情况。同步的跨平台数据对于旨在将其自身暴露给用户生活中所有领域的用户而言至关重要。因此,同步数据是大多数MBaaS解决方案的核心。

推送通知

实时推送通知是许多移动应用程序的基本要素。但是,与Apple推送通知服务(APN)或Google Cloud Messaging集成通常需要专用的服务器应用程序。许多组织已经建立了自己的跨平台通知服务器来管理这些交互。

Parse和Kinvey都为Android和iOS提供了基本级别的推送通知集成。

文件存储和交付

从将用户生成的内容上载到远程应用程序内容的全局交付,应用程序需要与文件交互。许多应用程序与Amazon CloudFront等现有服务协同工作,以利用全球内容交付网络(CDN)来实现其远程内容。大多数MBaaS提供商提供CDN解决方案的抽象,使应用程序开发人员能够使用边缘服务器网络,以确保他们的内容在全球范围内以一致和高效的方式提供。

附加功能

在这一核心功能集之后,MBaaS提供商分支到许多不同的功能集。例如,Kinvey具有iBeacon集成,而Parse具有第三方集成功能,例如发送SMS消息。如果您希望利用特定功能,找到适合您应用路线图的平台至关重要。并排评估解决方案变得困难,因为可用选项没有完整的功能奇偶校验。

缺点和怀疑论者

虽然对于希望缩短其应用程序的整体上市时间并在其数字属性中提供后端一致性的组织而言,此功能似乎是一个梦想,但请考虑以下几点:

  • 在大多数情况下,MBaaS解决方案旨在提供非常低的成本障碍。但是,随着应用程序使用量的增加,成本曲线通常也会有相当陡峭的斜率。

  • 由于MBaaS解决方案并非都符合标准规范,并且大规模数据迁移并非总是如此简单,因此应用程序将锁定在最初选择的MBaaS解决方案中。这并不是说它无法改变,但在许多情况下,这样做的成本和努力是广泛的。

  • MBaaS提供商是热门商品。你需要看看Facebook对Parse的收购,看看MBaaS提供商当然可以获得。彻底检查您正在考虑的每个MBaaS提供商的条款,以了解这可能会如何影响您的应用程序。

然而,在许多情况下,优势大于缺点。由于缺点,在将一个MBaaS解决方案纳入您的应用程序的开发计划之前,要广泛研究它们。

MBaaS肯定有其怀疑论者的份额。在MBaaS的早期,我把自己算在那个群体中。怀疑论者的主要问题是,单个解决方案如何提供每个应用程序所需的灵活性?事实是,没有任何解决方案具有满足每种需求的灵活性。由经验的所有者决定选择最接近所需功能的解决方案,以及将用于呈现体验的平台。在某些情况下,将找不到匹配项,并且自定义后端将是最佳方法。

在我之前提到的特定用例中,这种方法可能为我节省了几周的开发时间。此外,它使我不必监视和管理服务器实例,作为整体解决方案的一部分。对我来说,好处是缩短了原型的上市时间。但是,正如我们将在下一节中讨论的那样,这不是唯一的好处。

MBaaS和数字标准

我非常喜欢在组织内建立数字标准(无论组织规模如何)。数字标准确实需要先见之明,但如果做得恰当,它们可以在整个组织的数字属性中产生很高的效率和一致性。但是,大多数组织只关注用户界面标准。在许多情况下,跨多个数字项目使用MBaaS的组织也可以实现类似的后端交互标准化。

在单个项目中采用MBaaS显然对组织有一些好处,但是在多个项目中使用它所产生的共享学习和一致性是最有价值的地方。

谁应该考虑这种方法

MBaaS几乎可以为任何规模的组织提供价值,但优势不同:

  • 企业。对于大型组织,企业级解决方案(如Kinvey)将为组织的移动应用程序执行常见任务设置后端标准。此外,它还标准化了移动应用程序如何访问MBaaS云之外的数据(使用Kinvey的数据连接器等解决方案)。

  • 中小型组织。对于小型组织,MBaaS提供完全不受管理的可扩展基础架构。组织可以在不需要一个专门的团队来监控基础设施的部署经验,24 / 7。此外,它可以大大减少上市时间和一段时间内维护的代码量。

如今许多公司都在利用这种方法。凯迪拉克,旅游频道和食品网络只是利用MBaaS的几家公司。GovTribe,Hipmunk和Timbre等经验均由MBaaS提供商提供支持。

清远高端建站这两种解析和Kinvey提供几个案例研究,将帮助您评估成功的经验。


最新案例

寒枫总监

来电咨询

400-6065-301

微信咨询

寒枫总监

TOP