本文主要是介绍朴新网校App组件化架构设计实践V1.0,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、基本概念与共识
业务组件化(或者叫模块化)作为移动端应用架构的主流方式之一,近年来一直是业界积极探索和实践的方向。在组件化过程中我们深刻体会到“没有绝对正确的架构,只有最合适的架构”这句话的意义。很多通用方案只是组件化的冰山一角,实际落地过程中还有相当多的东西需要考量。
- 本文讨论的『库』是『功能库』(比如:图片库,网络库),统称为『库』,与具体的产品业务无关;区别于功能库,本文讨论的模块是『业务模块/组件』(比如订单模块,商品模块)。
- 业务模块的名称,相比组件(Component),我们觉得称之为模块(Module)更为合适。组件强调物理拆分,以便复用;模块强调逻辑拆分,以便解耦。而且如果用过 Android Studio, 会发现它创建的子系统都叫 Module. 但介于业界习惯称之为组件化,所以我们继续使用这个术语。本文下面所用名词,“模块”等同于“组件”。
2、进行组件化的源动力
目前朴新网校有5个App,有很多功能或者模块是可以相互公用的,为了实现功能或模块的可复用用以及代码的高内聚低耦合,同时降低开发和维护成本,提高迭代速度,我们采用模块化结合私有Pods进行管理,对于常用功能或模块进行封装,只要开放出一些简单开关配置方式,就可以实现一个功能,比如日志记录、网络请求模块、网络状态变化提示等。路由实现方案简图如下:
3 App基本的分层结构与简介
3.1 功能库(与具体的业务无关):
3.2 业务模块
-
3.2.1 基础业务模块:
- DBModule:公用的数据Model(添加原则:在三个或三个以上的模块被使用)
- UIModule:公用的UI(添加原则:在三个或三个以上的模块被使用)
-
3.2.2 独立的业务功能模块(各模块间独立运行):
- LoginModule:登录模块
- ProductModule:商品模块(商品选择、商品详情等)
- OrderModule:订单模块(订单的生成、订单的支付、订单详情等)
- CourseModule:课程模块(课程的详情、课程的学习、课程下载等)
- HomeworkModule:作业模块(作业列表、作业练习等)
- MaterialModule:资料模块(资料列表、资料查看等)
- BJLiveUI:直播模块(互动课堂直播)
- BJPlaybackUI:回放模块(互动课堂回放)
- DiscoveryModule:发现模块(视频课程)
- AuditionCardModule:试听卡模块(试听直播、回放课程)
- CoinPayModule:金币支付模块(学习币的购买)
- AddressModule:地址模块(地址的选择和编辑)
- AdvertisingModule:广告模块
- PointMarketModule:金币商城模块
- LogisticsModule:物流模块
- TeacherModule:教师模块
- InvoiceModule:发票模块
- ActivityModule:活动模块
- MessageModule:消息模块
- FamilyModule:家庭教育模块
- NoteModule:笔记模块
- SearchModule:搜索模块
- UpdateModule:检测更新模块
- AppReviewModule:App审核状态模块(是否在审核中)
- MineModule:我的模块
4、App架构概图
5、App整体架构
6、App技术架构分层
7、总结
移动应用的业务模块化架构设计,其真正的目标是提升开发质量和效率。单从实现角度来看并没有什么黑魔法或技术难点,更多的是结合团队实际开发协作方式和业务场景的具体考量——“适合自己的才是最好的”。朴新网校移动团队通过1年多的实践,发现一味的追求性能,绝对的追求模块间编译隔离,过早的追求模块代码管理隔离等方式都偏离了模块化设计的真正目的,是得不偿失的。更合适的方式是在可控的改造代价下,一定程度考虑未来的优化方式,更多的考虑当前的实际场景,来设计适合自己的模块化方式。希望通过本文提供的具体案例和思考方式,大家都能找到适合自己应用的业务模块化之路。
这篇关于朴新网校App组件化架构设计实践V1.0的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!