10月19日,由用友YonBIP开发者社区出品的《YonTalk大咖论道》通过直播形式举行。用友网络副总裁邹达做了《大型企业移动技术架构设计和管理规范最佳实践》主题分享,本文对其中企业级移动技术架构的设计思想和实践方案部分进行了归纳总结,希望能为企业移动架构设计和实践提供参考。
邹达认为,企业级移动架构设计需要在开发上提供跨端开发,开发完成之后生成多端应用、满足多端体验;在性能方面,需能发挥出每一个终端应有的原生性能。跨端开发、多端体验与终端原生性能形成平衡的三角关系。
基于这一思想,目前主流移动架构可以分为三类:标准的H5+Webview、React Native/Flutter原生开发、各类小程序+自定义渲染引擎。
从整体跨端技术来讲,用友基于对大型企业移动技术架构面临问题的综合分析,选择了H5+Webview跨端开发机制,并在此基础上,根据一些特定的需求和使用场景,配套自己的小程序标签和自定义渲染引擎。
邹达介绍说,“H5是一个标准的开发技术,无论企业自己的开发人员,还是伙伴和广大开发者,学习门槛都是比较低的。”
与前述面临的问题一致,大型企业移动开发需要考虑PC端和移动端元数据、数据模型、通信机制的统一。
同时还有平台和业务模块的统一。企业需针对公共模块提供一种标准的技术,支持平台、领域以及客开部门对公共模块进行扩展。
邹达认为,移动多端技术的实现方案可拆解为三个层次,应用层、平台层和终端层。
1、应用层
在应用层,使用标准的H5技术,有自己的前端框架和大量组件。
2、平台层
在应用层之下为平台层,主要实现三方面功能。
工具平台。为开发人员提供统一的开发、调试工具,以及包含应用证书及版本管理、多端编译等功能的控制台。
基础服务。通过OpenAPI的方式为任意类型企业提供如用户身份认证、加密、平台核心业务等能力。
扩展与赋能。为开发者提供标准化文档、技术知识;面向伙伴以及所有平台开发者,提供组件、插件市场,通过市场来实现组件复用和管理。
另外,平台层还需提供社区运营相关服务,包含赋能培训,用户学习交流、交流以及职业发展等。
3、终端层
在终端层,针对不同的端,包括原生、小程序,有自己特定的功能,去解决应用容器、终端能力、窗口管理、运行时控制等问题。
使用H5技术或其他翻译式技术,需要有一套容器,让企业可在此基础上优化和扩展。例如当需要功能预加载,可适当做一些缓存;对应用包进行管理,不管是SPA应用、前后端分离的应用、远程页面,都需要在容器上完成。
原生性能主要体现在终端层,需要重点处理。终端层提供统一的容器,让封装好的各种类型模块能发挥出原生能力。通过统一的开发平台,能够把应用层的应用和终端层能力,通过多端编译生成不同端移动应用,这就是多端技术的实现方式。
移动应用的性能差异主要体现在以下六个方面:应用启动速度、大列表渲染、瀑布流图片、内存占用、动画帧数、交互响应。而这部分的优化主要是通过以下技术实现:
容器优化。寻找效率、动态性、安全性和性能更加均衡的、能适应更多场景的方案。
多窗口管理。通过窗口来隔离页面,通过多进程的方式进行调度。
应用分包。通过分包技术来控制应用的大小与页面加载内容的优化。
沙箱管理。在多进程之间隔离不同的页面,保证了页面安全与渲染的分离。
数据共享。通过在多进程之间分享数据来平衡开发、性能和安全。
原生渲染。通过多窗口技术来分割页面,通过原生技术进行最小更新。
随着设备硬件性能的逐渐提升,原生与混合开发的性能差异越来越小,基本体验逐渐对齐。
开发者是技术平台的最终用户,因此平台应当从开发者视角给予多方位的支持。用友开发者中心提供了开发工具、技术文档、开发者社区、视频教程、插件市场、组件市场、应用模板、生态技术支持等全面服务,开发者所有开发行为都在此完成。
在应用开发角度,开发者可以使用H5技术开发独立app、小程序等各种类型程序。
原生能力方面,用友开发者中心提供了设备、网络、功能扩展、三方SDK等原生扩展插件,原生渲染引擎支持应用容器、排版算法、窗口系统等;在app运行层则支持应用包、生命周期、原生组件、热更新等。
从控制台的角度来讲,包含证书配置、应用配置、代码管理、团队协作,以及组件管理。开发完之后,可以编译打包生成 app、小程序、H5以及独立的SDK。
开发者使用H5快速开发移动应用,例如工时日历、考勤打卡、卡包票夹、差旅发票等,可通过 MTL.js 或 API.js 调用移动终端原生能力。
MTL.js主要作用在于消除不同终端的原生功能调用差异,移动应用只依赖MTL提供的一套统一API,即可适配友空间、友空间私有版、微信小程序三个端。
API.js主要作用则提供覆盖了友空间、友空间私有版、微信和钉钉原生小程序等终端与业务无关的全量API,满足 C 端业务特点,MTL.js运行在app端时,底层依赖API.js。
因此,在应用运行视角,是一个分层调用的关系:从领域应用到业务组件平台,再到基础框架和技术组件。这是需要所有开发人员遵守的规范。
做平台设计,需要考虑组件和模块的分类和开发标准。
以VPA(虚拟个人助手)模块为例,可以提供基础的AI能力,应用场景包含IM聊天界面、费控app等。根据不同的应用场景,VPA的反馈结果与在界面的展示内容不一而同,部分与原生功能相关,部分则与原生功能无关。
针对VPA模块,企业需要区分哪些功能采用原生方式,哪些功能采用H5方式;在采用H5开发过程中,又要明确把哪些封装成标准组件、哪些需要定制开发。这要求在设计技术架构过程中,充分考虑组件和模块的统一规范。
对于应用开发而言,企业级低代码开发平台不仅需要提供统一的技术栈标准,在上层也需要为开发者提供更便捷的开发方式。
具体而言,企业级低代码开发平台需要包含通用开发能力、可视化开发能力、流程开发能力、自动化开发能力、数据开发能力、业务开发能力、生态开发能力等七层能力。
基于跨端开发-多端生成-终端能力的设计思想,用友完成了iuap移动基础平台的架构设计实践。
在跨端开发层,包含人力云、营销云、制造云等10个领域应用,支持模型驱动构建,以及使用标准的H5技术进行开发。针对性能要求较高的界面、功能,支持AVM自定义原生渲染。
同时,用友iuap移动基础平台提供了统一的前端框架、原生API和统一文档。
在多端生成层,提供开发工具,涵盖脚手架、组件开发、API集成、实时预览等能力;开发者控制台提供应用管理、调试、打包、证书管理等能力。
在终端能力层,则提供了统一移动底座、统一移动安全、统一原生插件等服务。
基于该架构,用友把上层的应用和底层能力,通过一个多体验的开发平台有效连接。
在移动应用开发上,用友还提供了一个统一的底座——DeepEngine,可以同时生成独立app、友空间私有云版本、各类小程序、H5等。
总的来说,企业级移动架构设计是移动开发的路基,想要走得长、走得稳,架构设计须得先行。