IOS组件化开发架构设计

背景

目前公司的APP是一个面向特定业务群体的产品化应用,可针对不同的客户需求和具体业务差异性进行适当的功能调整和裁剪,是一个以核心业务为主,同时具有多样性的产品。产品的开发按照多版本迭代、逐次分发的方式进行,如何能够更好的适用客户的需求,同时降低我们的版本迭代的工作量,是我们在构建系统之处初要重点解决的问题。

目的

引入业务的组件化封装,使得我们可以像搭积木一样动态的构建我们的产品,降低整体的迭代和升级频次,满足客户个性化需求。业务组件的目的是以方便业务组件独立升级和减少不必要的组件之间的交互为基本原则,通过一定程度的分离,实现软件重用(Software Reuse)。

组件的定义和划分

  • 核心业务组件:是包含在APP内部,随APP发布出去的业务核心。
  • 扩展业务组件:是对部分业务单独封装的组件库,由App负责对其进行管理和运行,可以和App进行交互最大程度的数据共享。通过APP加载启动,不能单独运行。
  • 扩展业务APP:本身并不属于组件范畴包含完整的业务处理,是一个可单独发布、运行的APP。它做为我们核心业务的补充和扩充产生而来,也可以通过主APP对其进行管理和数据共享。

扩展业务APP可以是来自面向企业分发或者是来源于AppStore的产品,可以通过主业务APP进行下载和启动。

业务组件内部可能还存在大量的技术组件,技术组件之间也可能是一种紧耦合的关系,这些都无关紧要,重要的就是抽象出业务组件和业务组件的服务后,屏蔽掉内部技术组件之间交互的复杂度。

整体架构

arc.png

层次划分是为了进一步的组件化为了能实现最大程度的实现共通化和产品复用度,将基础服务层、基础业务层和基础模块层抽离出来进行组件化,复用到每个子业务系统和模块库中。

组件的管理

组件管理模块的主要职责负责扩展业务组件和扩展业务APP的基本管理,组件的下载、升级、加载、启动和APP的下载、升级、启动。

技术实现

基于IOS 我们的业务组件方案主要有以下 2 种:

  • HTML5
  • framework

Html5的方式大家都懂不做介绍。

使用framework 的方式来更新可以不依赖第三方库,使用原生的 OC/Swift 来开发,体验更好,开发成本也更低。将APP中的某个模块(比如一个 tab)的内容独立成一个 framework 的形式动态加载在 APP的 main bundle 中。当 app启动后通过组件管理模块从服务器上下载新版本的 framework 并加载即可达到动态更新的目的 。

关于动态的使用的基本事项

  • 创建与编译
    具体操作参见相关文章

  • 加载和启动
    目录下寻找更新后的framework。利用 OC 的动态特性 NSClassFromString 进行加载通过performSelector 执行加载 framework的类的具体方法

  • 资源共享
    在storyboard/xib 中可以直接访问图片。
    使用代码方式访问的图片不可以放在xcassets 中,需要单独创建专属的Bundle。

总结

基于组件化业务基础平台和传统的业务基础平台主要的差异在于组件化业务基础平台具有更多的灵活性、可扩展性,能够更加方便的进行组件升级和组件维护。特别是对于大型的行业APP来说,易于升级、易于维护,能够灵活的扩展成为评测一个业务基础平台的一个重要标准,随着业务的不断发展,很多行业APP软件包的尺寸已经达到几十M,如何对如此庞大规模的代码进行维护、升级成为软件开发者和运维管理者日益关注的一个课题,代码关系复杂、系统启动慢成为一个大型APP所面临的一个主要矛盾。

组件化业务基础平台主要用于解决简化开发,快速系统维护的问题。业务的组件化,并不是所有的内容全部组件化,有些内容是无法分离出去的。因此首先要确定APP业务的基本定位,业务定位中核心业务保留在APP中可以根据技术特征选择性组建化,保证核心业务和每一个业务组件紧密相关性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容