2016 年 6 月

第 31 卷,第 6 期

此文章由机器翻译。

移动开发 - 使用 MBaaS 平台加速移动开发

通过 Paras Wadehra | 2016 年 6 月

移动应用程序开发开销很大百分比来自后端集成。此外,大多数应用程序具有一组核心变化很少的功能在它们之间。因此而不是生成相同的功能和组件又一遍地从零开始为每个应用程序时,如果您可以集中精力是什么使出色的移动应用程序 — 用户体验 — 和其他关键应用程序功能使用 (而不是生成)? 这是完全的理论基础移动后端作为一项服务 (MBaaS),这为您可以使用的服务提供了这些重要但常见的应用程序功能,允许您保存有大量的时间 (和因此资金) 上的应用程序开发时将重点放在交付给用户更完美的体验。

不仅您不必再为每个应用程序重新开始,MBaaS 平台还允许您使用"解除耦合"开发方法为应用程序前端和后端。这意味着在同一时间构建前端和后端,并且现在可以连接两个只是所执行的"翻转开关"两面什么时候完成。

我将引导您完成示例企业应用程序的开发过程中使用这两个"自己做"(DIY) 和 MBaaS 方法的主要步骤然后比较这两条并请参阅在哪种方案中一个有意义呢。此用例的高级别要求如下所示 ︰

  1. 应用程序需要 Active Directory 联合身份验证服务 (AD FS) 对其用户进行身份验证。
  2. 应用程序应连接到并显示 SharePoint 实例,但需要对数据进行筛选,而不是显示完整的记录集,从 SharePoint 中的数据。
  3. 应用程序应当允许用户浏览数据时脱机。
  4. 应用程序应当允许用户添加新记录时处于脱机状态且会自动与服务器同步这些记录,该应用程序处于联机状态时。
  5. 应用程序应该会收到推送通知,确认新的或更新记录已成功保存在 SharePoint 中。
  6. 应用程序应当允许用户拍摄一张照片并将其上载到服务器附加到正在创建的记录。

现在假设您已经只是已传递这些要求并生成移动应用程序要求。从何处入手? 让我们看一下这些选择。

一种选择是融洽相处例如 AD FS 和 SharePoint 的后端服务启动并正在运行,用于承载您的文件的服务器 — 在本例中的图片。您还需要构建基于 AD FS 和 SharePoint 让您连接并与他们交谈来自移动应用程序的服务。则您应能够构建前端的移动应用程序,以连接到这些后端服务。

您可能还通过启动构建前端的移动应用程序,让它见过的模拟数据和身份验证源第一次,然后更新移动应用程序后将起来后, 端服务与实际数据和身份验证源和运行。但是,这要求您创建模拟数据和身份验证系统或可用于生成移动应用程序的服务。

使用这些位 DIY 两个选项之一,前端应用程序将需要进行对话的后端相同的语言,可能会中断如果后端更改,需要对应用程序进行成本高昂且耗时的修复。

相反,使用 MBaaS 平台是指前端的移动应用程序和后端服务可以在创建同时由两个不同的团队 — 这意味着更快地投入 — 并且这两个可以连接到使用 MBaaS 平台本身相互。这种方法的几个好处之一是您不必担心如何创建模拟服务来模拟数据和身份验证的源。

MBaaS 平台提供 Sdk 用于本机和混合平台。您只需将为所选的平台 SDK 集成到您的开发环境和针对以使其易于使用后端服务的代码。MBaaS 您的应用程序将会占用的最重要功能之一将与后端数据和标识源集成。MBaaS 平台还提供一个抽象层,从而隐藏来自前端的移动应用程序的后端的复杂性。

让我们更详细地了解每个这些选项需要执行。我将上执行该功能的 DIY 方法首先检查每个应用程序和焦点的所需的功能,然后将其进行比较的做事的 MBaaS 方式。最后,我将执行这两种方法的总体比较。

身份验证

使用 DIY 方法时,您首先需要建立到 AD FS 的连接器,然后使用该连接器来对用户进行身份验证。连接器必须可从移动应用程序使用,并允许从应用程序返回到 Active Directory 进行身份验证的用户名和密码传递。一旦 Active Directory 成功地对用户进行身份验证,它将返回身份验证令牌将需要进行分析,加密和存储的使用在将来调用。此外,如果身份验证提供程序支持刷新令牌,代码将需要将编写为在其过期时自动刷新的身份验证令牌。

了解 MBaaS,与此相反,您就做出身份验证呼叫使用客户端 SDK 用户进行身份验证,如下所示 ︰

MBaaS.login(redirectURI);

根据身份验证的类型,该提供程序可能会向您提供其自己的登录屏幕 (OAuth 样式) 或 MBaaS 提供程序可能会提供其自己的登录屏幕的版本。所有 MBaaS 提供程序至少某些无需编写代码连接器到企业标识源,包括但不是限于对 AD FS。你只需提供 MBaaS 云门户中的几个配置参数和配置 MBaaS 与你的 AD FS 实例。提供配置参数的类型包括提供程序登录 URI、 注销 URI、 证书文本和名称 ID 格式的 URI,以及重定向 Uri 和生存时间 (TTL) 身份验证令牌。您应能够从您的企业中的 AD FS 管理员获取这些值。只需通过设置这些配置参数您创建与 AD FS 实例的连接。

实现在整个身份验证过程的复杂性现在已简化为一行代码。那么身份验证握手,检索身份验证令牌,并加密并存储它,同时还等的所有后端复杂现在都仔细审查了 MBaaS 平台和相应的 SDK。

数据访问

DIY 数据提取看起来很直接,直到您坐下来并试一试。不太坏的数据源的默认情况下公开的数据之上可使用 Web 服务。它甚至可能是轻松地直接连接到数据源从基于 Web 的应用程序。但是,移动平台通常没有相同的连接器到企业数据源可用作 Web 应用程序。这意味着需要编写自定义的连接器,极有可能作为 Web 服务,它与数据源进行通信并公开其数据使用普通的 HTTP 动词,如 GET、 PUT、 POST 和删除。此外,此连接器将需要某个位置托管。在大多数情况下,将从您的网络,这意味着您创建的服务必须能够与外部世界,以及防火墙内部企业领域 Web,外部访问您的应用程序,这意味着,一个口可能需要在防火墙中将数量过。在创建自定义的连接器之后,可以从移动应用程序连接到它,并据此执行所有数据操作。但是,如果您需要使用户可以提取仅根据其查询某些记录集? 这就需要构建 Web 服务,可能已相当复杂,特别是如果您需要允许用户进行复杂的查询中的查询功能。

大多数 MBaaS 系统都提供开箱连接到多个企业数据源,这意味着你只需将它们配置而不是创建它们的连接器。对于示例用例中,将为 SharePoint 配置连接器,通过提供类似于主机 URL 以及用户名和密码以连接到你的 SharePoint 实例的配置参数。使用从 SharePoint 中的移动应用程序的数据只需编写一行代码即可 ︰

MBaaS.data.get(NameofDataCollection [,QueryParams] [,Options]);

通常,这将从您的数据源返回 JSON 对象的数组。使用现成可用连接器从 MBaaS 提供程序的好处之一是此类连接器提供了一种方法来发现数据存储区中的所有对象,因此你可以只是都发现所有 SharePoint 列表并选择您想要以提供对来自移动应用程序的访问。您还可以筛选和安排返回通过 SharePoint 完成的只是几个以便时只有一小部分可能会向应用程序实际上很有用,大量的数据集不发送到移动设备中的移动应用程序所需的字段。同样,而无需编写任何自定义代码应用筛选器 — 移动开发人员巨大的价值主张。没有提供此类功能 MBaaS 设置,筛选的整个负担并协调数据归结于移动应用程序 (这意味着在设备上的更大带宽和电池消耗 — 移动用户永远不会很好的体验) 或到使用的服务器端脚本,您将需要编写,承载的某处和管理 (哪个表示正在进行的工作和为您的维护)。上一行代码中的方法的 QueryParams 输入允许您将基于查询的参数,以允许搜索和筛选的记录,根据需要或用户输入的传递。

MBaaS 平台通常还提供了内置到平台本身,因此不具有其自己的数据源的应用程序可以使用内置 MBaaS 数据存储区来存储和使用数据的数据和文件存储区。

离线数据

只使数据可供脱机使用的是使用 DIY 方法实际上非常简单。您需要做的只是将数据存储在本地设备上,在本地存储区中或在数据存储,如 SQLite,以及当用户尝试访问您的应用程序中的数据从这里读取。

但是,不可以十分轻松地启用脱机编辑现有数据或添加新数据,然后将其与服务器中同步负责处理的过程中可能会发生冲突时。正如曾尝试实现冲突解决代码的任何人将告诉您,不是最有趣要执行的操作。您需要检查本地修改了哪些实体和其已在服务器上修改一次,然后找出每个实体的哪些属性已修改,和同一实体的相同的属性已被修改在客户端和服务器,决定哪些更改优先并将程序另存为记录的值。

使用客户端 SDK 从 MBaaS 提供程序应使启用应用程序中的脱机数据消耗变得容易得多。从上一节中使用数据消耗示例,您将只是某些选项将值传递给该调用,,如下所示 ︰

MBaaS.data.get(NameofDataCollection [,QueryParams] , Data.Offline, Data.EncryptFull);

在此代码中,我启用脱机数据存储设备,以及对数据进行加密。SDK 如何存储以便脱机使用的数据变化商的但程序的实现应该不会影响您与 MBaaS SDK 互动方式。SDK 将负责为您的脱机实现周围的诸多复杂性。更好,能够让加密应一样简单,只是涉及设置一个选项。这样可使脱机数据安全存储区,大多数企业应用程序的一项关键要求。MBaaS SDK 会自动对用户交互的数据进行解密或在屏幕上显示,并且对用户输入的数据进行加密然后再将它存储在设备上。SDK 通常负责启用脱机编辑和添加的新数据。这能按预期方式工作,不过后, 端系统必须 LastUpdatedTime 实现对于每个记录。同样,设置更多的冲突解决选项确定在客户端或服务器上的更改赢得双方同时更新某个记录时。

推送通知

设置推送通知的 DIY 项目可以是一个挑战。如中所示 图 1, ,多个步骤必然出现的成功推送通知通道,将设置和要发送推送通知。(请参阅 bit.ly/UWPPush 有关详细信息。)

  1. 通用 Windows 平台 (UWP) 应用程序与操作系统请求推送通知通道。
  2. 创建 Windows 通知服务 (WNS) 新的通知通道并将其返回给调用设备在窗体的统一资源标识符 (URI)。
  3. 通知通道 URI 都会返回由 Windows 应用程序。
  4. 您的应用程序发送到您自己的云服务,以便发送通知时,可以访问 URI 的存储位置的 URI。
  5. 当你的云服务具有要发送通知时,它通知先前使用的 URI 的 WNS 注册。这是通过发出 HTTP POST 请求,包括通过安全套接字层 (SSL) 的通知负载。
  6. WNS 接收请求,并将通知路由到适当的设备。

用于设置和发送推送通知的流
图 1 流用于设置和发送推送通知

此外,您需要应用程序启动,因为可能会过期通道 Uri 每次请求一个通道,并仍将有效 URI 不能保证在前一个通道。如果返回的通道 URI 是您一直使用的 URI 不同,您将需要更新你的云服务中的 URI。您还需要将通道 URI 映射到用户的设备 ID,因此您可以在您的服务器上更新相应的通道 URI。

任何好 MBaaS 平台提供了简化推送通知设置的方法。还记得您刚才看到一条成功推送通知发送到 UWP 应用程序的步骤吗? 现在看一看 图 2, ,它显示您不必如果您使用 MBaaS 平台执行操作。

由 MBaaS 处理推送通知复杂性
图 2 推送通知复杂性由 MBaaS 处理

如您所见,MBaaS 隐藏的所有复杂程度设置、 管理以及向用户发送推送通知。所有这处理使用客户端 SDK 进行一次调用 ︰

MBaaS.registerForPush();

和写入 MBaaS 平台,并将确定何时发送一条推送通知时,将发出推送到相应的用户的预定义的方法调用中的服务器端业务逻辑。

文件服务器

以下 DIY 路径意味着您需要承载和管理您自己的文件服务器以允许用户从其设备拍照并将其上载到服务器,并且还管理对这些文件的用户访问权限,使一个用户不能访问其他用户的文件。此外,您需要管理的服务器,以及可伸缩性、 性能和安全更新的正常运行时间。

MBaaS 平台,您可能无需实施任何措施能够在云中的主机文件。MBaaS 平台的功能之一是在初始状态下的文件存储访问。获取要承载所有常见的文件类型的完全支持 CDN 的文件存储 — Pdf、 图像、 视频、 office 文档等。与其他功能,您需要执行只 MBaaS SDK 来处理的文件存储在云中进行简单调用的方法。文件 API 允许您上载、 下载和流式文件与文件存储使用调用,如 ︰

MBaaS.File.upload(FileName);
MBaaS.File.download(FileName or FileID);

这就消除了管理巨大的文件服务器 (具体取决于的数量和大小所存储的文件),包括扩展和压缩存储基于在任何给定时刻,需要在的疑难问题和管理的正常运行时间和文件访问延迟。

其他 MBaaS 功能

我已经介绍了这篇文章开头的示例应用程序的功能集,但我希望重点介绍几个其他 MBaaS 平台功能可能简化应用程序开发 ︰

服务器端业务逻辑使您能够运行大量服务器上处理,而不使用客户端设备上的电源。它还允许您筛选所发送的数据从数据源发送仅保存用户的带宽,并在移动设备上需要什么。此外,您可以截取任何通过、 网络适配器和从 MBaaS 平台的调用。

服务器端缓存启用次秒级用户体验的方案。传统企业数据源通常需要几秒钟时间来响应查询,但移动用户需要更快的响应,如果加载应用程序时间太长,它们只是将卸载该应用程序,并转到竞争对手。使用服务器端缓存功能,企业数据源中的数据可以在移动应用程序快速响应的请求 MBaaS 平台内缓存和缓存都可以从原始数据源在后台以无提示方式更新。

总结

DIY 和 MBaaS 方法都有应用程序开发中的位置。使用 MBaaS 平台的优势是很明显,但在某些情况下只会使用 DIY 方法可能会很有效。这种情况下包括已有所有必要的服务来连接到数据和标识源的一次性应用程序开发项目。对于此类数据和标识源的服务连接未尚未生成并且将需要从多个应用程序使用的情况下,MBaaS 平台可以真正提高速度移动开发通过提供现成的后端集成的最复杂的功能。借助 MBaaS 平台的情况下,您可以专注于应用程序的用户体验而不要担心集成数据和标识源、 加密、 脱机实现、 冲突解决方法、 推送通知设置和其他基本的移动应用程序但关键组件。

最后,它是 MBaaS 平台提供的好处,从而允许您根据需要更改您的后端数据和标识源的频率是抽象。此外可以不需要重新编写应用程序中代码的单个行来更改您的服务器端业务逻辑。移动 Sdk MBaaS 平台工作提供这种抽象形式来保持运行的应用程序,可避免更新时,测试 (包括单元、 集成和回归测试),以及在部署应用程序和等待存储再次批准 !

一个缺点是,使用 MBaaS 平台可能会导致更难以更改平台,如的连接器实现抽象的用户。在 DIY 方法中,您将拥有的所有连接器的代码,因此很容易进一步为将来的需求对其进行自定义。

当构建移动应用程序,同时费时费力和从日常维护、 安全及保养的服务和所涉及的服务器的角度来看,MBaaS 确实提供显著的成本节约。


Paras Wadehra是有经验的软件架构师,同时让应用程序,可在 Web 上,可以解决问题台式机和移动平台。他拥有针对所有主要移动平台,包括 iOS、 Android 和 Windows 进行开发的体验。他编写 C#、 Node.js、 JavaScript、 SQL 和 Swift 命名只需少量的代码。Wadehra 目前是 Windows 开发领域的 Microsoft MVP。他在各种业内活动和会议中发表演讲,并可以在 Twitter 上达到 ︰ @ParasWadehra 和 LinkedIn 上。

衷心感谢以下技术专家参与本文的审阅: Hermit Dave (关联按受限,英国),Kurt Monnier (Kinvey,Inc.) 和 Arun Nagarajan (Uber)
Hermit Dave 是 Windows 开发人员与在企业和消费者空间合作超过 15 年的经验。

一直在 Kurt Monnier 高级总监解决方案和客户成功 Kinvey,inc.,帮助企业客户自 2007年以来构建移动应用程序。

Arun Nagarajan 是 Uber 工程经理。