一种IOS平台下工程项目的组件化构建方法技术

技术编号:17345957 阅读:23 留言:0更新日期:2018-02-25 10:57
本发明专利技术公开了一种IOS平台下工程项目的组件化构建方法,包括组件划分,构建路由中间件解耦组件,建立CocoaPods私有仓库,主工程使用组件,其中组件的划分包括基础组件、业务组件和路由中间件组件,业务组件依赖于基础组件,组件之间通过路由中间件组件进行相互通信调用。路由中间件组件通过Objective‑C的Runtime机制实现,能够动态的检查和发现相应的组件。构建好的组件采用CocoaPods私有仓库的方式托管于bitbucket上面,最终主工程通过CocoaPods引入对应的组件。本方案能够实现分模块解耦开发和测试,避免现有技术中开发和测试的复杂性和高成本,提高开发、测试和维护效率。

【技术实现步骤摘要】
一种IOS平台下工程项目的组件化构建方法
本专利技术属于计算机开发
,更具体地,涉及一种IOS平台下工程项目的组件化构建方法。
技术介绍
随着iOS项目开发的推进,新的业务会不断的引入,这导致代码量越来越庞大,所有的代码集中在一个项目中,局部的代码变动往往导致需要整个项目的完整编译,项目编译的时间越来越长,模块之间代码耦合性也导致了测试的困难,不能对单个模块进行单独测试。项目的开发和测试成本不断地增加,维护困难,急需一种好的模块化管理方案来解决这些出现的问题。为了解决以上问题,各种模块化管理方案出现。目录管理是最原始的方式,仅仅通过目录结构实现代码层次的清晰化。但本质上并没有解决代码之间的依赖混乱的情况,模块化划分也非常不清晰。子工程的方案可以实现代码依赖管理和模块化,但是需要引入复杂的设置,当开发团队成员越来越多的时候,不利于管理。静态库管理方式将依赖代码打包成为静态库,不过由于不能看到源码,调试不方便,同样需要手动引入配置静态库。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种IOS平台下工程项目的组件化构建方法,能够模块化的组织和开发工程项目中各功能组件,并实现各功能模块的解耦和动态配置,由此解决现有技术中大的工程项目的开发和测试成本高,维护困难的技术问题。为实现上述目的,本专利技术提供了一种IOS平台下工程项目的组件化构建方法,包括:对工程项目按组件层次划分为业务组件、基础组件和路由中间件组件,对所述业务组件和基础组件按功能服务粒度划分为服务子组件;构建所述路由中间件组件,所述路由中间件组件用于协调解耦所述服务子组件,并为所述服务子组件提供自动发现服务和组件间通信服务,所述路由中间件组件中包含有所述服务子组件的方法接口;根据所述路由中间件组件中的方法接口构建所述服务子组件;通过CocoaPods建立私有仓库,并将所述服务子组件和路由中间件组件提交到所述私有仓库;通过CocoaPods将所述私有仓库中的相应组件引入所述工程项目,实现所述工程项目的构建。本专利技术的一个实施例中,所述业务组件为与业务相关的上层功能服务组件;所述基础组件是为业务组件提供基本功能的底层支撑组件。本专利技术的一个实施例中,所述基础组件包括如下一种或多种:网络组件、缓存组件、资源组件、日志组件或配置组件。本专利技术的一个实施例中,所述路由中间件组件对外提供服务发现接口,所述服务发现接口定义包括:模块名称、模块下的接口名称、提供给模块接口的参数名称以及是否为缓存模块。本专利技术的一个实施例中,所述路由中间件组件通过以下过程实现:调用NSClassFromString方法,通过模块名动态创建模块;调用NSSelectorFromString方法,通过方法名动态创建模块的对外方法接口;通过respondsToSelector验证模块下是否提供了对应接口,如果模块下存在对应接口则通过performSelector执行模块下面的参数。本专利技术的一个实施例中,所述方法还包括:基于路由组件,构建针对每个组件的特有路由协议,从而将各组件对外的接口进行简化封装,以简化组件之间的调用;其中,所述针对每个组件的特有路由协议采用IOS中的类别实现。本专利技术的一个实施例中,所述通过CocoaPods建立私有仓库,并将所述服务子组件和路由中间件组件提交到所述私有仓库,具体为:创建用来存储各服务子组件podspec文件的私有仓库;拉取私有仓库到本地;创建组件podspec格式文件;在本地测试验证组件,通过验证后上传各服务子组件的podspec到私有仓库。本专利技术的一个实施例中,所述工程项目通过CocoaPods引入相应组件,具体为:组件构建完成并放到私有仓库后,主工程通过Podfile引入相关组件,并通过CocoaPods组件管理方式podinstall构建工程,组件更新后通过podupdate更新到主工程。本专利技术的一个实施例中,所述podspec格式文件中包括如下的一种或多种:组件名称、组件版本、组件功能描述以及组件依赖的三方库。本专利技术的一个实施例中,在引用私有仓库时,将私有源添加到所述Podfile文件中。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,具有如下有益效果:(1)本专利技术提供的IOS平台下工程项目的组件化构建方法,包括组件划分,构建路由中间件解耦组件,建立CocoaPods私有仓库,主工程使用组件,其中组件的划分包括基础组件、业务组件和路由中间件组件,业务组件依赖于基础组件,组件之间通过路由中间件组件进行相互通信调用。路由中间件组件通过Objective-C的Runtime机制实现,能够动态的检查和发现相应的组件。构建好的组件采用CocoaPods私有仓库的方式托管于bitbucket上面,最终主工程通过CocoaPods引入对应的组件。本方案能够将大的工程项目分层为基础组件和业务组件,并将基础组件和业务组件按功能或服务解耦合成服务子组件,并通过路由中间件组件为所述服务子组件提供自动发现服务和组件间通信服务,实现了分模块解耦开发和测试,避免了现有技术中开发和测试的复杂性和高成本,提高了开发和测试效率;(2)本专利技术提供的IOS平台下工程项目的组件化构建方法,将构建的基础组件,业务组件和路由中间件组件上传到CocoaPods私有仓库中,并在主工程中按需引用对应组件,实现了项目的动态灵活开发,提高了功能服务模块的利用性,以及开发测试的效率,并且便于后期的再开发和维护,提高维护效率。附图说明图1是本专利技术实施例中一种IOS平台下工程项目的组件化构建方法的流程示意图;图2是是本专利技术实施例中一个工程项目的组件划分示意图;图3是是本专利技术实施例中一个组件调用方式示意图;图4是本专利技术实施例中一个工程项目的构建示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。此外,下面所描述的本专利技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本专利技术采用CocoaPods的组件化方案解决大型工程项目出现的问题。如图1所示,本专利技术提供一种IOS平台下工程项目的组件化构建方法,包括:S1、对工程项目按组件层次划分为业务组件、基础组件和路由中间件组件,对所述业务组件和基础组件按服务粒度划分为服务子组件;首先,按照一定的划分粒度对项目进行组件划分,从组件层次上可以分为业务组件、基础组件和路由中间件组件,其中业务组件在最上层,与业务相关且变化快,基础组件为业务组件提供基本功能,如网络组件、日志组件和缓存组件等。处在业务组件和基础组件之间的是路由中间件组件。如图2所示,为本专利技术实施例中一种组件划分的示意图,其中基础组件可划分为网络、缓存、资源、日志、配置等基础功能组件,业务组件可划分为自选、行情、选股、资讯、详情、表哥、搜索、消息等服务功能组件;另外还包括有路由中间件组件。S2、构建服务子组件和路由中间件组件,所述路由中间件组件用于协调解耦所述服务子组件,并为所述服务子组件提供自动发现服务和组件间通信服务;根据步骤S1中的组件划分,构建各个服务子组件和各个基础组件;并构建路由中间件组件。组件和组件间通过中间件组件本文档来自技高网...
一种IOS平台下工程项目的组件化构建方法

【技术保护点】
一种IOS平台下工程项目的组件化构建方法,其特征在于,包括:对工程项目按组件层次划分为业务组件、基础组件和路由中间件组件,对所述业务组件和基础组件按功能服务粒度划分为服务子组件;构建所述路由中间件组件,所述路由中间件组件用于协调解耦所述服务子组件,并为所述服务子组件提供自动发现服务和组件间通信服务,所述路由中间件组件中包含有所述服务子组件的方法接口;根据所述路由中间件组件中的方法接口构建所述服务子组件;通过CocoaPods建立私有仓库,并将所述服务子组件和路由中间件组件提交到所述私有仓库;通过CocoaPods将所述私有仓库中的相应组件引入所述工程项目,实现所述工程项目的构建。

【技术特征摘要】
1.一种IOS平台下工程项目的组件化构建方法,其特征在于,包括:对工程项目按组件层次划分为业务组件、基础组件和路由中间件组件,对所述业务组件和基础组件按功能服务粒度划分为服务子组件;构建所述路由中间件组件,所述路由中间件组件用于协调解耦所述服务子组件,并为所述服务子组件提供自动发现服务和组件间通信服务,所述路由中间件组件中包含有所述服务子组件的方法接口;根据所述路由中间件组件中的方法接口构建所述服务子组件;通过CocoaPods建立私有仓库,并将所述服务子组件和路由中间件组件提交到所述私有仓库;通过CocoaPods将所述私有仓库中的相应组件引入所述工程项目,实现所述工程项目的构建。2.如权利要求1所述的IOS平台下工程项目的组件化构建方法,其特征在于,所述业务组件为与业务相关的上层功能服务组件;所述基础组件是为业务组件提供基本功能的底层支撑组件。3.如权利要求1或2所述的IOS平台下工程项目的组件化构建方法,其特征在于,所述基础组件包括如下一种或多种:网络组件、缓存组件、资源组件、日志组件或配置组件。4.如权利要求1或2所述的IOS平台下工程项目的组件化构建方法,其特征在于,所述路由中间件组件对外提供服务发现接口,所述服务发现接口定义包括:模块名称、模块下的接口名称、提供给模块接口的参数名称以及是否为缓存模块。5.如权利要求1或2所述的IOS平台下工程项目的组件化构建方法,其特征在于,所述路由中间件组件通过以下过程实现:调用NSClassFromString方法,通过模块名动态创建模块;调用NSSelectorFromString方法,通过方法名动态创建模块的对外方法接口...

【专利技术属性】
技术研发人员:万文为田淑宁朱留锋荣强
申请(专利权)人:武汉市灯塔互动文化传播有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1