一种模块间调用的方法及装置与流程

文档序号:11971116阅读:169来源:国知局
一种模块间调用的方法及装置与流程
本发明涉及计算机技术领域,尤其涉及一种模块间调用的方法及装置。

背景技术:
在Windows程序系列构架中,按功能划分,可以被分为前端程序和后台服务程序。前端程序用于展示用户界面(UI),后台服务程序用于做数据的收集、整理、分发。用户界面会随着客户的需求与侧重点发生变化而变化,但当一个体系稳定以后,其后台数据服务部分几乎是不变的。基于此,将前端用户界面的呈现与后台数据的处理分开,不但有利于产品的更新与迭代,也有利于相关模块的设计和维护,相关技术人员可以将有限的精力投入到和自己最相关的技术模块中去提升系统的稳定性与专业性;同时体系功能的分离,也有利于对资源的合理使用(例如对内存、网络、磁盘读写)。将后台的数据处理模块化以后,虽然有上述的多种优点,但对于模块之间的相互协调,分工合作共同完成一个较大的任务也提出了一个较大的挑战。

技术实现要素:
为了解决现有技术中存在的模块间协调性差的问题,本发明实施例提出一种模块间调用的方法和装置。第一方面,本发明提供一种模块间调用的方法,包括:第一模块构造一条调用指令,并向第二模块发送所述调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID,以便所述第二模块执行所述第一模块调用的功能;所述第一模块接收所述第二模块发送的功能执行完毕消息。第二方面,本发明提供另一种模块间调用的方法,包括:第二模块接收第一模块发送的调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID;根据所述第一模块调用的功能代号确定所述第二模块中的功能,代入执行所述功能所需的参数,执行所述功能;所述第二模块向所述第一模块发送所述功能执行完毕的消息。第三方面,本发明提供一种用于模块间调用的装置,包括:构造模块,用于构造一条调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID;发送模块,用于向第二模块发送所述构造模块构造的所述调用指令;接收模块,用于接收所述第二模块发送的功能执行完毕消息。第四方面,本发明提供另一种用于模块间调用的装置,包括:接收模块,用于接收第一模块发送的调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID;执行模块,用于根据所述接收模块接收的功能代号确定第二模块中的功能,代入执行所述功能所需的参数,执行所述功能;发送模块,用于在所述执行模块执行完所述功能后,向所述第一模块发送所述功能执行完毕的消息。使用本发明实施例公开的模块间调用的方法和装置,能够更好的协调模块间功能的调用,促进模块之间的分工协作,有效的解决现有的模块间协调性差的问题,进而能够保证多个模块分工合作完成一个较大的任务。附图说明图1所示是本发明实施例提供的Windows消息多级控制中心的示意图;图2所示是本发明实施例提供的一种模块间调用的方法示意图;图3所示是本发明实施例提供的另一种模块间调用的方法的示意图;图4所示是本发明实施例提供的进程间功能调用的方法流程图;图5所示是本发明实施例提供的一种用于模块间调用的装置的结构示意图;图6所示是本发明实施例提供的另一种用于模块间调用的装置的结构示意图;图7所示是本发明实施例提供的另一种用于模块间调用的装置的结构示意图;图8所示是本发明实施例提供的另一种用于模块间调用的装置的结构示意图;图9所示是本发明实施例提供的另另一种用于模块间调用的装置的结构示意图。具体实施方式为了更好的公开本发明实施例提供的方法和装置,本实施例先对将要使用到的一些概念做一些简单的说明。函数:在计算机系统中,函数又可以称为函数过程,是指一系列程序语句的集合,用于完成某些特定的工作——比如处理文本、控制输入或计算数值等。函数调用:通过在某个模块中引入函数名称和所需的参数,可在该模块中执行(或称调用)该函数。从函数的调用方式上,可以将此分为三类:同步调用、异步调用和回调。同步调用是一种阻塞式调用,调用方要等待被调用方执行完毕才返回,它是一种单向调用;回调则属于一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种信息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。模块间的函数调用:指在多个模块之间,由一个模块调用另一个模块的某些功能(即函数),当被调用函数执行完后,结果返回或不返回调用模块。在本发明实施例中采用一个GUID(GloballyUniqueIdentifier,全局唯一标识符)或UUID(UniversallyUniqueIdentifier,通用唯一识别码)。GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符的场景下。在本发明实施例中,使用它来记录模块中回调函数的位置,当调用模块收到被调用模块返回的结果以后,返回到调用进程执行后续处理。Windows消息机制:Windows消息控制中心一般是三层结构,其顶端是Windows内核,Windows内核维护着一个消息队列;第二级控制中心从这个消息队列中获取属于自己管辖的消息,然后做出处理,有些消息由第二级控制中心直接处理,有些消息还要发送给下一级窗体(Window)或控件(Control)。第二级控制中心一般是各Windows应用程序的Application对象。第三级控制中心就是Windows窗体对象,每一个窗体都有一个默认的窗体过程,这个过程负责处理各种接收到的消息。图1即为Windows消息多级控制中心的示意图。其中,windows指windows操作系统;窗口即windows窗口;窗体包括窗口,以及有句柄的控件;control指控件,控件本身也可能是一个window,也可能不是;Application即应用程序,应用程序也可能不会用到Windows消息机制,在本发明实施例中涉及有消息循环的应用程序;每一个UIApplication即用户界面应用程序,肯定有一个Window,如果有多个Window也会有一个MainWindow即主窗体。消息打包:指将某些信息集成在一条消息里,收到该消息可以通过某种约定好的格式解开,得到之前集成到消息里的内容。在前述公开的内容基础上,本发明一个实施例提供一种模块间调用的方法。图2所示即为一种模块间调用的方法示意图,依据该图,详述各步骤如下。步骤201、第一模块构造一条调用指令,并向第二模块发送所述调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID,以便所述第二模块执行所述第一模块调用的功能;其中,在本发明实施例中,第一模块作为调用功能的一方,第二模块作为被调用方,执行第一模块所调用的功能;第二模块执行的功能即是前面所述的函数,功能的调用方式即是前面公开的几种函数调用方式,此处不再赘述。第一模块和第二模块的定义仅是为了叙述方便,第二模块也可以调用第一模块中的功能,本发明实施例对此不做限定。在所述第一模块向所述第二模块发送调用指令之前,还包括:所述第一模块记录构造所述调用指令时程序执行的位置,并生成所述GUID,对应所述程序执行的位置。生成GUID是第一模块调用第二模块的功能时,记录本模块中程序执行的位置所用,以便根据第二模块返回的执行结果或执行完毕消息做后续操作之用。其中,在所述第一模块构造一条调用指令之前,还包括:所述第一模块和所述第二模块约定所述第二模块中可调用的功能的代号和输入参数的属性。功能代号要和可调用的功能唯一对应。做这些约定的目的是使第二模块能够识别第一模块所调用的功能,并保证第一模块发送的参数能被正确应用到第二模块将要执行的功能中。步骤202、所述第一模块接收所述第二模块发送的功能执行完毕消息。其中,第二模块执行完第一模块调用的功能后,向第一模块发送功能执行完毕的消息。本步骤中第二模块执行被调用的功能的详细情形将在后续实施例中公开。根据调用方式的不同,第二模块在完成被调用功能的执行后,会向第一模块返回或不返回执行的结果,调用方式的种类已在前面实施例中公开,此处不再赘述。在第二模块执行完被调用的功能后,若不需要向第一模块返回被调用功能执行的结果,则第二模块只需向第一模块发送一条功能执行完毕消息;若需要向第一模块返回被调用功能执行的结果,则还需将执行被调用功能的结果返回第一模块,同时也需要将GUID发送给第一模块,以便第一模块定位调用第二模块的功能时程序执行的位置,并使用该结果执行后续的操作。其中,第二模块也可以将执行被调用功能的结果以及GUID包含在前述功能执行完毕消息中一并发送给第一模块。使用本发明实施例公开的模块间调用的方法,能够更好的协调模块间功能的调用,促进模块之间的分工协作,有效的解决现有的模块间协调性差的问题,进而能够保证多个模块分工合作完成一个较大的任务。图3所示为本发明一个实施例提供的一种模块间调用的方法的示意图。以下结合该图,从被调用的第二模块的角度来详述模块间调用的方法。步骤301、第二模块接收第一模块发送的调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID;步骤302、根据所述第一模块调用的功能代号确定所述第二模块中的功能,代入执行所述功能所需的参数,执行所述功能;步骤303、所述第二模块向所述第一模块发送所述功能执行完毕的消息。其中,所述第二模块根据所述调用方式判断是否需要向所述第一模块发送执行所述功能得到的结果。经过判断,若不需要向第一模块发送执行功能得到的结果,则只向第一模块发送功能执行完毕的消息即可。若根据所述调用方式判断需要向所述第一模块发送执行所述功能得到的结果,所述第二模块执行完所述功能之后,则将执行所述功能得到的结果和所述GUID发送给所述第一模块。其中,还可以将执行所述功能得到的结果和所述GUID包含在所述功能执行完毕的消息中一并发送给第一模块。使用本发明实施例公开的模块间调用的方法,能够更好的协调模块间功能的调用,促进模块之间的分工协作,有效的解决现有的模块间协调性差的问题,进而能够保证多个模块分工合作完成一个较大的任务。图4所示为本发明一个实施例提供的进程间功能调用的方法流程图,该图所示的方法流程为进程间功能调用的最详细的流程。首先,在执行该方法流程之前,第一模块和第二模块之间需要约定执行功能的代号和输入参数的属性(该步骤未在图4中示出)。假设第一模块需要执行的功能为function1,两个模块约定该功能的代号为cmd1,输入参数为两个数字。该功能的作用就是根据两个输入的数字通过某种运算和处理得到一个结果,输出为一个数字。步骤401、第一模块在执行本模块的进程中发现需要执行功能function1,则记录当前进程执行的位置,并生成一个GUID和当前位置相对应。然后将功能代号、执行该功能所需的参数、GUID和调用方式打包成一个调用指令发送到第二模块。根据之前第一模块和第二模块之间的约定,功能function1的代号为cmd1,输入参数为两个数字,调用方式为回调。步骤402、第二模块收到第一模块发送的调用指令后,将该调用指令解包,得到其中的各项参数。根据cmd1确定与之对应的功能function1,代入第一模块发送的两个数字,执行功能并计算出结果。由于调用方式为回调,第二模块需要将得到的结果返回第一模块。第二模块将结果与GUID打包为一条消息发送给第一模块,当然也可以将结果与GUID包含在功能执行完毕消息中一并发送给第一模块。步骤403、第一模块收到第一模块返回的消息,得到GUID和功能执行完毕的结果。第一模块使用GUID定位到之前的进程执行位置,代入得到的结果完成后续的操作。以下实施例公开一种用于模块间调用的装置,用于执行前述实施例中公开的模块间调用的方法。图5所示为本发明一个实施例提供的一种用于模块间调用的装置的结构示意图。依据该图,详述装置中的各组成部分如下:构造模块501,用于构造一条调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID;发送模块502,用于向第二模块发送所述构造模块501构造的所述调用指令;接收模块503,用于接收所述第二模块发送的功能执行完毕消息。如图6所示,用于模块间调用的装置还包括记录模块504,用于记录构造模块501构造所述调用指令时程序执行的位置,并生成所述GUID,对应所述程序执行的位置。其中,接收模块503还用于,接收所述第二模块发送的执行所述功能得到的结果,以及所述GUID。如图7所示,所述用于模块间调用的装置还包括执行模块505,用于使用所述GUID定位所述程序执行的位置,并使用所述第二模块执行所述功能得到的结果,从所述程序执行的位置继续执行后续操作。使用本发明实施例公开的用于模块间调用的装置,能够更好的协调模块间功能的调用,促进模块之间的分工协作,有效的解决现有的模块间协调性差的问题,进而能够保证多个模块分工合作完成一个较大的任务。图8所示为本发明一个实施例公开的一种用于模块间调用的装置的结构示意图,该装置用于执行前述实施例公开的一种模块间调用的方法。依据该图,详述该装置的各组成部分如下:接收模块601,用于接收第一模块发送的调用指令,所述调用指令中包括所述第一模块调用的功能代号、调用方式、执行所述功能所需的参数和全局唯一标识符GUID;执行模块602,用于根据所述接收模块601接收的功能代号确定第二模块中的功能,代入执行所述功能所需的参数,执行所述功能;发送模块603,用于在所述执行模块602执行完所述功能后,向所述第一模块发送所述功能执行完毕的消息。其中,如图9所示,所述用于模块间调用的装置还包括判断模块604,用于根据所述调用方式判断是否需要向所述第一模块发送执行所述功能得到的结果。若所述判断模块604根据所述调用方式判断需要向所述第一模块发送执行所述功能得到的结果,所述发送模块603还用于,在所述第二模块执行完所述功能之后,将执行所述功能得到的结果和所述GUID发送给所述第一模块。使用本发明实施例公开的用于模块间调用的装置,能够更好的协调模块间功能的调用,促进模块之间的分工协作,有效的解决现有的模块间协调性差的问题,进而能够保证多个模块分工合作完成一个较大的任务。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟、光盘、网络节点、调度器等各种可以存储程序代码的介质。最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1