一种函数回调的方法和系统的制作方法

文档序号:6439769阅读:167来源:国知局
专利名称:一种函数回调的方法和系统的制作方法
技术领域
本发明涉及计算机领域,特别是涉及ー种函数回调的方法和系统。
背景技术
回调技术在计算机软件设计领域应用得十分广泛。尤其是在基于事件驱动模型的系统架构中,回调技术极大地降低了软件模块间的耦合性,同时提高了以处理引擎形式提供给开发用户的软件产品的可定制性。一般而言,回调技术的基本原理就是调用者将自己实现的回调器向回调者 注册,回调者在缓存该回调器的某种标识后,在适当的时机使用该回调器的功能,从而使回调器的实现者得以将更多的精力投入到与其专业领域密切相关的回调器内部,而完全没有必要去关注其它信息。传统意义上的回调往往都是通过函数指针实现的。图I为现有技术中的回调技术的框架结构图。如图I所示,调用者首先将回调器地址注册到回调者提供的注册器中,而后回调者会在适当的时机通过该函数指针调用回调器函数,以实现回调。这种做法最大的问题在于,调用者和回调者必须同处于ー个进程空间。因为操作系统进程壁垒的存在,限制了函数指针形式的回调器地址在不同进程间的跨越式使用。

发明内容
本发明实施例g在提供ー种函数回调方法及系统,以实现在不同进程间跨越式回调函数。本发明提供的ー种函数回调方法,包括调用者向回调者注册回调器吋,将回调器地址打包成进程间通信(IPC)报文发送至回调者;回调者从IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向
注册器注册;当回调者需要调用回调器的时候,调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者;调用者从IPC报文中提取回调器地址,调用该回调器地址所标识的回调器函数。本发明提供的ー种函数回调系统,包括位于调用者侧的回调器以及回调者侧的注册器,其中,进ー步包括位于调用者侧的注册模块和回调代理,以及位于回调者侧的注册代理和回调模块,其中,注册模块,用于将回调器地址打包成IPC报文发送至回调者所提供的注册代理;注册代理,用于从回调者侧的注册模块提供IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向注册器注册;回调模块,用于调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者的回调代理;
回调代理,用于从回调模块发送过来的IPC报文中提取回调器地址,并调用所述回调器地址所标识的回调器函数。利用本发明所提供的ー种函数回调方法和系统,回调的实现不受进程地址空间的限制,不受硬件部署的限制,不受编程语言和系统平台的限制;回调器和注册器的实现与本地回调没有任何差別。


图I为现有技术中的回调技术的框架结构图。图2为本发明一实施例中ー种函数回调方法的流程图。图3为本发明一实施例中ー种函数回调系统的结构图。
图4为本发明一实施例中ー种函数回调方法的流程图。
具体实施例方式下面将结合附图及实施例对本发明的技术方案进行更详细的说明。图2所示为本发明实施例提供的ー种函数回调方法,如图2所示,该函数回调方法包括步骤201 :当调用者向回调者注册回调器吋,将回调器地址打包成进程间通信(IPC)报文发送至回调者。步骤202 :回调者从IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向注册器注册;在本发明ー实施例中,回调者以ー个回调者进程空间内的本地地址,即本地函数指针,向注册器注册,其中本地函数在被调用时,可从缓存中提取回调器地址。步骤203 :当回调者需要调用回调器的时候,调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者;在本发明ー实施例中,回调者调用注册器所接收到的本地函数指针所指向的函数,通过该本地函数,从缓存中提取回调器地址,并将其与输入数据一起打包成IPC报文发送至调用者。步骤204 :调用者从IPC报文中提取回调器地址,调用该回调器地址所标识的回调器函数;在本发明ー实施例中,调用者从IPC报文中提取回调器地址和输入数据,并以后者为參数调用前者所标识的回调器函数。步骤205 :调用者将回调器的返回值和输出数据重新打包成IPC报文,返回给回调者进程中。在本发明ー实施例中,调用者将IPC报文返回给回调者进程中的本地函数,该本地函数进ー步解析IPC报文,并最终返回到回调者进程中调用回调器的地方。图3所示为本发明实施例提供的ー种函数回调系统的结构图。如图2所示,函数回调系统由调用者侧和回调者侧构成。其中,调用者侧由注册模块、回调器和回调代理构成,回调者侧由注册代理、注册器和回调模块构成。其中回调器与注册器的功能与现有技术相同,不在此赘述。
注册模块,用于将回调器地址打包成IPC报文发送至回调者所提供的注册代理;注册代理,用于从回调者侧的注册模块提供IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向注册器注册;回调模块,用于调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者的回调代理;
回调代理,用于从回调模块发送过来的IPC报文中提取回调器地址,并调用所述回调器地址所标识的回调器函数。回调代理还进一歩将回调器的返回值重新打包成IPC报文,返回给回调者进程中的本地函数,其中,该本地函数被调用是,可解析该IPC报文并最终将返回值返回到回调者进程中调用回调器的地方。利用本发明所提供的跨进程实现回调的方法,相较于通常意义上本地回调和借助远程过程调用或Web Service机制实现类似功能的方法具有明显优势回调的实现不受进程地址空间的限制,不受硬件部署的限制,不受编程语言和系统平台的限制;回调器和注册器的实现与本地回调没有任何差别,所有关于跨进程特性的支持全部由注册代理和回调代理提供,极大地降低了从本地回调系统迁移到跨进程回调系统的技术难度和实施风险;在不同进程间直接传递函数指针而非函数名,使处理流程更加简单,无需在本地建立函数名与函数地址的对应关系。图4所示为本发明实施例所提供的ー种函数回调方法的流程图。在调用者和回调者方分别设置ー个支持进程间通信的代理模块,分别标识为回调代理和注册代理,其中回调代理位于调用者侧,注册代理位于回调者侧。在本实施例中,该进程间通信为IPC/RPC,后续将都以IPC/RPC为例说明,但本领域技术人员可知,根据应用环境的不同,还可以利用其他支持进程间通信的协议。如图4所示,该方法包括步骤401 :调用者向回调者注册回调器吋,将回调器地址打包成IPC/RPC报文发送至回调者所提供的注册代理,而不再像现有技术中直接以回调器地址作为參数调用回调者所提供的注册器函数。步骤402 :注册代理从IPC/RPC报文中提取并缓存回调器地址后,并不直接将取出的回调器地址交给注册器,而是以ー个回调者进程空间内的本地地址,即本地函数指针,向注册器注册。该本地函数在被调用时,可从缓存中提取回调器地址。步骤403 :回调者在需要调用回调器的时候,自动调用注册器所接收到的本地函数指针所指向的函数。通过该本地函数,从缓存中提取回调器地址,并将其与输入数据一起打包成IPC/RPC报文发送至调用者所提供的回调代理。步骤404 :回调代理从IPC/RPC报文中提取回调器地址和输入数据,并以后者为參数调用前者所标识的回调器函数。因为回调器函数和回调代理同处于调用者进程中,所以这种函数调用是允许的。步骤405 :回调代理将回调器的返回值和输出数据重新打包成IPC/RPC报文,返回给回调者进程中的本地函数,该本地函数可以解析IPC/RPC报文,并最终返回到回调者进程中调用回调器的地方,完成一次完整的跨进程回调。在本实施例中,由于利用了 IPC/RPC进程间通信方式,即使当调用者进程位于客户机而回调者进程位于服务器上吋,不但允许客户机调用服务器的功能,而且还允许服务器回调客户机的功能。
本发明所提供的跨进程实现回调的方法,并不仅局限于同一台计算机上的不同进程,分别处于网络上不同 计算机中的进程同样可以依照本方法实现回调。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.ー种函数回调方法,其特征在于,包括 调用者向回调者注册回调器吋,将回调器地址打包成进程间通信(IPC)报文发送至回调者; 回调者从IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向注册器注册; 当回调者需要调用回调器的时候,调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者; 调用者从IPC报文中提取回调器地址,调用该回调器地址所标识的回调器函数。
2.如权利要求I所述的方法,其特征在于,所述以回调者进程空间内的本地地址向注册器注册包括 利用一个本地函数指针向注册器注册,其中,所述本地函数被调用时,可从缓存中提取回调器地址; 所述通过该本地地址从缓存中提取回调器地址包括 调用所述本地函数指针所指向的函数,通过该本地函数从缓存中提取回调器地址。
3.如权利要求I或2所述的方法,其特征在干,进ー步包括所述调用者将回调器的返回值重新打包成IPC报文,返回给回调者进程中的本地函数,该本地函数进ー步解析IPC报文,并最终返回到回调者进程中调用回调器的地方。
4.如权利要求I或2所述的方法,其特征在于,所述IPC报文为IPC/RPC报文。
5.ー种函数回调系统,包括位于调用者侧的回调器以及回调者侧的注册器,其特征在干,进ー步包括位于调用者侧的注册模块和回调代理,以及位于回调者侧的注册代理和回调模块,其中, 注册模块,用于将回调器地址打包成IPC报文发送至回调者所提供的注册代理; 注册代理,用于从回调者侧的注册模块提供IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向注册器注册; 回调模块,用于调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者的回调代理; 回调代理,用于从回调模块发送过来的IPC报文中提取回调器地址,并调用所述回调器地址所标识的回调器函数。
全文摘要
本发明实施例提供了一种函数回调方法和系统,以实现在不同进程间跨越式回调函数。其中,该函数回调方法包括调用者向回调者注册回调器时,将回调器地址打包成进程间通信(IPC)报文发送至回调者;回调者从IPC报文中提取并缓存回调器地址,以回调者进程空间内的本地地址向注册器注册;当回调者需要调用回调器的时候,调用注册器所接收到的本地地址,通过该本地地址从缓存中提取回调器地址,并将所述回调器地址打包成IPC报文发送至调用者;调用者从IPC报文中提取回调器地址,调用该回调器地址所标识的回调器函数。
文档编号G06F9/46GK102654840SQ20111039155
公开日2012年9月5日 申请日期2011年11月30日 优先权日2011年11月30日
发明者闵卫 申请人:北京书生数字图书馆软件技术有限公司, 北京书生网络技术有限公司, 天津书生投资有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1