CN108287727A - 组件的调度方法和装置 - Google Patents

组件的调度方法和装置 Download PDF

Info

Publication number
CN108287727A
CN108287727A CN201711382751.4A CN201711382751A CN108287727A CN 108287727 A CN108287727 A CN 108287727A CN 201711382751 A CN201711382751 A CN 201711382751A CN 108287727 A CN108287727 A CN 108287727A
Authority
CN
China
Prior art keywords
service component
component
code
multiple service
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711382751.4A
Other languages
English (en)
Inventor
张子天
沈贤树
蔡欢
陈思钡
刘超
葛泽续
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qunar Software Technology Co Ltd
Original Assignee
Beijing Qunar Software Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qunar Software Technology Co Ltd filed Critical Beijing Qunar Software Technology Co Ltd
Priority to CN201711382751.4A priority Critical patent/CN108287727A/zh
Publication of CN108287727A publication Critical patent/CN108287727A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种组件的调度方法和装置。其中,该方法包括:获取程序对应的代码;按照预设规则将代码抽取为多个业务组件,其中,多个业务组件中的每个组件具有不同的业务功能;构建多个业务组件之间的调度关系;根据多个业务组件之间的调度关系调度多个业务组件。本发明解决了在软件开发过程中由于代码模块间的耦合度高所导致的软件的更新周期长的技术问题。

Description

组件的调度方法和装置
技术领域
本发明涉及计算机软件领域,具体而言,涉及一种组件的调度方法和装置。
背景技术
目前,手机应用或电脑应用具有的功能越来越多,与此相对应的,开发手机应用或电脑应用是所使用的程序的代码量也不断增大,由此,造成代码模块间的耦合度越来越高,对于多业务团队协作的软件开发团队来说,代码模块间的耦合度越高,软件开发的时间将会越长,由此,代码模块间的高耦合度严重制约了软件产品的快速更新。
针对上述在软件开发过程中由于代码模块间的耦合度高所导致的软件的更新周期长的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种组件的调度方法和装置,以至少解决在软件开发过程中由于代码模块间的耦合度高所导致的软件的更新周期长的技术问题。
根据本发明实施例的一个方面,提供了一种组件的调度方法,包括:获取程序对应的代码;按照预设规则将代码抽取为多个业务组件,其中,多个业务组件中的每个组件具有不同的业务功能;构建多个业务组件之间的调度关系;根据多个业务组件之间的调度关系调度多个业务组件。
根据本发明实施例的另一方面,还提供了一种组件的调度装置,包括:第一获取模块,用于获取程序对应的代码;抽取模块,用于按照预设规则将代码抽取为多个业务组件,其中,多个业务组件中的每个组件具有不同的业务功能;构建模块,用于构建多个业务组件之间的调度关系;调度模块,用于根据多个业务组件之间的调度关系调度多个业务组件。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,程序执行组件的调度方法。
根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行组件的调度方法。
在本发明实施例中,采用根据业务功能对代码进行抽取的方式,通过获取程序对应的代码,并按照预设规则将代码抽取为多个业务组件,然后构建多个业务之间的调度关系,最后根据多个业务之间的调度关系调度多个业务组件,其中,多个业务组件中的每个组件具有不同的业务功能,达到了各个业务组件之间的耦合度的目的,从而实现了减少代码的更新周期的技术效果,进而解决了在软件开发过程中由于代码模块间的耦合度高所导致的软件的更新周期长的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种组件的调度方法的流程图;以及
图2是根据本发明实施例的一种组件的调度装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种组件的调度方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的组件的调度方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取程序对应的代码。
需要说明的是,位于终端设备上的软件平台可获取到安装在终端设备上的应用程序所对应的代码。
步骤S104,按照预设规则将代码抽取为多个业务组件,其中,多个业务组件中的每个业务组件具有不同的业务功能。
需要说明的是,上述预设规则可以为但不限于应用程序所能实现的业务功能。例如,应用程序A具有预订机票和预订酒店的业务功能,则可根据应用程序的业务功能将应用程序A的代码抽取为预订机票的业务组件和预订酒店的业务组件。
此外,还需要说明的是,业务组件是根据应用程序所实现的业务功能对代码进行抽取得到的代码模块,而传统的代码模块主要是基于应用程序的基础功能对代码进行抽取所得到的模块,与传统的代码模块相比,业务组件之间的耦合度更低。另外,多个业务组件中的每个业务组件具有独立的更新周期。
步骤S106,构建多个业务组件之间的调度关系。
需要说明的是,在根据预设规则将代码抽取为多个业务组件之后,可根据各个业务组件所实现的业务功能来构建调度关系,例如,按照预先制定的路由规范、页面的跳转等来确定业务组件之间的调度关系。
步骤S108,根据多个业务组件之间的调度关系调度多个业务组件。
需要说明的是,在构建多个业务组件之间的调度关系之后,软件平台采用项目构建工具(例如,gradle工具)将各个业务组件集成到软件平台上,从而形成一个完成的应用程序。在启动该应用程序之后,该应用程序按照预设的调度关系来调度各个业务组件。
基于上述步骤S102至步骤S108所限定的步骤,可以获知,通过获取程序对应的代码,并按照预设规则将代码抽取为多个业务组件,然后构建多个业务之间的调度关系,最后根据多个业务之间的调度关系调度多个业务组件,其中,多个业务组件中的每个组件具有不同的业务功能。
容易注意到的是,业务组件是基于业务功能对代码进行抽取所得到的组件,业务组件与传统的代码组件相比,具有较低的耦合性。另外,将代码按照预设规则抽取为多个业务组件,每个业务组件内的代码具有一定的关联性,而业务组件间相互独立,有效降低了业务组件之间的耦合度,此外,由于各个业务组件之间相互独立,因此,每个业务组件可独立开发,每个业务组件具有独立的更新周期,互不影响,并通过构建的调度关系来对多个业务组件进行调度,由此,可减少整个程序代码的更新周期,提高代码的更新速度。
由上述内容可知,本申请所提供的实施例可以达到各个业务组件之间的耦合度的目的,从而实现了减少代码的更新周期的技术效果,进而解决了在软件开发过程中由于代码模块间的耦合度高所导致的软件的更新周期长的技术问题。
在一种可选的实施例中,根据预设规则将代码抽取为多个业务组件具体包括如下步骤:
步骤S1040,根据代码所实现的基础功能,将代码抽取成库组件,其中,基础功能至少包括如下之一:网络通信、数据存储;
步骤S1042,基于库组件以及代码所实现的业务功能,将代码抽取成业务组件。
需要说明的是,库组件为具有基础功能的组件,例如,网络通信功能、数据存储功能等;而业务组件为具有业务功能的组件,例如,预订机票的功能、预订酒店的功能。其中,库组件可为各个业务组件提供支撑,从而达到使业务组件快速开发的目的。
此外,还需要说明的是,基于应用程序的业务功能和基础功能将代码抽取成独立的组件,组件之间相互独立开发,互不影响,进而,达到了降低组件间的耦合度的技术效果。
在一种可选的实施例中,在将代码抽取为多个业务组件之后,还需要构建多个业务组件之间的调度关系,具体步骤如下:
步骤S1060,获取多个业务组件中的每个业务组件的标识信息,其中,每个组件的标识信息用于表征每个业务组件所实现的业务功能;
步骤S1062,根据预先设定的调度顺序以及每个业务组件的标识信息确定多个业务组件之间的调度关系。
需要说明的是,每个组件均具有一个唯一的标识信息,该标识信息可以为但不限于组件的ID、组件的名称。另外,每个组件(包括库组件和业务组件)均依附于软件平台,通过软件平台可制定一套路由规范,页面间可实现动态跳转,例如,软件平台可预先将组件的标识信息设定一定的调度顺序,由此,软件平台可通过调取组件的标识信息来确定组件的调度顺序。
此外,还需要说明的是,在基于Android客户端的软件开发过程中,软件平台可基于Android客户端的加载原理,动态加载各个组件的类以及资源。
在一种可选的实施例中,在构建多个业务组件之间的调度关系之后,软件平台即可根据构建的调度关系来调度各个业务组件。在完成对业务组件之间的调度之后,如果需要对组件进行升级,则直接对应用程序中的需要升级的组件进行更新即可,而不需要对整个应用程序进行更新。具体步骤如下:
步骤S1080,检测是否存在对多个业务组件进行更新的第一业务组件;
步骤S1082,在检测到存在第一业务组件的情况下,获取与第一业务组件对应的第二业务组件,其中,第二业务组件为多个业务组件中待更新的业务组件;
步骤S1084,根据第一业务组件更新第二业务组件,得到更新后的程序。
需要说明的是,在上述过程中,软件平台仅对需要更新的组件进行更新,在组件进行更新的过程中,软件平台仍可调取其他未更新的组件,即其他未更新的组件的运行并不会收到影响,从而达到了动态升级应用程序的技术效果。
此外,还需要说明的是,在基于Android客户端的软件开发过程中,组件的开发是标准的Android范式,但组件为软件平台所提供的用于集成的产物,是在构建组件的过程中根据软件平台制定的规范在库依赖、资源分区等方面进行特定处理所得到的。此外,软件平台在构建组件的功能上具有更强的灵活性,可以配置集成软件平台的组件集合,也可配置成预先加载的组件集合。
实施例2
根据本发明实施例,还提供了一种组件的调度装置实施例,其中,图2是根据本发明实施例的组件的调度装置的结构示意图,如图2所示,该装置包括:第一获取模块201、抽取模块203、构建模块205以及调度模块207。
其中,第一获取模块201,用于获取程序对应的代码;抽取模块203,用于按照预设规则将代码抽取为多个业务组件,其中,多个业务组件中的每个组件具有不同的业务功能;构建模块205,用于构建多个业务组件之间的调度关系;调度模块207,用于根据多个业务组件之间的调度关系调度多个业务组件。
需要说明的是,上述第一获取模块201、抽取模块203、构建模块205以及调度模块207对应于实施例1中的步骤S102至步骤S108,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
在一种可选的实施例中,抽取模块包括:第一抽取模块以及第二抽取模块。其中,第一抽取模块,用于根据代码所实现的基础功能,将代码抽取成库组件,其中,基础功能至少包括如下之一:网络通信、数据存储;第二抽取模块,用于根据库组件中的代码所实现的业务功能,将代码抽取成业务组件。
需要说明的是,上述第一抽取模块以及第二抽取模块对应于实施例1中的步骤S1040至步骤S1042,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
在一种可选的实施例中,构建模块包括:第二获取模块以及确定模块。其中,第二获取模块,用于获取多个业务组件中的每个业务组件的标识信息,其中,每个组件的标识信息用于表征每个业务组件所实现的业务功能;确定模块,用于根据预先设定的调度顺序以及每个业务组件的标识信息确定多个业务组件之间的调度关系。
需要说明的是,上述第二获取模块以及确定模块对应于实施例1中的步骤S1060至步骤S1062,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
在一种可选的实施例中,组件的调度装置还包括:检测模块、第三获取模块以及第四获取模块。其中,检测模块,用于检测是否存在对多个业务组件进行更新的第一业务组件;第三获取模块,用于在检测到存在第一业务组件的情况下,获取与第一业务组件对应的第二业务组件,其中,第二业务组件为多个业务组件中待更新的业务组件;第四获取模块,用于根据第一业务组件更新第二业务组件,得到更新后的程序。
需要说明的是,上述检测模块、第三获取模块以及第四获取模块对应于实施例1中的步骤S1080至步骤S1084,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
在一种可选的实施例中,多个业务组件中的每个业务组件具有独立的更新周期。
实施例3
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,程序执行实施例1中的组件的调度方法。
实施例4
根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行实施例1中的组件的调度方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种组件的调度方法,其特征在于,包括:
获取程序对应的代码;
按照预设规则将所述代码抽取为多个业务组件,其中,所述多个业务组件中的每个业务组件具有不同的业务功能;
构建所述多个业务组件之间的调度关系;
根据所述多个业务组件之间的调度关系调度所述多个业务组件。
2.根据权利要求1所述的方法,其特征在于,根据预设规则将所述代码抽取为多个业务组件包括:
根据所述代码所实现的基础功能,将所述代码抽取成库组件,其中,所述基础功能至少包括如下之一:网络通信、数据存储;
基于所述库组件以及所述代码所实现的业务功能,将所述代码抽取成所述业务组件。
3.根据权利要求2所述的方法,其特征在于,构建所述多个业务组件之间的调度关系包括:
获取所述多个业务组件中的每个业务组件的标识信息,其中,所述每个业务组件的标识信息用于表征所述每个业务组件所实现的业务功能;
根据预先设定的调度顺序以及所述每个业务组件的标识信息确定所述多个业务组件之间的调度关系。
4.根据权利要求1所述的方法,其特征在于,在根据所述多个业务组件之间的调度关系调度所述多个业务组件之后,所述方法还包括:
检测是否存在对所述多个业务组件进行更新的第一业务组件;
在检测到存在所述第一业务组件的情况下,获取与所述第一业务组件对应的第二业务组件,其中,所述第二业务组件为所述多个业务组件中待更新的业务组件;
根据所述第一业务组件更新所述第二业务组件,得到更新后的程序。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,所述多个业务组件中的每个业务组件具有独立的更新周期。
6.一种组件的调度装置,其特征在于,包括:
第一获取模块,用于获取程序对应的代码;
抽取模块,用于按照预设规则将所述代码抽取为多个业务组件,其中,所述多个业务组件中的每个业务组件具有不同的业务功能;
构建模块,用于构建所述多个业务组件之间的调度关系;
调度模块,用于根据所述多个业务组件之间的调度关系调度所述多个业务组件。
7.根据权利要求6所述的装置,其特征在于,所述抽取模块包括:
第一抽取模块,用于根据所述代码所实现的基础功能,将所述代码抽取成库组件,其中,所述基础功能至少包括如下之一:网络通信、数据存储;
第二抽取模块,用于根据所述库组件中的代码所实现的业务功能,将所述代码抽取成所述业务组件。
8.根据权利要求7所述的装置,其特征在于,所述构建模块包括:
第二获取模块,用于获取所述多个业务组件中的每个业务组件的标识信息,其中,所述每个业务组件的标识信息用于表征所述每个业务组件所实现的业务功能;
确定模块,用于根据预先设定的调度顺序以及所述每个业务组件的标识信息确定所述多个业务组件之间的调度关系。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行权利要求1至5中任意一项所述的组件的调度方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至5中任意一项所述的组件的调度方法。
CN201711382751.4A 2017-12-19 2017-12-19 组件的调度方法和装置 Pending CN108287727A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711382751.4A CN108287727A (zh) 2017-12-19 2017-12-19 组件的调度方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711382751.4A CN108287727A (zh) 2017-12-19 2017-12-19 组件的调度方法和装置

Publications (1)

Publication Number Publication Date
CN108287727A true CN108287727A (zh) 2018-07-17

Family

ID=62831959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711382751.4A Pending CN108287727A (zh) 2017-12-19 2017-12-19 组件的调度方法和装置

Country Status (1)

Country Link
CN (1) CN108287727A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399119A (zh) * 2019-06-18 2019-11-01 五八有限公司 一种组件化构建方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101201883A (zh) * 2007-09-18 2008-06-18 北京赛柏科技有限责任公司 基于虚拟机的软件保护方法
CN101458629A (zh) * 2008-12-31 2009-06-17 北京中星微电子有限公司 嵌入式实时操作系统中实现动态加载的方法和装置
CN101916194A (zh) * 2010-06-01 2010-12-15 浙江大学 一种无线传感网节点程序的部署方法
CN106897072A (zh) * 2017-02-28 2017-06-27 北京三快在线科技有限公司 业务工程调用方法、装置及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101201883A (zh) * 2007-09-18 2008-06-18 北京赛柏科技有限责任公司 基于虚拟机的软件保护方法
CN101458629A (zh) * 2008-12-31 2009-06-17 北京中星微电子有限公司 嵌入式实时操作系统中实现动态加载的方法和装置
CN101916194A (zh) * 2010-06-01 2010-12-15 浙江大学 一种无线传感网节点程序的部署方法
CN106897072A (zh) * 2017-02-28 2017-06-27 北京三快在线科技有限公司 业务工程调用方法、装置及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399119A (zh) * 2019-06-18 2019-11-01 五八有限公司 一种组件化构建方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN109800056A (zh) 一种基于容器的区块链部署方法
CN104679532B (zh) 内核模块加载方法和装置
CN107846465A (zh) 更新客户端资源包的方法和装置
CN108282527A (zh) 生成服务实例的分布式系统和方法
CN106502778A (zh) 一种终端及其进程调度优化方法
CN107357718A (zh) 一种构建测试方法及装置
CN106569898A (zh) 一种资源分配的方法以及移动终端
CN110365536A (zh) 一种物联网设备的故障提示方法及相关装置
CN106844397A (zh) 基于分库分表的任务传输方法、装置及系统
CN108429754A (zh) 一种云端分布式检测方法、系统及相关装置
CN106681799B (zh) 插入磁盘的方法、装置和系统
CN108268296A (zh) 页面布局的加载方法、客户端和服务器
CN108829510A (zh) 线程绑定处理方法和装置
CN106101984A (zh) 一种nfc移动支付终端的安全模块管理方法及终端
CN108509248A (zh) 数据处理方法和装置、存储介质、处理器及终端
CN109976823A (zh) 一种应用程序启动方法、装置及终端设备
CN106230999A (zh) 一种联系人信息处理方法、终端以及服务器
CN109002434A (zh) 客服问答匹配方法、服务器及存储介质
CN106933644A (zh) 数据处理方法和装置
CN108287727A (zh) 组件的调度方法和装置
CN106484545A (zh) 调用子程序的方法及装置
CN101986282A (zh) 拓扑适配方法及装置
CN109697281A (zh) 在线合并文档的方法、装置及电子设备
CN107352287A (zh) 集装箱的配载方法及装置
CN106095400A (zh) 一种应用程序下载方法及终端、通信设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180717

RJ01 Rejection of invention patent application after publication