Android 移动应用架构发展,跨平台技术演进

> 开发杂谈:Android 移动应用架构发展简史- https://mp.weixin.qq.com/s/a5PfzO5qh_1P1TcCwdWonQ
  框架体系:一旦形成自己的一套框架体系,就可以长期使用,甚至成为整个公司的一套开发标准,大大提高后期的项目开发效率,来了新项目就直接可以在新项目中使用,而把主要的精力放在业务功能的实现上。
  一个核心思想:就是“调用更加方便、更加安全、代码之间的耦合度更低”,这是一个好的软件永远追求的目标。

-- 4代架构

第1代:标准的MVC架构它的工作流程:
1.View接受用户的交互请求
2.View将请求转交给Controller
3.Controller操作Model进行数据更新
4.数据更新之后,Model通知View数据变化
5.View显示更新之后的数据

第2代:MVP工作流程图:
1.View接受用户的交互请求
2.View将请求转交给Presenter
3.Presenter操作Model进行数据库更新
4.数据更新之后,Model通知Presenter数据发生变化
5.Presenter更新View的数据

第3代:MVVM工作流程:
1.View中使用DataBinding的Command来绑定事件和响应事件,触发网络请求
2.ViewModel进行分析处理,调用Model的方法去请求数据
3.Model将收到的请求参数等信息封装,调用网络请求库
4.服务器将数据返回Retrofit等网络库,再返回到Model层中
5.ViewModel在回调中收到返回的实体类对象
6.因为xml与实体类对象实现了双向绑定,实体类更新,使得UI更新

第4代:四代架构MVP+组件化:
 上面的这三种android开发中常用的项目架构,不管是哪一种架构,它始终是一个单一结构体项目,各个模块之间还是以传统的包名来区分的,其各个模块还是强耦合在一的,自然而然组件化的方案就出现了,组件化有开发模式和发布模式之分,在开发模式下每个业务模块都是都是一个独立的apk,在发布模式打包的时候,每个业务模块都变成了一个个独立的组件library,这就完成了各个模块之间的彻底解耦。

1.集成模式:所有的业务组件被“app壳工程”依赖,组成一个完整的APP;
2.组件模式:可以独立开发业务组件,每一个业务组件就是一个APP;
3.app壳工程:负责管理各个业务组件,和打包apk,没有具体的业务功能;
4.业务组件:根据公司具体业务而独立形成一个的工程;
5.功能组件:提供开发APP的某些基础功能,例如打印日志、下拉刷新控件等;
6.Main组件:属于业务组件,指定APP启动页面、主界面;
7.Common组件:属于功能组件,支撑业务组件的基础,提供多数业务组件需要的功能

  不管是MVC,MVP还是MVVM,他们都属于项目的编码架构,而组件化是整个工程的工程架构,它的主要意义在于,对原来以包来区分的各个模块进行完全的解耦,但是不管技术怎么怎么更新换代,但是永远不变的一个核心思想就是“调用更加方便、更加安全、代码之间的耦合度更低”,这是一个好的软件永远追求的目标。

> 移动开发的跨平台技术演进- https://mp.weixin.qq.com/s/g44ql1hOMdsfgKMXGjUo6w
 跨平台技术的分类没有标准的答案,这里把它们分类为5种,分别Web App、Hybrid App、语言编译转换、原生渲染、自绘UI。
 Web App是指基于Web的应用,运行于网络和标准浏览器上,相当于一个网页然后加一个App的壳。2014年HTML5的标准规范制定完成,在网络舆论上Web App大有取代Native App的气势,但Web App有以下缺点,使得它始终是“主角的心,配角的命”。

PWA(Progressive Web App)意为渐进式增强Web应用,它不是一门技术,而是一个概念,使用多种技术来增强 Web App的功能:
 用Service Worker + HTTPS +Cache Api + indexedDB 等一系列web技术实现离线加载和缓存
 实现了推送和通知
 可以直接添加到手机的桌面上
 使用Service Worker可以进行后台同步
总结起来,PWA的主要的能力就是离线、推送、桌面访问,可以说PWA赋予Web App原生的体验

除了采用原生和Web开发App,还可以采用HTML5+原生来进行混合开发,这就是Hybrid。
  Hybrid相关的技术有很多,比如PhoneGap、Cordova、Ionic、VasSonic等。
  2011年,Apache收购了Nitobi Software和它的PhoneGap产品,并对PhoneGap进行开源,PhoneGap 2.0版本时,产品更名为Apache Cordova。目前Cordova支持的平台有Android、iOS、Windows、Mac OS X、Electron。
  Ionic Framework是一个开源UI工具包,最早的目标是使用HTML,CSS和JavaScript等Web技术开发移动应用程序。由于Web技术的这一基础,Ionic可以在网络运行的任何地方运行,比如  iOS,Android,浏览器,Electron,PWA等等。
目前,Ionic Framework已与Angular正式集成,但对Vue和React的支持正在开发中。
  VasSonic是由腾讯VAS团队开发的轻量级高性能混合框架,旨在加速在Android和iOS平台上运行的H5首屏。VasSonic不仅支持服务器呈现的静态或动态网站,而且还完美兼容Web离线资源。VasSonic使用自定义的url连接而不是原始网络连接来请求索引html,因此它可以提前或并行请求资源以避免等待视图初始化。

  微信小程序的主要开发语言是 JavaScript ,小程序的开发同普通的网页开发相比有很大的相似性。
小程序的运行环境分成渲染层和逻辑层,这两层分别由2个线程管理,渲染层的界面使用了WebView 进行渲染,逻辑层采用JsCore线程运行JS脚本。这两个线程的通信会经由微信客户端(Native)中的JSBridage做中转。逻辑层发送网络请求也经由Native转发
  微信小程序和PWA都是基于Web技术,原理的区别是小程序类似Hybrid架构,WebView渲染基本的网页内容,对渲染性能要求较高的组件,通过原生组件来实现,比如相机、视频、地图等等,另外传统Web无法访问的本地能力,需要通过JS SDK来实现,而PWA则是使用多种技术增强Web能力,以达到接近Native应用的体验。
  微信小程序本身和App就不是竞争关系,更多的是一个推广渠道,它更像是一张海报,用于快速推广倒流,而App则是要推广的对象。微信小程序的缺点很明显,体验上无法跟App相提并论,功能依托并受限于微信,无法进行拓展。可以说微信小程序就是建立了次级生态,这个生态中微信说的算,其他对手的发展会受到威胁。

  语言编译转换指的是直接将某个语言编译为一个平台下的二进制文件。比较有名的是Xamarin框架,虽然它在 Android平台是内嵌了Mono虚拟机来实现的,但在 iOS平台下是以AOT 的方式编译为二进制文件的,所以把它归到语言编译转换类型。
  Xamarin始创于2011年,2016年被微软正式收购。Xamarin是Mono项目的一个分支,基于.NET的跨平台实现的一个开源项目。
与PhoneGap等框架不同的是,Xamarin可以在iOS和Android刚推出新的功能时,第一时间调用相应的API,而使用PhoneGap则需要等待PhoneGap封装的新的功能后才可以调用相应的API。
  C#代码写的Andriod应用在运行的在Mono虚拟机中,ART可以通过ACWs(Andriod Callable Wrappers)的方式执行到Mono中的C#代码。C#代码要是想调用系统功能或者Java的实现类库,可以借助MCW(Managed Callable Wrapper)的方式来实现。MCW是JNI的桥梁,可以使用托管代码调用Andriod代码。

 原生渲染在本篇文章中指的是由JavaScript开发并且由原生控件渲染,代表有React Native、Weex、快应用。
 自绘UI框架的代表有Qt和Flutter。Flutter是谷歌的移动UI框架,可以快速在Android和iOS上构建高质量的原生用户界面, 它的前身是谷歌试验项目Sky。

猜你喜欢

转载自blog.csdn.net/ShareUs/article/details/89704571