[toc]
系统分析师笔记18_移动应用系统分析与设计
该笔记内容来自《系统分析师教程》第2版。
移动应用平台概述
目前,比较知名且稳定可用的移动开发平台有EMAS、TMF、FinClip、APICloud、mPaaS.EMOP。
其中,mPaaS和EMAS都是阿里巴巴推出的,TMF是腾讯推出的,EMOP是京东的产品,它们共同的特点是产品大而全且涉及整个闭环流程,移动开发的全环节面面俱到。
FinClip和APICloud属于专注于做移动研发技术平台的公司,产品小而精,有自己独特的特点和优势。
移动端应用开发平台
移动端应用部署平台
移动应用开发环境
APP开发环境
安卓开发环境
IOS开发环境
小程序开发环境
微信开发者工具 模拟器
移动应用架构
移动应用的架构发展历史可以大致分为以下几个阶段。
单体应用架构阶段
早期的移动应用开发采用单体应用架构,即所有功能模块都集成在一个应用程序中,是一种将所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中的应用架构模式。
例如,开发一个系统,可以将项目打包成war包并部署到服务器上,这样的war包涵盖了很多模块。
单体应用架构模式的优点是:开发简单、部署简单、运维简单、性能稳定。但是,随着业务的发展,单体应用会变得越来越复杂,代码量也会越来越大,这样会导致开发效率低下、维护成本高。
MVC架构阶段
随着移动应用市场的快速发展,MVC(Model-View-Controller)架构开始逐渐被应用到移动应用开发中。
该架构将应用程序分为三层:模型层、视图层和控制器层,实现了代码解耦和代码复用,提高了应用的可扩展性和可维护性。同时,该架构也引入了一些新的问题,如控制器层可能会变得庞大而难以管理。
如图所示。 
MVP架构阶段
MVP架构是一种软件设计模式,它将应用程序分为三个层次,即Model、View 和 Presenter。
- Model负责处理数据和业务逻辑
- View负责显示用户界面
- Presenter负责协调Model和View之间的交互。
MVP架构的目的是降低View和Model之间的耦合,提高代码的可测试性和可维护性。MVP架构示意图如图18-6所示。 
MVVM架构阶段
MVVM架构示意图如图18-7所示。 
MVVM(Model-View-ViewModel) 架构是在MVC架构的基础上发展起来的。该架构通过引入ViewModel层,进一步解耦了视图和模型,使每个组件的职责更加清晰明确。另外,MVVM架构还引入了数据绑定和响应式编程的思想,使得应用程序能够更加灵活地响应用户输入。
MVC -> MVP -> MVVM 这几个软件架构是一步一步演化发展的,MVVM是MVP的进一步发展与规范。
微服务架构阶段
近年来,随着移动应用规模的不断扩大和功能的复杂化,微服务架构逐渐成为了移动应用开发的趋势。该架构将应用程序分解为多个独立的服务,每个服务都可以独立部署和扩展,从而提高了应用的可伸缩性和容错性。
同时,微服务架构也带来了一些新的挑战,例如,服务间通信和数据一致性等问题需要得到更好的解决。
微服务本身的架构也经过很多次的演变,微服务架构演进历程主要经历了以下几个阶段。
基于服务实现模块化
早期的服务化架构主要是将系统拆分为不同的模块并通过服务实现模块化,但服务本质上仍然是单体应用。
基于SOA的服务拆分
随着SOA的兴起,微服务架构概念得以深入发展。服务化架构开始通过服务拆分来实现更小的服务颗粒度。同时,服务治理和服务注册中心等基础设施也得以快速发展。
基于容器和服务框架
随着容器技术的成熟,微服务架构开始基于容器进行部署和管理,同时一批开源的服务框架和基础设施也应运而生,如SpringCloud等。
SpringCloud的微服务示意图如图所示。 
基于云原生的微服务架构
在云原生技术的推动下,微服务架构己经从传统的部署方式转向了基于云平台的统一部署和运维。
新的云原生技术如Kubemetes等,提供了更高效的容器编排、负载均衡和自动化部署等能力,大大简化了微服务架构的部署和管理。
移动应用开发
应用开发技术是指使用不同的编程语言和工具来创建和维护各种应用程序的技术。应用开发技术可以分为原生应用开发、混合应用开发和Web应用开发等类型,根据不同的平台和需求选择不同的技术方案。
原生应用开发
原生应用开发是指针对特定的操作系统(如iOS或Android)使用原生编程语言(如Objective-C或Java)来开发的应用程序,它们可以充分利用设备的硬件和软件功能,提供最佳的用户体验和性能,但是开发难度高,成本高,需要为不同的平台分别开发。
混合应用开发
混合应用开发是指使用网页技术(如HTML5、CSS3、JavaScript)来开发的应用程序,它们可以在不同的平台上运行,具有跨平台的优势,同时也可以通过调用原生API来实现一些特定的功能,提高用户体验,但是性能可能不如原生应用,页面交互效果也有限。
Web应用开发
Web应用开发是指使用网页技术来开发的网站或网页,它们不需要下载安装,只需要通过浏览器访问即可,具有便捷性和易维护性的优势,但是用户体验可能不足,页面跳转迟钝或卡顿,功能也受到浏览器的限制。
开发语言
常见的开发App的语言包括:
- (1) 原App (Native App)。Android 中 用Java/Kotlin 开发,iOS 中用Objective-C/Swif开发。其优势是效率高;不足是费用高。
- (2) Web App。使用HTML/CSS/JS编写,运行在浏览器中,可以封装为App安装文件,在应用商店中上架。其优势为一套代码可以运行在两个平台;不足为执行效率不如原生App。
- (3) H5。使用HTML/CSS/JS编写,运行在浏览器中,不需要应用商店中上架,也没有图标,通过二维码在朋友圈中快速分享。其优势为一套代码可以运行在两个平台;不足为执行效率不如原生App。- (4) 混合/混编 App (Hybrid App)。使用HTML/CSS/JS/Native.js(Java/OC=>JS).其优势为一套代码可以运行在两个平台,还可以调用系统底层原生功能;不足为执行效率不如原生App。
- (5) 桥接App(Bridged App)。桥接App只使用JS编写,执行环境会把JS编译为Java/OC,在手机中运行时就是纯原生代码。其优势为一套代码可以运行在两个平台,执行效率高;不足为两个平台不能做到完全一样。
- (6) Flutter App。使用Dart语言开发,直接在Android/iOS手机中的显卡里进行绘图。其优势为一套代码可以运行在两个平台,执行效率高,效果完全一样;不足为全新的语言,Google开发的进度比较慢。
