APP下载

移动应用开发技术选型策略

2019-01-07史兆彦

关键词:开发技术跨平台选型

史兆彦, 李 翔

(中远海运科技股份有限公司,上海 200135)

0 引 言

移动硬件技术、移动通信技术和互联网技术的迅猛发展使得移动应用得到迅速普及和快速发展。据统计[1],截至2017年底,每个智能手机用户的平均APP数量达到40个以上,平均每天花费在各类APP上的时间达到约4.2 h。因此,对于企业品牌的宣传、产品的推广和服务的扩展而言,除了开发传统的管理系统和网站以外,移动用户的接入是企业应用无法忽略的重要组成部分[2]。

然而,移动设备(特别是手机)操作系统的不同使得开发移动应用的技术不尽相同。对于企业而言,面对诸多的应用类型和开发技术,没有现成的指导策略可供参考。因此,本文对移动应用的分类、开发模式、技术路线和开发团队等因素进行相关探讨,为企业移动应用开发技术选型提供策略参考。

1 移动应用开发技术的发展现状

根据NETMAKETSHARE的统计数据[3],Android和iOS已占据手机操作系统98%以上的市场。由于Android和iOS的开发技术完全不同,早期很多企业必须针对这2个平台开发具有相同功能的APP,会耗费大量的人力和财力资源,增加开发和维护成本。

为解决该“不一致”带来的问题,出现诸多跨平台的移动应用开发技术,其中基于HTML5的移动开发技术得到广泛认可,即开发一套移动Web页面,用户可通过浏览器访问移动Web页面,但系统的性能和用户体验与原生应用(Native APP)有本质上的差别。在此情况下,基于HTML5的混合移动开发技术(Hybrid APP)开始出现,其本质是将一个Web应用嵌入到Native APP中。然而,Hybrid APP的性能与Native APP依然有着不小的差距,“用户体验”的更高要求催生出新的跨平台移动开发技术,以React Native技术为代表的基于JavaScript的Native开发技术应运而生,其本质是在APP运行时通过JavaScript调用原生功能完成操作,性能几乎与Native APP相同;同时,统一的开发语言、一次编写、分别编译和多端运行等特性使得跨平台移动应用开发方面的问题几乎能全部解决。

2 移动应用开发模式的分类比较

目前应用程序基本上分为4种模式,其中:第一种是需安装的Native APP模式;第二种是借助手机浏览器运行的网页应用(Web APP)模式;第三种是融合上述2种模式得到的混合模式(Hybrid APP),这种APP虽然也需独立安装,但部分功能是借助内置浏览器Web页面运行的。近年来,随着移动应用用户的大量累积,有些移动应用本身转变成了应用平台,在此基础上发展出基于特定应用扩展方式的寄生模式,即无需独立安装新的应用,依赖于特定的应用环境运行,如支付宝应用和微信小程序等。表1为这些移动应用类型的对比[4-6]。

3 移动应用开发技术栈的分类比较

不同的移动应用类型在实现方式上对应着不同的应用开发技术栈,主要包括传统模式、Bridge模式和寄生模式等3种。

3.1 传统模式的技术栈

与传统PC应用开发模式类似,针对不同应用类型采取不同的开发方案。Native模式对应Native APP的开发,需针对不同的平台使用不同的开发语言和工具,乃至设备。Web模式对应Web APP的开发,使用HTML5等Web开发技术实现,针对移动设备的特点,一般采用适于移动设备的前端Web框架或基础组件库。Hybrid模式对应Hybrid APP的开发,使用Web技术和少量的Native技术实现。国内的AppCan框架是一个比较出色的Hybrid框架[10];Ionic是当前广泛采用的Hybrid框架,通过Cordova将一个Web应用嵌入到Native APP中。

3.2 Bridge模式的技术栈

Bridge模式是使用第三方开发语言编写Native APP的方式,本文为区分与Hybrid APP实现方式的差异,将其称为Bridge模式。该模式的实现思想在Hybrid APP的设计中就已形成。在Hybrid APP中,Web页面与Native之间存在一种称为JSBridge的通信机制,可实现Web页面与Native功能的互操作;Bridge模式将其进一步发展,摒弃使用Web View渲染的做法,改用Bridge的方式调用原生功能,使用一种语言编写跨平台APP,抽象出与平台无关的业务代码实现通用,基本上实现“一次编写,分别编译,多端运行”的开发部署模式。Bridge模式目前有2种代表性的实现方案,即基于C#的Xamarin方案和基于JavaScript的Native解决方案。

1) 基于C#的Xamarin跨平台移动开发解决方案[7]由Mono发展而来,Xamarin包含Xamarin.Android、Xamarin.iOS和Xamarin.Forms,其本质上是对原生API做一层C#的封装。Xamarin的开发思路是使用C#完成通用的、与平台无关的逻辑部分,针对不同平台UI和交互方式,使用API访问和操控Native组件,实现不同平台的UI开发。

2) 基于JavaScript的Native开发技术是使用JavaScript,通过JSBridge调用原生组件。不同于Hybrid使用Web View,该模式的页面代码由JavaScript 引擎处理,并管理渲染Native视图,调用原生 API 和用户交互。该模式的代表是Facebook的React Native技术[8]。国内阿里巴巴的Weex也采用这种技术路线[9],其在页面渲染上跳出浏览器环境, 既拥有原生Native的交互体验,又能保持Web高效和灵活的特点,支持跨平台,通过JavaScript调用原生平台标准组件,使APP获得平台一致的效果和体验,有着媲美Native的性能和流畅性。

表1 移动应用类型对比

3.3 寄生模式的技术栈

寄生模式主要实现基于宿主APP的功能扩展开发,依赖于宿主APP本身的功能。以微信公众平台[11]为例,分为微页面模式和小程序模式,2种模式都是基于微信的跨平台方案。

1) 微信服务号和订阅号除了提供交互转发服务以外,还提供页面嵌入功能,在开发页面时,可调用微信API实现部分原生功能,页面代码运行在微信内置的浏览器中,这种方式可看作是基于微信的Hybrid模式。

2) 微信小程序使用JSBridge,通过微信调用本地资源,在体验上优于订阅号和服务号,具有Native APP体验。小程序开发框架提供有视图层描述语言WXML和WXSS及基于JavaScript的逻辑层框架,并在视图层与逻辑层之间提供有数据传输和事件系统,这种方式可看作是基于微信的Bridge模式。

3.4 开发模式的技术栈比较

开发模式并没有优劣之分,选择哪种开发模式与企业产品的要求、产品定位、开发周期和团队技术人员的技术积累有很大关系。企业需根据自身条件进行选择,表2为移动开发模式的技术栈比较。

表2 移动开发模式的技术栈比较

4 移动应用开发技术选型策略

移动应用的类型选择确定了其开发模式,开发模式的确定影响着技术栈的选择,技术栈的选择影响着开发团队的建设;反之,开发团队的技术积累会影响技术选型和开发模式,进而影响移动应用的类型选择。

4.1 移动应用开发技术栈参考架构

移动应用开发技术栈主要是框架和组件库的选型,架构师的主要工作已从原来的实现技术框架(加法)转变为从海量技术中选择最合适的技术组件(减法)。企业的移动开发团队需对移动应用的类型和技术领域进行分析,结合团队自身的技术积累和可能的投入总结出一套应对移动开发模式的技术栈。图1为移动开发技术栈参考模型,针对不同类型的开发模式,给出相应的技术选择域,对技术团队建设具有指导意义。

技术栈模型选择以React Native技术为核心,同时融合HTML5的移动前端解决方案,兼顾微信平台的开发,具有以下特点:

1) React Native采用JavaScript语言,前端开发人员可通过培训快速投入开发;

2) 跨移动平台适配能力,基于React Native,通过封装或引入基础组件形成基础组件库,实现“一次编写,分别编译,多端运行”的跨平台目标;

3) React Native的机制能实现与Native APP的集成和代码混编,为集成历史组件和应对性能需求提供实现方式;

4) 为应对快速变化的场景,参照Hybrid APP的思想提出RN Bridge的思路,融合前端开发技术,使用基于React Native的Web View渲染可变更界面,UI混搭取长补短,发挥Native和HTML5各自的优势应对功能频繁变更的需求;

5) 微信平台的开发依赖于微信的接口,经过适配,订阅号和服务号的开发可共用RN Bridge的Web页面。

4.2 选型策略参考模型

针对移动开发诸多的模式选择和技术栈,如何找到最适合本企业的开发技术是移动开发团队最关心的问题。图2为选型策略参考模型,使用决策树模式展示。企业可根据自身团队的特点和技术积累,参照参考模型选择技术栈。图2中,箭头上的条件决定着选择路径的走向。参考模型中并未囊括所有的选择可能和开发技术,可根据实际条件和技术偏好添加或移除相关分支。

参考模型将应用类型、开发模式和实现技术结合起来,从高层级的应用类型分类到低层级实现技术,清晰展示了技术选型的路径走向。

4.3 选型的综合因素

技术因素与技术团队的建设互为影响,技术选型影响着开发团队的技术组成和技术积累,同时团队现有的技术积累和人员配置又影响着技术选型。企业在做移动应用时,通常需同时考虑用户对应用的功能性和非功能性需求指标, 而非单纯的技术因素,下面对一些影响选型的限制因素进行分析。

1) 平台要求:应用运行的目标平台确定针对平台差异采取的应对策略,确定是选择使用针对平台的差异化开发的原生技术还是跨平台技术。

2) 性能要求:性能要求越高,对硬件的利用和操控能力的要求越高,调用底层的中间步骤就要越少。跨平台的解决方案几乎都是以损失性能换取的,但跨平台的优势同样非常明显。

3) UI交互模式:对于不同的操作系统,UI交互的特点不完全一致,需考虑在交互模式上是采用多平台一致的模式还是采用契合不同平台的交互特点的方式。

4) 投入成本:采用不同的技术实现同样的功能所需的人力成本和时间成本是不同的。

5) 研发周期:时间因素是项目的一个重要影响因素,研发周期越长,越有时间研究,但大多数项目都是尽量压缩工期。因此,在保证其他因素尽量不受影响的前提下,采用最快的开发模式是第一选择。

6) 变更频度:Native程序很难实现在线更新,应用变更越频繁,越倾向选择能在线更新的开发模式,甚至是Web方式。

7) 业务类型:业务类型不同,应用的受众不同,推广模式也不相同,若非必要,用户更倾向于不安装新的APP。因此,若要快速推广,借助现有的微信公众平台或支付宝扩展程序是可行的。

8) 团队技术储备:现有开发人员的技术储备往往影响着应用实现技术的选择,前端开发人员会选择与前端开发相近的技术。同样,技术的选择影响着团队人才队伍的建设。

9) 社区资源:遇到的问题能否通过社区资源得到解决,一般流行程度越高的框架,获得答案的可能性越大。

这些影响选型的因素可归类为目标环境(平台、性能和UI交互)、成本约束(成本、研发周期)、业务需求(业务类型、更新频度)和技术储备(团队储备、社区资源)等,开发团队需根据需求识别出核心的影响因素,选定应用类型,进而综合考虑其他因素,参照选型策略参考模型选择开发模式和具体的实现技术。

5 结 语

本文基于“没有最好的技术,只有最适合的技术”的思路,给出一种选型策略参考模型。移动应用开发技术的选型是一个多因素权衡的过程,本文仅提供一种基于开发技术的选型思路。面对众多的开源组件和框架,开发人员需有效识别需求,选择最适合的开发技术,完成开发模式和技术栈选型。

猜你喜欢

开发技术跨平台选型
煤层气与非常规天然气勘探开发技术专题(下)客座主编寄语
新时期计算机软件开发技术的应用及发展趋势
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
不锈钢二十辊冷轧机组横切剪的选型计算
高层建筑结构选型及优化设计
关于高层建筑结构选型设计的初步探讨
一款游戏怎么挣到全平台的钱?
复杂条件下的深基坑支护设计选型研究
潜力双跨平台:进阶:谁将跨入下一个“十大”?
计算机软件开发技术及应用