QCon北京2016全球软件开发大会4月23日的移动开发与即时通讯专场,来自起步科技WeX5、融云和云之讯的专家,分享了在移动开发和即时通讯开发平台的技术选型,以及在由“重混”架构向“轻混”架构方向发展过程中对组件化技术、可视化开发能力等核心技术的实践。
当下开发移动应用需要适配两大主流手机系统,开发、维护成本很高,Hybrid APP这样的混合应用模式应运而生。早期的Hybrid APP受手机性能等因素的限制,靠Native技术弥补Web的缺陷,属于技术更偏Native的一种框架,我们将其定义为重混的Hybrid APP框架。随着手机硬件的增强,无线网络技术、浏览器技术的发展,加上微信重新定义了移动应用的概念,重混框架不再适用,轻混框架,即UI部分使用纯Web技术,只在底层设备接口上使用Native技术的框架成为夸端Hybrid APP的必然选择。
启步科技WeX5开发工具首席技术运营官王洁介绍说,在选择H5框架设计时,Native框架选择了Cordova,因为Cordova插件易于定义,不侵入UI,只负责原生部分。而H5框架采用了SPA单页应用模式,这也是整个框架的重点。SPA与传统MPA页面加载模式的区别在于,通过Ajax技术进行局部刷新、局部渲染,以达到平滑的体验。但在具体的使用中,遇到了ID、样式和Js三方面的冲突问题,最终通过替换原则使用虚拟xid替代真实id属性解决了ID冲突,通过给每个页面配置同名css文件定义私有样式解决CSS冲突问题,通过RequireJS的模块化技术进行隔离解决了JS冲突。除此之外,还实现了完整的外壳管理,通过JS动态的设置路由实现了前进后退功能。
在WeX5整体的框架中,底层应用Cordova解决设备原生调用问题,上层将Cordova和微信封装抽象成统一的H5 API。除了Web的常用框架外,还使用了Bootstrap,因为其样式美化程度高,支持响应式布局,生态成熟。再上层实现了自己的组件框架和数据框架,最高层是SPA单元页面框架。除此之外,服务端还提供了数据存取、逻辑,以及第三方地图、支付等功能。
WeX5到底是怎样的开发工具?王洁说,WeX5提供了上百个组件,而且组件框架完全开源,开发者可以自己修改或定义。WeX5还提供可视化程度很高的前端编程工具,且在打包方面进行了专门的优化。
融云技术副总裁杨威在分享过程中主要介绍了融云的IM SDK、实现过程中的经验教训以及IM端如何实现SaaS级服务。
杨威说,在即时通讯里面做消息的难度很高,其与音视频的区别在于,消息要做到高并发、实时性以及零丢包。融云在前端提供一个内推的协议站,并封装了两个SDK,一个是通讯能力组件,另一个实现了界面功能。杨威认为移动端的开发中使用第三方SDK是大势所趋,因为自己造轮子需要很高的资源成本。使用第三方SDK的一大好处在于可以快速上线,另外封装SDK可以解耦,对于提高性能有很大的帮助。
有关IM协议的选择,杨威建议第一次做IM时可以使用XMBP,但在商业性APP中一定要使用轻量级私有化协议,因为并发到一定程度时,后端性能有很大的缺陷,而使用轻量级私有化协议,对前端有速度快、安全、省电的优点,且服务端处理速度更快,安全性更高。对于融云为什么提供两个SDK,杨威说融云提供的UI可以满足市场上90%的需求,且融云希望做所见即所得的产品。杨威同时建议技术团队不要规定iOS和Android端的具体架构,因为架构的核心都是显示层、控制层和数据层的划分,名字并不重要。
融云内部不使用任何第三方组件,如GreenDao、HttpClient等,主要原因是对性能的控制。虽然开发效率会低一些,但因为有原生组件的支持,开发是没有问题的。融云在开发过程中一直在优化解耦,IMKit SDK本身是非常重的封装模式,有许多缺点,融云会坚持这个模式,并持续优化。
有关融云如何实现SaaS级服务,杨威分享了几个方案,比如通过融云的IM接入一些诸如客服业务等第三方服务。融云通过在服务商与客户之间构建一个类似于防火墙的隔离层,使客户和服务端解耦,并在后端介入客服产品来实现高接入速度与高性能。
云之讯联合创始人兼CTO贾俊杰曾在华为工作期间从事融合通讯产品的架构设计、研究工作。经历了从非常传统的窄带通讯到后面NGN、IMS等很多代的变革。
贾俊杰认为,融合通信有三个重要元素,一是全能力的通信服务,因为在互联网时代,通信不只是短信、消息等,还包括音视频甚至VR、AR等;二是跨网络的通信服务,因为不同的网络,如通信网、企业网与互联网等有不同的通信协议与标准,对安全的要求也不同;三是场景化的通信服务,因为传统的通信能力单一且过于封闭。
在融合通信的核心业务上,需要设计一种多业务能力互通,多能力融合的系统。在整体架构核心点上会有一个多业务的路由中心,支撑了互联网业务的路由。在这上面可以提供非常灵活的服务,包括消息的服务、语音视频的服务等,以及标准的接口,以便和互联网应用结合。
贾俊杰介绍说跨网问题的严重性在于通信网、企业网、互联网的协议标准不同,在存在防火墙的情况下无法互通。解决方式是动态的识别协议的负载,即ALG方案。服务端需要识别协议里面写上了哪些端口,在协商过程中先打开端口再进行识别,以进行网络的穿越。随后贾俊杰就关键信息传输的可靠性保障、连接时间缩短、如何保障QOS等问题进行了简要分享。
最后贾俊杰表示,融合通信与互联网的结合具有很大的价值,因为开放平台等于融合,通信也一样。通信能力与移动应用结合以提供一致性用户体验,就是融合通信的本质竞争力所在,可以解决通信和业务场景隔离的问题。另外一点在于,IP通话成本低,这也是融合通信的另一个根本的竞争力。