浅谈移动端APP架构设计四个阶段
- 2021-04-09
- 分享至
- 导语
- 在过去的几年中,移动互联网的价值正在被重新定义,打头阵的云计算和5G技术迅速占领市场。云计算的强大处理能力、云存储的便捷与更高的安全可靠性保障等特点,让用户体验更好、运行发布更灵活高效的云产品成为可能,从而使得企业云化和智能化成为大势所趋。随之而来的是,移动终端的云化对其架构设计提出了更高要求。本文从移动软终端APP架构设计发展的历程,分析总结了四个阶段的特点和移动云架构的必然性,并提供了云化和智能化的解决方案——奇秦科技基于微服务设计理念构建的企业建模云平台。奇秦科技对企业云化与智能化有着深刻理解与长期的技术积累与深耕,为了让更多的企业把握趋势、顺势而为,及时为客户推出了企业建模云平台。
- 自2005年Nokia推出首款百万像素相机智能手机7610,痴迷技术的我,便开始从事移动端APP的设计与研发工作。转眼至今16年,亲历过功能机与智能机的演化,设计和研发的移动端APP运行于Symbian、Windows Mobile、iOS与Android,我主导设计并研发实现了十余款功能不同、面向各类用户的移动端应用程序,其间略有心得,分享并探讨一下。
- 依据我们设计和研发的软件类型,移动端APP的架构设计也依次经历了以下四个不同阶段,分而叙之。
- 第一阶段 精简型移动端应用架构
- 精简型移动端应用架构,是我设计与研发的第一款简捷工具软件所采用的架构。2005年,我在互联网公司从事研发工作,当时3G已经开始大有普及之势,公司决定把握移动互联网的机会,我们开始设计了一款移动互联网入口软件,简捷工具软件。基本功能非常简单,就是扫描二维码自动启动浏览器。这款软件采用MVC的架构模式实现。MVC模式是移动端设计比较经典的模式,iOS与Android移动端推出后,仍然属于广泛应用的设计模式。
- 推出的移动应用被用户接受后,在此基础上又增加更多功能,包括分类广告,并尝试增加了音频与视频资讯。随着界面的增加和功能扩展,简单的MVC模式,就不能完全满足功能和设计需要了,尽管在设计中,也陆续采用过MVC模式的各种变种模式,包括MVVM、MVCS和MVP等。但综合比较这类设计模式,无非都是探寻如何让M,V,C三种角色的定义方法和数据事件流向的控制规范。在后来出现的移动应用中,这些设计模式,基本上满足了功能与用户需要,在架构层面解决了它们所面临的问题。
- 第二阶段 分层型移动端应用架构
- 2007年,我参与设计和研发法国电信的一款Windows Mobile多媒体移动应用。在这款多媒体移动应用设计中,采用了分层型移动应用架构。将UI展示层、数据与逻辑处理层、网络层以及移动终端特性层分开。这样模块化和分层相结合,“层”与“模块”的划分和耦合更加灵活,既降低了耦合性,又提高了开发效率,并且增强了扩展性。但是分层型架构,并非层级越多越好,一个低耦合、高扩展性的良好层级可以提高效率;反之则降低效率。
- 第三阶段 组件型移动端应用架构
- 一个好的架构,不仅仅能保障完成产品所需要的功能、提供流畅的用户体验,同时也要考虑到可扩展性和可维护性。这个设计原则,大多数架构师和研发人员都耳熟能详,但真正做到却是知易行难!近年来,我又参与设计和研发视频会议终端软件,视频会议软终端所涉及的业务逻辑和功能模块,如果继续采用第二阶段的分层架构,已经不能完全满足需求了。尤其是我所在的研发团队,人员庞多且分布在全球四个研发中心,地域不同、时差很大,沟通与协作的成本呈几何增长,所以采用一个适当的架构设计更是趋势使然。
- 采用组件化架构,让不同功能组件独立出来,只需要统一上层接口、考虑扩展性即可。对于较大的组件,如音频与视频编解码模块,我们采用独立工程实现,可以独立开发和测试,降低了团队之间沟通成本;另外,公司其他项目也可直接复用这些组件。随着产品的演化,组件划分的粒度越来越细,而且优化也更加灵活。例如:网络层的灵活处理,我们在连接服务器与设备进行通信,就分别采用了不同的三方库;蓝牙通信模块最初是采用三方库,后来随着需求增加,我们重写了该模块;视频编解码等模块,由于涉及信息加密处理,采用了自主研发的组件。基于组件型移动端应用设计架构,完全遵循“依赖接口而非实现”的设计原则,有效地保障了该软件持续研发6年多,经历了3个主版本、20多个次版本的迭代之后,移动端设计架构依然保持了较好的可扩展性与可维护性。
- 第四阶段 云化移动端应用架构
- 而今我在奇秦科技从事基于云平台的架构设计,奇秦科技已经打造了基于微服务设计理念构建的企业建模云平台,融合了云计算的强大处理能力、云存储的便捷与高安全可靠性保障等特点,使得各个服务模块化,具有高内聚低耦合的优势,便于灵活地更新与升级,而不会影响其他业务。
- 公司正在积极推进企业微信-奇异果项目。奇异果依托企业资源管理和企业微信的优势,融合了企业客户在移动便捷和复杂业务之间的诉求。轻盈实现跨平台构建,使得一套代码同时支持Web应用和APP应用,提高效率、节约成本。既满足企业级需要,又保持了灵活应对的优势。每个服务模块采用分层结构,明确地分离了表现层和业务逻辑,能够保证应用服务逻辑的一致性和稳定性、结构的开放性、功能的可扩展性和可维护性、开发的可并行性。
- 回顾十多年移动端APP架构设计过程,让我更加理解了软件架构设计的本质是对系统进行有序化重构,从而降低“软件熵”;架构设计的目的是降低“因需求增加而导致的软件熵增加,从而导致的成本增加”。经历了四个阶段的移动端APP架构选择与实践后,我们看到相同的功能,采用不用架构都能实现,但只有符合需求、充分考虑未来需求的架构,且适应团队高效协作开发的架构,才是合理的、有效的。当然,随着5G的普及,移动端云化进程将进一步加快,奇秦也做好了充分的准备,拥抱即将迎来的移动架构设计新阶段。