谈谈App开发的演进

web app

最早的 App 有很多采用这种架构,大多数尝试性的业务,一开始也是这样的架构。Web App 架构又叫包壳架构,简单来说就是在 Web 的业务上包装一个 App 的壳,业务逻辑完全还是 Web 实现,App 壳完成安装的功能,让用户看起来像是在使用 App,实际上和用浏览器访问 PC 网站没有太大差别。
Web App 这种包壳架构主要解决快速开发和低成本两个复杂度问题,设计遵循合适原则和简单原则。

原生app

Web App 虽然解决了快速开发和低成本两个复杂度问题,但随着业务的发展,Web App 的劣势逐渐成为了主要的复杂度问题,主要体现在:

  • 移动设备的发展速度远远超过 Web 技术的发展速度,因此 Web App 的体验相比原生 App 的体验,差距越来越明显;
  • 移动互联网飞速发展,趋势越来越明显,App 承载的业务逻辑也越来越复杂,进一步加剧了 Web App 的体验问题;
  • 移动设备在用户体验方面有很多优化和改进,而 Web App 无法利用这些技术优势,只有原生 App 才能够利用这些技术优势;

所以,随着业务发展和技术演进,移动开发的复杂度从快速开发和低成本转向了用户体验,而要保证用户体验,采用原生 App 的架构是最合适的,这里遵循了演化原则。

Hybrid App

原生app开发的平台差异性,如果要全兼容则速度成本上需要额外付出,而对于实验性市场需求而言,要求是快速开发投放市场验证,这时候可以根据不同的业务要求选取不同的方案,例如对体验要求高的业务采用原生 App 实现,对体验要求不高的可以采用 Web 的方式实现,这就是 Hybrid App 架构的核心设计思想,主要遵循架构设计的合适原则。

组件化 & 容器化

Hybrid App 能够较好的平衡用户体验和快速开发两个复杂度问题(注意是平衡,不是同时解决),但对于一些超级 App 来说,随着业务规模越来越大、业务越来越复杂,虽然在用户看来可能是一个 App,但事实上承载了几十上百个业务。

例如淘宝和微信,这么多业务集中在一个 App 上,每个业务又在不断地扩展,后续又可能会扩展新的业务,并且每个业务就是一个独立的团队负责开发,面临可扩展性的复杂度问题。

可以通过拆字来处理可扩展性问题,这在后端系统中就是拆分成各种子系统(微服务架构),但是对于app而言,对用户还是只能呈现同一个 App,不可能将一个 App 拆分为几十个独立 App,同时,App 的业务再怎么拆分,技术栈是一样的,不然没法集成在一个 App 里面。

在这种业务背景下,组件化和容器化架构应运而生,其基本思想都是将超级 App 拆分为众多组件,这些组件遵循预先制定好的规范,独立开发、独立测试、独立上线。如果某个组件依赖其他组件,组件之间通过消息系统进行通信,通过这种方式来实现组件隔离,从而避免各个团队之间的互相依赖和影响,以提升团队开发效率和整个系统的可扩展性。

组件化和容器化的出现遵循架构设计的演化原则,只有当业务复杂度发展到一定规模后才适应,一般都用不上。

跨平台 App

比较知名的有 Facebook 的 React Native、阿里的 Weex、Google 的 Flutter

Atlas:手淘 Native 容器化框架和思考

微信 Android 客户端架构演进之路

Web研发模式演变

--------来源《极客课程》∙ 学习摘要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值