论文部分内容阅读
随着宽带无线接入技术和移动终端技术的飞速发展,人们迫切希望能够随时随地都能方便地从互联网获取信息和服务,移动互联网应运而生并迅猛发展。移动互联网的快速发展,颠覆了互联网世界以网页为核心的应用形态,催生了全新的应用服务体系,并重建了商业模式。移动应用已经成为移动互联网应用服务的主导形态。企业在向移动互联网进行业务扩展时,主要面临以下问题:(1)当前移动设备呈现出多样化的特点:不同的厂商,不同的型号,更重要的是不同的平台,即不同的移动操作系统。如果要开发—款运行在不同平台上的移动应用,就需要针对不同的平台开发不同的版本,这不仅加大了工作量,还增加了开发成本。(2)在开发原生应用时,UI设计和业务逻辑处理无法完整地分离开,使得UI设计与业务逻辑开发只能串行进行,降低了开发的效率。(3)企业希望将部分已经在WEB取得的成果快速移植到移动端之中。(4)现阶段对移动原生应用进行Bug修复和更新扩展的方式比较复杂,管理不便。为了解决上述问题,本课题设计并实现了一个混合型移动应用开发框架。通过对比现阶段移动应用开发模式(原生开发模式、Web开发模式和混合型开发模式)的优缺点,本框架最终决定采用混合型移动应用开发模式。现有的混合型移动应用开发框架都将重点放在了Web部分,并且对于企业的一些特定的需求没有涉及到。为了发挥Web和原生各自的优势,并将界面设计与业务逻辑实现进行完全的分离,本课题将框架分为两个部分:Web部分和原生部分。Web部分主要用于UI展示,原生部分主要用于业务逻辑处理。框架中对Web和原生之间的通信和指令分发进行了封装,为框架提供了一条向上和一条向下的通信通道,并对所有指令进行统一调度。为了对零散的HTML页面进行统一管理,并提高页面的加载、跳转效率,框架在Web部分整合了AngularJs和RequireJs两个Web前端框架。框架在结构上主要分为四层:展示层、移动中间件、服务层以及数据层。展示层包括视图页面和视图控制器,使用Web语言进行编写。移动中间件封装了Web与原生之间的通信通道与指令分发。服务层为框架和应用提供相关服务。数据层包括Web源文件和数据库。框架主要实现了五个功能模块:(1)分块。分块主要解决PC屏幕和移动屏幕在尺寸上的差异。分块用于将PC页面分割成若干小的视图片段,方便将其移植到移动端之中。分块算法基于HTMLDomm语义结构,主要思路是自下而上、从前向后遍历整个Dom树结构。从中找到符合要求的结点,然后将节点和与之相关的资源输出到指定的文件夹中,以方便快速移植到移动应用中。(2)控制器模块。控制器模块主要提供了两个服务:请求处理服务和广播服务。请求处理服务用于向原生部分发送请求,广播服用于将原生部分返回的数据发送到指定的模块。(3)路由管理模块。路由管理模块用于对Web页面的跳转模式进行管理,以使得前端Web页面在跳转模式上和移动原生应用保持一致。框架中提供了三种页面跳转模式:单例模式、一次性使用模式和标准模式。(4)逻辑处理模块。逻辑处理模块对向Web部分返回数据和指令分发进行统一管理。为了使指令分发和具体的指令处理对象进行完全的解耦,逻辑处理模块基于Java的反射机制实现了动态创建指令处理对象。(5)实时更新服务,实现了移动应用在特定场景下的实时、便捷更新,为应用的开发和使用提供更高的灵活性。框架设计完成以后,课题对框架的性能进行了分析。首先对框架中所采用的单页结构进行了测试与分析。然后对框架的传输效率进行了测试分析。在对单页结构进行测试分析后,得出如下结论:单页混合型移动应用的特点是路由配置和分页加载。单页混合型移动应用在进行路由配置时虽然有一定的时间损耗,但这是进行高效页面跳转的前提。路由配置提高了页面的跳转效率。单页混合型移动应用在配置完路由之后,实现了页面分块加载,将页面加载的时间细化,避免了页面整体加载,最终提高了页面跳转的效率。在对Web部分与原生部分的通信效率进行测试的过程中发现:由于框架在Web部分使用单线程,所以当原生部分以高频次向Web部分发送数据时,会造成应用的假死现象。在框架的使用过程中应当控制原生部分向Web部分发送数据的频率,以保障较好的用户体验。最后课题对框架所实现的功能模块进行测试,并通过二个实例对框架的实用性和扩展性进行了检测。