CN105677302B - 一种应用程序模块化开发方法以及装置 - Google Patents
一种应用程序模块化开发方法以及装置 Download PDFInfo
- Publication number
- CN105677302B CN105677302B CN201410652718.9A CN201410652718A CN105677302B CN 105677302 B CN105677302 B CN 105677302B CN 201410652718 A CN201410652718 A CN 201410652718A CN 105677302 B CN105677302 B CN 105677302B
- Authority
- CN
- China
- Prior art keywords
- application
- application module
- module
- information
- application program
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用程序模块化开发方法,包括:将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;获取所述应用模块的存储路径信息;根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。本申请提供的所述应用程序模块化开发方法,使软件开发工作更加方便快捷,具有很高的实用性;并且实现简单,开发成本较低。
Description
技术领域
本申请涉及应用开发技术领域,具体涉及一种应用程序模块化开发方法。本申请同时涉及一种应用程序模块化开发装置。
背景技术
在应用开发技术领域,模块化是一个常见的概念,所谓模块化,就是将一个大型系统分解为多个较小的互相协作的逻辑单元,将每一个逻辑单元作为系统的一个模块,通过模块之间的逻辑关系改善系统的维护性和封装性。
目前,在应用的模块化开发技术领域,OSGi技术显得不可或缺;OSGi(OpenService Gateway Initiative,开放服务网关协议),现在被定义为一种技术,在OSGi技术体系中,每个模块被认为是由一个或多个Bundle(组件)组成,Bundle类共享以及Bundle类加载是模块化的重点。Bundle的目录结构如附图1所示,其中,com目录为该Bundle的包结构;META-INF目录下的文件用于描述Bundle的基本信息;OSGi-INF目录中包含有配置文件,用于执行Bundle对外开放的服务的发布和调用;此外,每个Bundle都定义了一个独立的类加载器,Bundle之间的类通过Export-Package、Import-Package、Require-Bundle和DynamicImport-Package的方式进行共享。
上述现有技术提供的应用程序模块化开发方法存在明显的缺陷。
现有技术提供的应用程序模块化开发方法中,通过OSGi技术实现应用程序的模块化开发,在实际开发中的实用性较低,开发人员对于OSGi技术的动态化特性没有强烈的需求;此外,学习OSGi技术的成本较高,并且通过OSGi技术实现动态化相当复杂,增加了额外的开发和运维成本。
发明内容
本申请提供一种应用程序模块化开发方法,以解决现有的应用程序模块化开发方法存在的实用性较低和成本较高的问题。本申请同时涉及一种应用程序模块化开发装置。
本申请提供一种应用程序模块化开发方法,包括:
将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;
获取所述应用模块的存储路径信息;
根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;
结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;
调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
可选的,所述将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块,包括:
建立所述第三方应用程序的开发项目;
将所述开发项目以功能分类为切分基准切分为与所述功能分类一一对应的至少一个子工程;
将所述子工程进行打包,生成具有统一格式文件目录的应用模块;
其中,所述应用模块的文件目录下存储有该应用模块的配置文件。
可选的,所述将所述子工程进行打包,生成具有统一格式文件目录的应用模块步骤,通过隔离容器提供的Maven工具实现。
可选的,所述获取所述应用模块的存储路径信息之后,包括:
将至少一个应用模块的存储路径信息发送至应用模块管理器。
可选的,所述根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息,包括:
获取所述应用模块的基本信息;
根据所述应用模块的存储路径信息,对所述应用模块的配置文件进行解析,获得所述应用模块的基本配置信息;
所述基本信息包括名称、目录以及版本信息。
可选的,所述基本配置信息包括:所述应用模块的优先级顺序;
所述优先级顺序用于控制所述应用模块安装时的先后顺序。
可选的,所述根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息之后,包括:
注册应用模块管理器,并生成所述应用模块的生命周期事件;
基于隔离容器的类加载机制加载并导出所述应用模块的类;
其中,所述生命周期事件包括安装、运行管理以及卸载。
可选的,所述应用接口包括:所述应用模块向其他应用模块提供访问的应用程序编程接口(API)集合。
本申请另外提供一种应用程序模块化开发装置,包括:
应用程序切分单元,用于将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;
应用模块信息获取单元,用于获取所述应用模块的存储路径信息;
应用模块解析单元,用于根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;
应用模块接口注册单元,用于结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;
应用程序生成单元,用于调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
可选的,所述应用程序切分单元,包括:
项目建立子单元,用于建立所述第三方应用程序的开发项目;
子工程切分子单元,用于将所述开发项目以功能分类为切分基准切分为与所述功能分类一一对应的至少一个子工程;
应用模块生成子单元,用于将所述子工程进行打包,生成具有统一格式文件目录的应用模块;
其中,所述应用模块的文件目录下存储有该应用模块的配置文件。
可选的,所述应用程序模块化开发装置,包括:
应用模块信息发送单元,用于将至少一个应用模块的存储路径信息发送至应用模块管理器。
可选的,所述应用模块解析单元,包括:
基本信息获取子单元,用于获取所述应用模块的基本信息;
解析子单元,用于根据所述应用模块的存储路径信息,对所述应用模块的配置文件进行解析,获得所述应用模块的基本配置信息;
所述基本信息包括名称、目录以及版本信息。
可选的,所述应用程序模块化开发装置,包括:
生命周期事件生成单元,用于注册应用模块管理器,并生成所述应用模块的生命周期事件;
类加载导出单元,用于基于隔离容器的类加载机制加载并导出所述应用模块的类;
其中,所述生命周期事件包括安装、运行管理以及卸载。
与现有技术相比,本申请具有以下优点:
本申请提供的一种应用程序模块化开发方法,包括:将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;获取所述应用模块的存储路径信息;根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
本申请提供的所述应用程序模块化开发方法中,将应用程序进行底层的模块化划分,划分为独立的应用模块,并且将应用模块中的应用功能以应用接口的形式对外开放,开发人员在进行大型应用程序的开发时调用所述应用接口,避免了重复编写大量相同的代码,使软件开发工作更加方便快捷,具有很高的实用性;此外,在达到上述效果的同时,本申请提供的所述应用程序模块化开发方法实现简单,开发成本较低。
附图说明
图1是本申请提供的OSGI中Buddle的目录结构示意图;
图2是本申请实施例提供的一种应用程序模块化开发方法处理流程图;
图3是本申请实施例提供的一种应用模块的文件目录示意图;
图4是本申请实施例提供的一种类加载器的结构示意图;
图5是本申请实施例提供的一种应用程序模块化开发装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种应用程序模块化开发方法,本申请另外提供一种应用程序模块化开发装置。
所述应用程序模块化开发方法实施例如下:
参照图2,其示出了本实施例提供的一种应用程序模块化开发方法处理流程图。
以下结合图2对本实施例提供的一种应用程序模块化开发方法各个步骤进行说明;此外,本实施例提供的一种应用程序模块化开发方法的具体步骤之间的顺序关系请根据图2确定。
本实施例中,以电子交易平台系统这类大型应用程序的开发为例,对所述应用程序模块化开发方法进行说明。
对于电子交易平台系统中的交易流程,可以抽象为几个应用功能点的连接形成的一个交易链路,例如“获取商品详情-计算单价-获取优惠-计算物流-合计总价”,在不同的业务部门,比如天猫和聚划算,可以在所述交易链路的基础上,针对交易链路中的每一个应用功能点,采用不同的应用扩展实现,避免了重复编写大量相同的代码。
下述步骤围绕电子交易平台系统的模块化开发,对所述应用程序模块化开发方法各个步骤做出详细说明。
步骤S201,将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块。
所述第三方应用程序是指经过开发之后最终获得的应用程序,本实施例中,所述第三方应用程序是指电子交易平台系统。
本步骤中,将所述电子交易平台系统按照设定的切分基准切分为特定格式的应用模块,包括下述3个步骤:
1)建立所述电子交易平台系统的开发项目;
本实施例中,基于Java语言开发所述电子交易平台系统,因此,基于Java开发平台(Eclipse、MyEclipse、JBuilder等)建立所述电子交易平台系统的开发项目。
除此之外,还可以采用其他编程语言来开发所述电子交易平台系统,在此不作限定。
2)将所述开发项目以功能分类为切分基准切分为与所述功能分类一一对应的至少一个子工程;
一般而言,开发人员在开发所述电子交易平台系统此类大型应用程序时,在所述电子交易平台系统的开发项目中建立多个子工程,每个子工程分别由相应的开发人员或者开发团队负责开发,所有的子工程都开发完毕之后,将所述电子交易平台系统的开发项目中建立的所有子工程进行整合编译,生成所述电子交易平台系统。
本实施例中,以功能分类为切分基准,将所述电子交易平台系统的开发项目进行切分,切分为与所述功能分类一一对应的多个子工程。
除此之外,还可以以所述功能分类之外的其它切分基准进行切分,在此不作限定。
3)将所述子工程进行打包,生成具有统一格式文件目录的应用模块;
需要说明的是,将所述子工程进行打包,生成具有统一格式文件目录的应用模块步骤,通过隔离容器提供的Maven工具实现。
本实施例中,所述隔离容器是指一种基于Java平台的轻量级隔离容器,通过Java平台的类加载机制实现类隔离;并且,所述隔离容器还用于提供一种项目管理工具,即:Maven工具,所述Maven工具用于将所述电子交易平台系统的子工程进行打包,打包生成具有统一格式文件目录的应用模块,实现模块化。
除上述所述的一种基于Java平台的轻量级隔离容器之外,还可以采用其他隔离容器实现上述将所述电子交易平台系统进行模块化改造的步骤,在此不作限定。
本实施例中,所述隔离容器一方面可以起到存储作用,用于存储所述电子交易平台系统各个应用模块的信息,包括代码,以及需导出类的信息;
另一方面,所述隔离容器本身属于一种可执行程序,在所述电子交易平台系统的运行环境中,所述隔离容器可以被启动,启动之后可以针对所述电子交易平台系统的应用模块执行解析、类加载器的创建等一系列操作,使所述隔离容器中的应用模块可以导出给所述电子交易平台系统,供所述电子交易平台系统调用。
需要说明的是,本实施例所述的隔离容器和所述电子交易平台系统的开发项目(包括所述电子交易平台系统的子工程和所述应用模块),在应用服务器(JBoss、Jetty、Tomcat等)上进行集成。除此之外,也可以在其他平台上进行集成,在此不作限定。
此外,还需要说明的是,所述应用模块的文件目录下存储有该应用模块的配置文件;具体的,所述应用模块的文件目录如图3所示;
图3所示的应用模块的文件目录中,bundle目录是指所述应用模块的根目录。下述以图3中的taobao-bundle.bundle目录为例对所述应用模块的目录进行说明:
1)taobao-bundle.bundle目录下的conf目录,conf目录用于存放所述应用模块的配置文件,通常情况下,一个应用模块包括以下四个基本配置文件:
a、priority.properties;
该配置文件用于标识所述电子交易平台系统中应用模块的优先级,所述隔离容器启动过程中,根据优先级依次启动各个应用模块。
b、import.properties;
该配置文件用于标识所述应用模块从其他应用模块中依赖的共享类,允许配置类名和包名两个级别。
c、export.properties;
该配置文件用于标识所述应用模块共享给其他应用模块的类,允许配置类名、包名和jar包名三个级别;此外,该配置文件还用于标识所述应用模块是否需要从外部的容器中加载相关的类。
d、activator.properties;
该配置文件用于标识所述应用模块中处理自身生命周期时事件的应用模块管理器。
2)taobao-bundle.bundle目录下的lib目录,lib目录用于存放库文件或者库函数。
除此之外,将所述电子交易平台系统切分为所述应用模块之后,还包括将关系紧密的扩展实现组装在同一个应用模块中,目的在于:
一方面,保证不同应用模块自身的私有性;不同业务部门的开发由各自的开发团队负责,对于不同的应用模块会有不同的三方包依赖,因此,应用模块之间必须能够实现隔离,确保应用模块优先使用自身内部的三方包依赖,并且自身内部的包和类默认不会对其他应用模块可见,保证应用模块的私有性;
另一方面,不同的应用模块之间存在依赖关系,例如:应用模块A依赖应用模块B中的部分类,所述隔离容器需要将应用模块B中的部分类共享给应用模块A,加强业务之间的关联。
步骤S202,获取所述应用模块的存储路径信息。
所述步骤S201将所述电子交易平台系统切分为所述应用模块之后,本步骤中,获取所述电子交易平台系统切分之后生成的应用模块的存储路径信息。
本实施例中,获取所述电子交易平台系统的应用模块的文件目录,将该文件目录作为所述应用模块的存储路径信息。
例如:应用模块的文件目录为“xxx/bundle/taobao-bundle.bundle”,则将“xxx/bundle/taobao-bundle.bundle”作为所述应用模块的存储路径信息。
除此之外,还可以将所述文件目录之外的其他信息作为所述应用模块的存储路径信息,在此不作限定。
需要说明的是,本步骤获取到所述应用模块的存储路径信息之后,将所有应用模块的存储路径信息发送至应用模块管理器。
所述应用模块管理器用于管理所述应用模块的生命周期事件;其中,所述生命周期事件包括所述应用模块的安装、运行管理以及卸载。
除此之外,还可以将所述电子交易平台系统切分之后生成的指定的一个或多个应用模块的存储路径信息发送至所述应用模块管理器,在此不作限定。
步骤S203,根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息。
需要说明的是,本步骤得以实施的前提是接收到所述电子交易平台系统发出的启动操作指令。
当接收到所述电子交易平台系统发出的启动操作指令之后,获取所述应用模块的基本信息;所述基本信息包括名称、目录以及版本信息。
获取到所述应用模块的基本信息之后,根据所述应用模块的存储路径信息,即所述应用模块的文件目录,对存储在所述文件目录中的所述应用模块的配置文件进行解析,获得所述应用模块的基本配置信息。
本实施例中,所述基本配置信息是指所述应用模块的优先级顺序,所述优先级顺序用于标识所述应用模块管理器安装所述应用模块的先后顺序。
需要说明的是,执行根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息步骤之后,还包括下述步骤:
1)注册应用模块管理器,并生成所述应用模块的生命周期事件;
所述应用模块管理器用于管理和执行所述应用模块的生命周期事件;其中,所述应用模块的生命周期事件包括安装、运行管理以及卸载。
2)基于隔离容器的类加载机制加载并导出所述应用模块的类;
所述隔离容器是指一种轻量级的隔离容器,本质上就是类隔离。
所述隔离容器不仅用于存储所述电子交易平台系统各个应用模块的信息;此外,所述隔离容器被启动之后,启动自身的类加载器实现类的加载和导出。
所述类加载器是所述隔离容器的核心,所述类加载器既可以实现与外部容器的联通,也可以实现与外部容器的隔离。
下述以一种基于Java平台的轻量级隔离容器Pandora容器为例,对所述隔离容器基于Java平台的类加载机制进行说明:
当所述应用模块被部署时,生成一个类加载器Pandora Bundle ClassLoader;所述类加载器Pandora Bundle ClassLoader的结构如图4所示,不同的类加载器PandoraBundle ClassLoade之间相互隔离;Pandora Class Exporter负责将每个应用模块中需要导出的类导出到Pandora Class Loader中缓存起来;Shared中用于存储所述应用模块之间的共享类;Pandora容器部署完所述应用模块之后,将Pandora Class Loader中缓存的类导出到外部容器中,实现类共享。
步骤S204,结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口。
一般而言,在应用程序的结构中,业务系统的所有应用模块都是和主干组织是存放到一起的,主干组织能够访问并获取到各个应用模块中的内容;但是,本实施例中,业务系统的主干组织和所述应用模块之间的联系被隔断,因此,需要通过所述隔离容器提供一个服务,用于建立业务系统的主干组织和所述应用模块之间的访问关系。
本步骤中,通过接口层实现建立所述电子交易平台系统与所述应用之间的访问关系,方便所述电子交易平台系统访问所述应用模块中的数据,以及方便所述应用模块之间的数据访问。
所述接口层的接口设计通过“public interface FrameworkContext{}”接口实现。具体的,在所述应用模块启动的时候,将所述应用模块向所述电子交易平台系统开放的接口,以及所述应用模块向其他应用模块开放的接口在所述接口层当中进行注册,所述应用模块的接口在所述接口层中注册之后,生成对应的应用接口,供所述电子交易平台系统以及其他应用模块的调用;此外,注册所述应用模块的接口的过程中,设定访问所述应用模块的接口对应的应用接口的秘钥,所述电子交易平台系统以及其他应用模块在访问所述应用接口时,输入秘钥进行验证,通过验证后即可访问所述应用接口。
需要说明的是,本实施例中,完成上述注册之后,将所述接口层封装为一个API视图层,封装之后,所述电子交易平台系统以及其他应用模块以API调用的方式访问所述应用接口。
除此之外,还可以采用本实施例所述API视图层之外的其他方法实现上述接口层的访问,在此不作限定。
步骤S205,调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
对于不同的业务部门开发不同的电子交易平台系统,或者不同的业务部门协作开发同一电子交易平台系统,每个部门负责开发一个或者多个应用模块,开发人员通过所述API视图层调用所述应用接口,在所述应用接口的基础之上开发各自的应用模块,或者在所述应用接口的基础之上基于不同的扩展来实现所述应用模块,避免了重复编写大量相同的代码,使软件开发工作更加方便快捷,具有很高的实用性,并且降低了开发成本。
所述应用程序模块化开发装置实施例如下:
在上述的实施例中,提供了一种应用程序模块化开发方法,与之相对应的,本申请还提供了一种应用程序模块化开发装置。
参照图5,其示出了根据本实施例提供的一种应用程序模块化开发装置示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本申请所述的一种应用程序模块化开发装置,包括:
应用程序切分单元501,用于将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;
应用模块信息获取单元502,用于获取所述应用模块的存储路径信息;
应用模块解析单元503,用于根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;
应用模块接口注册单元504,用于结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;
应用程序生成单元505,用于调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
可选的,所述应用程序切分单元501,包括:
项目建立子单元,用于建立所述第三方应用程序的开发项目;
子工程切分子单元,用于将所述开发项目以功能分类为切分基准切分为与所述功能分类一一对应的至少一个子工程;
应用模块生成子单元,用于将所述子工程进行打包,生成具有统一格式文件目录的应用模块;
其中,所述应用模块的文件目录下存储有该应用模块的配置文件。
可选的,所述应用程序模块化开发装置,包括:
应用模块信息发送单元,用于将至少一个应用模块的存储路径信息发送至应用模块管理器。
可选的,所述应用模块解析单元503,包括:
基本信息获取子单元,用于获取所述应用模块的基本信息;
解析子单元,用于根据所述应用模块的存储路径信息,对所述应用模块的配置文件进行解析,获得所述应用模块的基本配置信息;
所述基本信息包括名称、目录以及版本信息。
可选的,所述应用程序模块化开发装置,包括:
生命周期事件生成单元,用于注册应用模块管理器,并生成所述应用模块的生命周期事件;
类加载导出单元,用于基于隔离容器的类加载机制加载并导出所述应用模块的类;
其中,所述生命周期事件包括安装、运行管理以及卸载。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (13)
1.一种应用程序模块化开发方法,其特征在于,包括:
将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;
获取所述应用模块的存储路径信息;
根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;
结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;
调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
2.根据权利要求1所述的应用程序模块化开发方法,其特征在于,所述将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块,包括:
建立所述第三方应用程序的开发项目;
将所述开发项目以功能分类为切分基准切分为与所述功能分类一一对应的至少一个子工程;
将所述子工程进行打包,生成具有统一格式文件目录的应用模块;
其中,所述应用模块的文件目录下存储有该应用模块的配置文件。
3.根据权利要求2所述的应用程序模块化开发方法,其特征在于,所述将所述子工程进行打包,生成具有统一格式文件目录的应用模块步骤,通过隔离容器提供的Maven工具实现。
4.根据权利要求1所述的应用程序模块化开发方法,其特征在于,所述获取所述应用模块的存储路径信息之后,包括:
将至少一个应用模块的存储路径信息发送至应用模块管理器。
5.根据权利要求1所述的应用程序模块化开发方法,其特征在于,所述根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息,包括:
获取所述应用模块的基本信息;
根据所述应用模块的存储路径信息,对所述应用模块的配置文件进行解析,获得所述应用模块的基本配置信息;
所述基本信息包括名称、目录以及版本信息。
6.根据权利要求5所述的应用程序模块化开发方法,其特征在于,所述基本配置信息包括:所述应用模块的优先级顺序;
所述优先级顺序用于控制所述应用模块安装时的先后顺序。
7.根据权利要求1所述的应用程序模块化开发方法,其特征在于,所述根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息之后,包括:
注册应用模块管理器,并生成所述应用模块的生命周期事件;
基于隔离容器的类加载机制加载并导出所述应用模块的类;
其中,所述生命周期事件包括安装、运行管理以及卸载。
8.根据权利要求1所述的应用程序模块化开发方法,其特征在于,所述应用接口包括:所述应用模块向其他应用模块提供访问的应用程序编程接口(API)集合。
9.一种应用程序模块化开发装置,其特征在于,包括:
应用程序切分单元,用于将待开发的第三方应用程序按照设定的切分基准切分为特定格式的应用模块;
应用模块信息获取单元,用于获取所述应用模块的存储路径信息;
应用模块解析单元,用于根据所述存储路径信息对所述应用模块进行解析,获得所述应用模块的基本配置信息;
应用模块接口注册单元,用于结合所述基本配置信息对所述应用模块的接口进行注册与发布,生成应用接口;
应用程序生成单元,用于调用所述应用接口对所述应用模块进行开发,生成所述第三方应用程序。
10.根据权利要求9所述的应用程序模块化开发装置,其特征在于,所述应用程序切分单元,包括:
项目建立子单元,用于建立所述第三方应用程序的开发项目;
子工程切分子单元,用于将所述开发项目以功能分类为切分基准切分为与所述功能分类一一对应的至少一个子工程;
应用模块生成子单元,用于将所述子工程进行打包,生成具有统一格式文件目录的应用模块;
其中,所述应用模块的文件目录下存储有该应用模块的配置文件。
11.根据权利要求9所述的应用程序模块化开发装置,其特征在于,包括:
应用模块信息发送单元,用于将至少一个应用模块的存储路径信息发送至应用模块管理器。
12.根据权利要求9所述的应用程序模块化开发装置,其特征在于,所述应用模块解析单元,包括:
基本信息获取子单元,用于获取所述应用模块的基本信息;
解析子单元,用于根据所述应用模块的存储路径信息,对所述应用模块的配置文件进行解析,获得所述应用模块的基本配置信息;
所述基本信息包括名称、目录以及版本信息。
13.根据权利要求9所述的应用程序模块化开发装置,其特征在于,包括:
生命周期事件生成单元,用于注册应用模块管理器,并生成所述应用模块的生命周期事件;
类加载导出单元,用于基于隔离容器的类加载机制加载并导出所述应用模块的类;
其中,所述生命周期事件包括安装、运行管理以及卸载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410652718.9A CN105677302B (zh) | 2014-11-17 | 2014-11-17 | 一种应用程序模块化开发方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410652718.9A CN105677302B (zh) | 2014-11-17 | 2014-11-17 | 一种应用程序模块化开发方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677302A CN105677302A (zh) | 2016-06-15 |
CN105677302B true CN105677302B (zh) | 2019-04-12 |
Family
ID=56944595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410652718.9A Active CN105677302B (zh) | 2014-11-17 | 2014-11-17 | 一种应用程序模块化开发方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677302B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797798A (zh) * | 2016-08-29 | 2018-03-13 | 美的智慧家居科技有限公司 | 基于家电设备的WiFi芯片开发方法及装置 |
CN107870771B (zh) * | 2016-09-26 | 2021-12-17 | 平安科技(深圳)有限公司 | 应用程序构建与升级方法及系统 |
CN107133036B (zh) * | 2017-04-26 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 一种模块的管理方法及装置 |
CN106936934A (zh) * | 2017-04-27 | 2017-07-07 | 四川长虹电器股份有限公司 | 基于模块化服务的开放平台第三方应用接入方法 |
CN107329748B (zh) * | 2017-06-23 | 2021-01-22 | 福建中金在线信息科技有限公司 | Api开发管理方法和系统以及服务器和计算机可读存储介质 |
CN107172075B (zh) * | 2017-06-26 | 2021-09-21 | 努比亚技术有限公司 | 基于网络隔离的通信方法、系统及可读存储介质 |
CN107479878B (zh) * | 2017-07-26 | 2021-02-05 | 北京供销科技有限公司 | 一种基于openresty的lua模块化开发方法及开发框架 |
CN107908432A (zh) * | 2017-11-17 | 2018-04-13 | 深圳泉眼体育运营管理有限公司 | 应用程序的配置方法及装置、终端设备及可读存储介质 |
CN108197232A (zh) * | 2017-12-28 | 2018-06-22 | 深圳市创梦天地科技股份有限公司 | 内容发布方法、服务器、存储介质及计算机程序 |
CN108829378B (zh) * | 2018-05-24 | 2022-06-21 | 北京顺丰同城科技有限公司 | 一种应用软件的开发方法、装置及电子设备 |
CN109146251A (zh) * | 2018-07-24 | 2019-01-04 | 武汉空心科技有限公司 | 基于组件的开发方法和系统 |
CN109165021A (zh) * | 2018-08-02 | 2019-01-08 | 中国联合网络通信集团有限公司 | 接口隔离管理方法、装置、设备和存储介质 |
CN110874250B (zh) * | 2019-11-20 | 2023-05-02 | 杭州天宽科技有限公司 | 工具厂商与app端的转换方法、系统、装置及存储介质 |
CN112070645A (zh) * | 2020-07-28 | 2020-12-11 | 智维云图(上海)智能科技有限公司 | 一种通过模块化组装部署消防项目的方法及系统 |
CN113535135B (zh) * | 2021-09-09 | 2022-02-15 | 深圳市蓝凌软件股份有限公司 | 软件开发方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101094229A (zh) * | 2007-07-24 | 2007-12-26 | 深圳市融合视讯科技有限公司 | 一种网络应用程序的增量升级系统及升级方法 |
CN101770375A (zh) * | 2008-12-26 | 2010-07-07 | 新奥特(北京)视频技术有限公司 | 一种软件自动升级的实现方法、系统和装置 |
CN102929643A (zh) * | 2012-11-09 | 2013-02-13 | 北京中电普华信息技术有限公司 | 一种开发j2ee应用的方法及系统 |
CN103984567A (zh) * | 2014-04-22 | 2014-08-13 | 世纪禾光科技发展(北京)有限公司 | 开放平台模块化的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015762A1 (en) * | 2003-06-09 | 2005-01-20 | Steckler Steven James | Methods and systems for deploying computer source code |
-
2014
- 2014-11-17 CN CN201410652718.9A patent/CN105677302B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101094229A (zh) * | 2007-07-24 | 2007-12-26 | 深圳市融合视讯科技有限公司 | 一种网络应用程序的增量升级系统及升级方法 |
CN101770375A (zh) * | 2008-12-26 | 2010-07-07 | 新奥特(北京)视频技术有限公司 | 一种软件自动升级的实现方法、系统和装置 |
CN102929643A (zh) * | 2012-11-09 | 2013-02-13 | 北京中电普华信息技术有限公司 | 一种开发j2ee应用的方法及系统 |
CN103984567A (zh) * | 2014-04-22 | 2014-08-13 | 世纪禾光科技发展(北京)有限公司 | 开放平台模块化的方法和装置 |
Non-Patent Citations (2)
Title |
---|
《以 OSGi 包的形式开发和部署 Web 服务》;Nalla;《http://www.ibm.com/developerworks/cn/webservices/ws-OSGi/》;20100329;全文 |
《动态模块化的开发模式的研究与实现》;李丹丹;《万方学位论文》;20101029;全文 |
Also Published As
Publication number | Publication date |
---|---|
CN105677302A (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677302B (zh) | 一种应用程序模块化开发方法以及装置 | |
CN107526624B (zh) | 一种基于Java虚拟机的智能合约执行引擎 | |
CN108989389B (zh) | 一种建立智能合约微服务化的方法 | |
CN101826987B (zh) | 一种基于融合开放网络的混合服务支撑系统及方法 | |
CN104391689B (zh) | 一种物联网应用的开发方法、中间件及PaaS平台 | |
CN109711802A (zh) | 项目信息处理方法、装置、计算机设备和存储介质 | |
CN108140007A (zh) | 跨部署位置安全地部署应用程序 | |
US11667033B2 (en) | Systems and methods for robotic process automation | |
CN109783071B (zh) | 基于Drools规则引擎的政务规则设计方法及系统 | |
CN109791592A (zh) | 使用外部处理来处理应用程序中的敏感数据 | |
CN110399119A (zh) | 一种组件化构建方法、装置、电子设备及存储介质 | |
CN108965375B (zh) | 服务调用代理控制系统、方法、服务器及可读存储介质 | |
CN104102489A (zh) | 一种第三方数据库app构建系统及构建方法 | |
CN102221998A (zh) | 一种扩展构件运行支撑平台中ejb容器的方法 | |
CN106648559A (zh) | Android应用插件化开发系统和方法 | |
CN106980501A (zh) | 一种软件包管理方法、装置和系统 | |
KR20090009813A (ko) | 패키지 생성 방법 및 컴퓨터 판독가능 매체 | |
CN113626128B (zh) | 视听媒体微服务第三方模块接入方法、系统、电子设备 | |
CN110247843A (zh) | 一种基于微信公众平台的自定义业务消息推送方法及系统 | |
CN109840267A (zh) | 一种数据etl系统及方法 | |
CN108595656A (zh) | 一种数据的处理方法及系统 | |
US20110302217A1 (en) | Semantic user interface data assembling | |
Davydova et al. | Mining hybrid UML models from event logs of SOA systems | |
CN111104122B (zh) | 一种xml业务逻辑映射到java业务逻辑的方法 | |
CN107133040A (zh) | 一种标准产品业务装置及业务模块扩展置换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1225827 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |