一种实现多平台通信组件复用的方法及装置的制作方法

文档序号:6583392阅读:185来源:国知局
专利名称:一种实现多平台通信组件复用的方法及装置的制作方法
技术领域
本发明涉及通信技术领域,特别涉及一种实现多平台通信组件复用的方法及装置。
背景技术
在当前的互联网艮卩时通信领域中,XMPP(Extensible Messaging andPresence Protocol,可扩展消息与存在协议)及其相关的协议扩展是一个重要的协议族。XMPP是一 种基于XML (Extensible Markup Language,可扩展标记语言)的协议,由于它继承了 XML的 自定义性和易于嵌入等特性,因此,基于XMPP的应用具有很强的可扩展性。目前基于XMPP 或者其它即时通信协议的即时通信组件可分为两种一种为基于桌面的客户端组件,主要 的功能包括解析收到的消息报文和生成并发送新的报文;一种为服务器端组件,在客户端 组件功能基础上还另外包括了消息转发、消息存储和用户会话管理等功能。两种组件在本 质和构成上有着极大的相似性。 但是在即时通信组件的设计和开发过程中,往往采用客户端组件和服务器端组件 分别开发并测试的手段,这种方法开发速率低,而且代码的复用也受到限制,同时由于提供 某种功能的组件需要适应不同的工作环境,基于服务器端的组件很难应用到客户端中去, 所以组件的可扩展性也较差。此外即时通信领域中客户端实体和服务器端实体本身在功能 需求上和协议规范上的不对称性也妨碍了服务器端和客户端通信组件的复用。

发明内容
有鉴于此,本发明提供一种实现多平台通信组件复用的方法及装置,以解决现有 技术中代码复用受限制,无法实现组件复用的问题。其具体方案为 —种实现多平台通信组件复用的方法,包括 按照预设的规则对包含应用程序的组件进行拆分,封装其中通用的代码,得到通 用组件; 构建兼容性组件,将上述非通用的代码分别封装到兼容性组件或组件片段中; 建立所述兼容性组件与目标平台组件间的可选依赖关系; 建立所述通用组件与所述兼容性组件的依赖关系; 部署所述通用组件与所述兼容性组件到目标平台; 部署所述兼容性组件片段到其对应的目标平台中; 解析所述目标平台中应用程序组件的依赖关系; 当所述目标平台中所有应用程序组件的依赖关系被满足时,所述通用组件调用所
述兼容性组件中的代码。 优选的,所述建立兼容性组件,将上述非通用的代码分别封装到兼容性组件或组
件片段中的过程具体为 建立兼容性组件;
在兼容组件中提供调用代码的接口 ; 依照上述接口将非通用代码封装到相应的兼容性组件片段中。
优选的,所述通用组件调用兼容性组件的过程为 所述通用组件通过所述调用代码的接口利用类加载器调用所述兼容性组件片段 中的代码。 优选的,所述按照预设的规则拆分包含应用程序的组件的过程为按照组件实现 的功能,对包含应用程序的组件进行拆分。 —种实现多平台通信组件复用的装置,包括拆分单元、第一构建单元、第二构建 单元、第一设置单元、第二设置单元、部署单元、解析单元、判断单元和调用单元,其中
所述拆分单元用于,按照预设的规则拆分包含应用程序的组件; 所述第一构建单元用于,将所述拆分单元拆分的组件中通用的代码进行封装,构 建出通用组件; 所述第二构建单元用于,构建兼容性组件,将所述拆分单元拆分的组件中非通用 的代码封装到所述兼容性组件或片段中; 所述第一设置单元用于,设置所述第二构建单元构建的兼容性组件与目标平台组 件间的可选依赖关系; 所述第二设置单元用于,设置所述兼容性组件与所述通用组件间的依赖关系;
所述部署单元用于,将所述通用组件、兼容性组件部署到目标平台,将所述兼容性 组件的组件片段部署到其对应的目标平台; 所述解析单元用于,解析目标平台中应用程序组件的全部依赖关系; 所述判断单元用于,判断所述解析单元解析的依赖关系是否全部被满足; 所述调用单元用于,当所述判断单元判断出所述依赖关系全部被满足时,通用组
件调用兼容性组件中的代码。 优选的,所述第二构建单元包括建立单元、接口设置单元和封装单元,其中
所述建立单元用于,建立兼容性组件; 所述接口设置单元用于,在兼容组件中设置调用代码的接口 ; 所述封装单元用于,依照所述接口设置单元设置的接口 ,将非通用代码封装到相 应的兼容性组件片段中。 从上述的技术方案可以看出,本发明实施例通过构建通用组件和兼容性组件,实 现了通用组件采用相同的方式调用不同的组件片段的目的,实现了通用组件通用于多个平 台的目的。同时由于采用统一开发分别部署的方式,提高了组件的开发速度。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。 图1为运行在Eclipse RCP平台上的典型应用程序结构示意图;
图2为运行在Eclipse RAP平台上的典型应用程序结构示意 图3为本发明公开的实现多平台通信组件复用的方法的流程图; 图4为本发明实施例1公开的实现多平台通信组件复用的方法的流程图; 图5为本发明实施例2公开的实现多平台通信组件复用的方法的流程图; 图6为本发明公开的实现多平台通信组件复用的装置的结构示意图; 图7为本发明公开的实现多平台通信组件复用的装置中第二构建单元的机构示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 本发明实施例公开了一种实现多平台通信组件复用的方法,以解决现有技术中通 信组件不能在多平台间复用的问题。 本发明所应用的技术基于Eclipse开源社区所提供的各种富客户端平台。 Eclipse开源社区所提供的支持富客户端应用程序的几种目标平台具有良好的可移植性, 可升级性和可扩展性等技术特性。运行在Eclipse RCP(Rich ClientPlatform,富客户端平 台)上的典型应用程序结构如图1所示。 与Eclipse RCP平台近似的,Eclipse RAP(Rich Ajax Platform,富Ajax平台)
是基于WEB的富客户端平台。Eclipse RAP平台是在服务器/浏览器的工作模式下,提供富
客户端用户体验的平台,运行在Eclipse RAP平台上的典型应用程序结构如图2所示。 通过比较两个平台的结构以及应用程序与相应平台的交互关系,可以得到如下的
结论虽然两个平台的底层结构并不相同,分别构建在操作系统和Servlet容器之上,但两
个平台的上层结构完全相同,也就是说,两个平台间的代码具有通用的部分。 本发明公开的实现多平台通信组件复用的方法,针对平台可移植性上的需求,在
设计和开发阶段对应用程序组件按照一定的规则进行细分,将通用的代码进行封装,组成
通用组件,再将其部署到相应的目标平台中,对非通用的代码封装到兼容性组件中,通过依
赖关系,通用组件调用兼容性组件中的代码,从而实现平台的相应功能。 假设应用程序组件对所有平台的所有依赖关系构成依赖关系的并集U。并且针对
某一目标平台的依赖关系作为上述并集的一个子集,可以进行与运算,所得的并集就是一
个通用子集。这个通用子集的依赖关系随着通用组件的封装,添加在通用组件中,并集U的
其余部分,也就是非通用代码的依赖关系,要在兼容性组件中建立。例如程序在平台1的依
赖关系为U1二 Wl,d2,d3h平台2的依赖关系为U2 = Wl,d2,d4h这两个子集合并后的
集合U是{dl, d2, d3, d4h这些就是所有的依赖关系。将上述两个集合U1、U2进行合并运
算得到U3 = {dl,d2}就是U的通用子集。U3包含的依赖关系dl和d2在通用组件中建立。
U中其余的依赖关系d3和d4要在兼容性组件中建立,并且要指定为可选依赖,因为d3, d4
不可能同时被满足,其对应的组件不能在同一平台中获得。 本发明公开的实现多平台通信组件复用的方法的流程如图3所示,包括步骤 S31、按照预设的规则对包含应用程序的组件进行拆分,封装其中通用的代码,得到通用组
6
上述步骤中所述的通用代码通常为,程序逻辑,服务端和客户端在协议上所通用 的协议的逻辑(比如说实体发现,实体状态同步等等),绝大部分的GUI组件。
步骤S32、建立兼容性组件,将上述非通用的代码分别封装到兼容性组件或组件片 段中; 上述步骤中所述的非通用的代码,也就是平台间差异的部分如WEB/RAP版本需
要的协议上支持,和桌面/RCP版本协议上支持的差异;比如访问方式的不同,浏览器还是
操作系统本地程序;比如说支持/不支持拖拽,支持/不支持前进后退操作。将这些代码封
装到组件片段中。上述两个过程也是对平台的统一开发的过程。 步骤S33、建立兼容性组件与目标平台组件间的可选依赖关系; 因为封装有非通用代码的组件中适用于不同目标平台的组件不可能同时被调用,
所以将其依赖关系设定为可选,可以根据实际情况指定需要依赖的组件,当其依赖关系被
满足时,根据上述依赖关系的匹配信息,调用对应的平台组件所提供的代码实现其相应的功能。 步骤S34、建立通用组件与兼容性组件的依赖关系; 设定这个关联的目的是为通用组件调用兼容性组件中的代码做基础,建立两者间 的依赖关系,通过将通用组件依赖兼容性组件,实现通用组件调用兼容性组件内代码以及 兼容性组件所依赖的平台组件代码的目的。 步骤S35、部署所述通用组件与兼容性组件到目标平台; 步骤S36、部署所述兼容性组件片段到其对应的目标平台中; 同时组件片段中的资源和相应的代码自动融合到兼容性组件的类路径中。 步骤S37、解析目标平台中应用程序组件的依赖关系; 步骤S38、判断所述目标平台所有应用程序组件的全部依赖关系是否被满足,如果 被满足则执行步骤S39,如果没有满足,则执行步骤S310 ; 通用组件正常工作的前提条件是其所有的依赖关系均被满足并被放置在其所指 定的运行时环境中。如果通用组件的全部依赖关系被满足,则通用组件处于"开始"状态, 并开始对外提供其指定的功能。否则如果有任何依赖关系未被满足,则通用组件不能正常 提供其功能。 步骤S39、通用组件调用兼容性组件片段中的代码; 通用组件在处于开始状态后调用所需的平台相关代码,进而实现平台的功能。
步骤S310、过程结束。 在上述过程中,由于兼容性组件片段在部署过程中自动解析,解析后已经成为兼 容性组件的一部分,对兼容性组件进行一定的设置比如将这些代码暴露出来,通用组件可 以直接访问兼容性组件的片段中的代码。同样,也可以在构建兼容性组件的时候,设置程序 接口 ,使通用组件通过接口对兼容性组件代码的调用。 下面根据通用组件调用兼容性组件内代码的方式不同,分别进行描述。
实施例一 本发明实施例1公开的实现多平台通信组件复用的方法中,将兼容性组件设置在 通用组件中,该方法的流程如图4所示,包括
7
步骤S41、按照预设的规则对包含应用程序的组件进行拆分,封装其中通用的代 码,得到通用组件; 步骤S42、建立兼容性组件,将上述非通用的代码分别封装到兼容性组件或组件片 段中; 通过对兼容性组件进行设置,将组件片段中的代码暴露给其它依赖于兼容性组件 的组件,如通用组件。 步骤S43、建立兼容性组件与目标平台组件间的可选依赖关系; 步骤S44、建立兼容性组件与通用组件间的依赖关系; 步骤S45、将所述通用组件和所述兼容性组件部署到目标平台中; 步骤S46、部署兼容性组件片段到其对应的目标平台,其资源及代码自动融合到兼
容组件的类路径中; 此时片段代码被融合到兼容性组件中,成为了组件的一部分,同时将代码暴露出 来,便于通用组件的调用。 步骤S47、将所有应用程序组件的依赖关系进行解析; 上述步骤中的依赖关系包括应用程序组件与目标平台组件间的依赖关系以及应 用程序组件间的依赖关系等。 步骤S48、判断所有应用程序组件的依赖关系是否全部被满足,如果满足则执行步 骤S49,如果不满足,则执行步骤S410 ; 判断通用组件依赖的其他组件的名称、版本号等信息与通用组件预先制定的依赖 信息相一致,兼容性组件中的可选依赖关系是否被满足,如果所有依赖关系均被满足,则通 用组件处于"开始"状态,并开始对外提供其指定的功能。如果存在不一致,则说明依赖关 系没有被全部满足,程序运行时会出现代码调用的错误,所以无法正常提供其功能。
步骤S49、通用组件通过依赖关系动态的直接调用与兼容性组件中的代码;
步骤S410、过程结束。 综上所述可以看出,本发明实施例公开的一种实现多平台通信组件复用的方法可
以实现通用组件复用到多个平台的目的,解决了代码复用困难,无法实现的问题。 实施例二 实施例1中的方法虽然解决了代码复用困难的问题,但是由于兼容性组件可有多 个,没有办法保证同样的功能以同样的方式提供给通用组件,因为不同的兼容性组件可能 使用不同的类名或者可能需要不同的参数。通用组件直接访问这些代码可能造成其代码中 混入非通用的逻辑或者代码,影响了通用组件的通用性。此外,采用实施例1的方法时必须 对兼容性组件做出额外设置,而这些设置的更改也会使通用组件受到影响。兼容性组件片 段中的代码也可能被修改,如果这段代码被修改,通用组件的代码必然会受到影响。
本发明实施例2公开的实现多平台通信组件复用的方法中,通用组件通过程序接 口的形式调用兼容性组件中的代码,该方法的流程如图5所示,包括 步骤S51、按照预设的规则对包含应用程序的组件进行拆分,封装其中通用的代 码,得到通用组件; 步骤S52建立兼容性组件,在兼容组件中提供调用应用程序的接口,依照上述接 口将非通用代码封装到相应的兼容性组件片段中。
步骤S53、建立兼容性组件对目标平台组件的可选依赖关系。 步骤S54、建立所述通用组件与所述兼容性组件的依赖关系; 步骤S55、将通用组件、兼容性组件部署到目标平台; 步骤S56、将兼容性组件的片段部署到其对应的目标平台; 步骤S57、将所有应用程序组件的依赖关系进行解析; 上述步骤中的依赖关系为目标平台中所有应用程序组件的依赖关系。 步骤S58、判断所有应用程序组件的依赖关系是否全部被满足,如果满足则执行步
骤S59,如果不满足,则执行步骤S510 ; 步骤S59、通用组件通过接口调用兼容性组件中的代码;
步骤S510、过程结束。 综上所述可以看出,本发明实施例公开的一种实现多平台通信组件复用的方法在 实现通用组件复用到多个平台的目的的同时,由于在兼容性组件中设置了调用代码的接 口 ,使得通用组件通过接口调用兼容性组件内的代码,解决了直接调用的方式影响代码通 用性的问题。 本发明还公开了一种实现多平台通信组件复用的装置,其结构如图6所示,包括 拆分单元61、第一构建单元62、第二构建单元63、第一设置单元64、第二设置单元65、部署 单元66、解析单元67、判断单元68和调用单元69,其中 所述拆分单元61用于,按照预设的规则拆分包含应用程序的组件;所述第一构建 单62元用于,将所述拆分单元61拆分的组件中通用的代码进行封装,构建出通用组件;所 述第二构建单元63用于,构建兼容性组件,将所述拆分单元61拆分的组件中非通用的代码 封装到所述兼容性组件或其片段中;所述第一设置单元64用于,设置所述第二构建单元63 构建的兼容性组件与目标平台组件间的可选依赖关系;所述第二设置单元65用于,设置所 述兼容性组件与所述通用组件间的依赖关系;所述部署单元66用于,将所述通用组件、兼 容性组件部署到目标平台,将所述兼容性组件的组件片段部署到其对应的目标平台;所述 解析单元67用于,解析目标平台中应用程序组件的全部依赖关系;所述判断单元68用于, 判断所述解析单元解析的依赖关系是否全部被满足;所述调用单元69用于,当所述判断单 元68判断出所述依赖关系全部被满足时,通用组件调用兼容性组件中的代码。
此外,所述第二构建单元63的结构如图7所示,包括建立单元631、接口设置单 元632和封装单元633,其中所述建立单元631用于,建立兼容性组件;所述接口设置单元 632用于,在兼容组件中设置调用代码的接口 ;所述封装单元633用于,依照所述接口设置 单元632设置的接口 ,将非通用代码封装到相应的兼容性组件片段中。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明4^.是与其 他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装 置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分 说明即可。 本领域技术人员可以理解,可以使用许多不同的工艺和技术中的任意一种来表示 信息、消息和信号。例如,上述说明中提到过的消息、信息都可以表示为电压、电流、电磁波、 磁场或磁性粒子、光场或以上任意组合。 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和 软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些 功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业 技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应 认为超出本发明的范围。 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执 行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存 储器(ROM)、电可编程R0M、电可擦除可编程R0M、寄存器、硬盘、可移动磁盘、CD-R0M、或技术 领域内所公知的任意其它形式的存储介质中。 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明 将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。
10
权利要求
一种实现多平台通信组件复用的方法,其特征在于,包括按照预设的规则对包含应用程序的组件进行拆分,封装其中通用的代码,得到通用组件;构建兼容性组件,将上述非通用的代码分别封装到兼容性组件或组件片段中;建立所述兼容性组件与目标平台组件间的可选依赖关系;建立所述通用组件与所述兼容性组件的依赖关系;部署所述通用组件与所述兼容性组件到目标平台;部署所述兼容性组件片段到其对应的目标平台中;解析所述目标平台中应用程序组件的依赖关系;当所述目标平台中所有应用程序组件的依赖关系被满足后,所述通用组件调用所述兼容性组件中的代码。
2. 根据权利要求1所述的方法,其特征在于,所述建立兼容性组件,将上述非通用的代 码分别封装到兼容性组件或组件片段中的过程具体为建立兼容性组件;在兼容组件中提供调用代码的接口;依照上述接口将非通用代码封装到相应的兼容性组件片段中。
3. 根据权利要求2所述的方法,其特征在于,所述通用组件调用兼容性组件的过程为 所述通用组件通过所述调用代码的接口利用类加载器调用所述兼容性组件片段中的代码。
4. 根据权利要求3所述的方法,其特征在于,所述按照预设的规则拆分包含应用程序 的组件的过程为按照组件实现的功能,对包含应用程序的组件进行拆分。
5. —种实现多平台通信组件复用的装置,其特征在于,包括拆分单元、第一构建单 元、第二构建单元、第一设置单元、第二设置单元、部署单元、解析单元、判断单元和调用单 元,其中所述拆分单元用于,按照预设的规则拆分包含应用程序的组件;所述第一构建单元用于,将所述拆分单元拆分的组件中通用的代码进行封装,构建出 通用组件;所述第二构建单元用于,构建兼容性组件,将所述拆分单元拆分的组件中非通用的代 码封装到所述兼容性组件或片段中;所述第一设置单元用于,设置所述第二构建单元构建的兼容性组件与目标平台组件间 的可选依赖关系;所述第二设置单元用于,设置所述兼容性组件与所述通用组件间的依赖关系; 所述部署单元用于,将所述通用组件、兼容性组件部署到目标平台,将所述兼容性组件的组件片段部署到其对应的目标平台;所述解析单元用于,解析目标平台中应用程序组件的全部依赖关系;所述判断单元用于,判断所述解析单元解析的依赖关系是否全部被满足;所述调用单元用于,当所述判断单元判断出所述依赖关系全部被满足时,通用组件调用兼容性组件中的代码。
6. 根据权利要求5所述的装置,其特征在于,所述第二构建单元包括建立单元、接口设置单元和封装单元,其中所述建立单元用于,建立兼容性组件;所述接口设置单元用于,在兼容组件中设置调用代码的接口 ;所述封装单元用于,依照所述接口设置单元设置的接口 ,将非通用代码封装到相应的 兼容性组件片段中。
全文摘要
本发明实施例公开了一种实现多平台通信组件复用的方法及装置,包括按照预设的规则对包含应用程序的组件进行拆分,封装通用的代码,得到通用组件;构建兼容性组件,将上述非通用的代码分别封装到兼容性组件或组件片段中;建立兼容性组件与目标平台组件间的可选依赖关系;建立通用组件与兼容性组件的依赖关系;部署通用组件与兼容性组件到目标平台;部署兼容性组件片段到其对应的目标平台中;解析目标平台中组件的依赖关系;当应用程序包含的所有组件的所有必须满足的依赖关系均被满足后,通用组件调用兼容性组件中的代码。本发明通过构建通用组件和兼容性组件,实现了通用组件通用于多个平台的目的,同时提高了组件的开发速度。
文档编号G06F9/44GK101739254SQ200910216840
公开日2010年6月16日 申请日期2009年12月31日 优先权日2009年12月31日
发明者刘宗福, 刘春 , 刘江宁, 李志 , 李殊强, 段文良 申请人:山东中创软件商用中间件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1