CN101697139B - 一种远程过程调用方法、装置和注册库 - Google Patents
一种远程过程调用方法、装置和注册库 Download PDFInfo
- Publication number
- CN101697139B CN101697139B CN 200910211144 CN200910211144A CN101697139B CN 101697139 B CN101697139 B CN 101697139B CN 200910211144 CN200910211144 CN 200910211144 CN 200910211144 A CN200910211144 A CN 200910211144A CN 101697139 B CN101697139 B CN 101697139B
- Authority
- CN
- China
- Prior art keywords
- class
- registry
- server end
- browser
- server
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种远程过程调用的方法、装置和注册库,本发明实施例所提供的方案利用注册库对服务器端的类进行管理,为某个被注册的类生成一个类注册标识和与之对应的JavaScript脚本代理函数,通过将JavaScript脚本代理函数加载到浏览器的页面建立浏览器端对服务器端的调用的基础,使得浏览器端的页面通过JavaScript脚本代理函数,可以实现对服务器端的类定义的方法进行调用,这种调用无需配置文件,而且只要某个类已经注册,那么该类所定义的方法在浏览器端的页面中都可以调用,而且这种调用方法,在一次业务处理过程中进行多次远程调用无需处理多次调用之间所需的复杂协调,简化了现有技术中浏览器端与服务器端多次交互时复杂的业务过程的开发。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种远程过程调用方法、装置和注册库。
背景技术
远程过程调用(RPC,Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络通讯细节的技术。现有技术中,浏览器端调用服务器端的业务逻辑时多采用RPC这种协议。
目前,浏览器与服务器的交互,常用的方式包括模拟表单、异步JavaScript和XML(AJAX,Asynchronous JavaScript and XML)、远程调用框架(DWR,Direct Web Remoting)、WEB服务等。
本发明人在对现有技术的研究中发现,现有的浏览器与服务器的各种交互方式都存在一些问题,例如:模拟表单方式需要解决表单内容的编码、调用结果的解析以及处理业务过程等多个异步提交之间的衔接问题;AJAX方式在业务过程涉及多次人机交互及浏览器/服务器交互时,需要程序员使用特殊的手段来实现多次交互之间衔接(例如:在服务器响应中添加JavaScript脚本代码;或定义多个支持回调用Ajax标签等),使得整个过程实现缺乏连贯性,不易理解,更不易维护;DWR则需要学习一种新的远程调用类库及其部署、应用方法;Web服务的主要问题在于:学习成本高,要求程序员至少应掌握一套定义Web服务的标签或声明和一套浏览器调用Web服务的JavaScript API。另外,由于DWR、Web服务都会公开服务器端类的调用细节,大规模应用时容易引发潜在的安全性问题。
发明内容
有鉴于此,本发明实施例提供一种远程过程调用方法、装置和注册库,实现快捷安全的远程过程调用。
为实现上述目的,本发明实施例提供了如下技术方案:
一种远程过程调用方法,包括:
服务器端接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括本次调用的类的类注册标识,方法名以及本次调用使用的参数;
所述服务器端对所述函数调用请求进行解码,确定所述JavaScript脚本代理函数对应的类注册标识,并,获取本次调用的方法名以及本次调用使用的参数;
所述服务器端从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;
所述服务器端创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端。
所述JavaScript脚本代理函数由所述注册库根据所述服务器端的类注册请求对服务器端类进行注册后返回给浏览器端。
所述注册库根据所述服务器端的类注册请求对服务器端类进行注册包括:
服务器端向注册库发送类注册请求,请求所述注册库根据所述类注册请求中携带的信息进行类注册,所述类注册请求由浏览器端所请求的页面的服务器端代码发送至注册库,其中包括所述服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
注册库根据所述服务器端类在服务器端的类名查找到与所述服务器端类对应的实体类,并分析所述实体类中的方法声明,为所述实体类生成一个类注册标识和与所述类注册标识对应的JavaScript脚本代理函数;
所述注册库将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
可选地,所述方法还包括:
所述浏览器端的页面将所述JavaScript脚本代理函数加载到当前页面中。
所述注册库将所述JavaScript脚本代理函数返回给所述浏览器端的页面具体为:
所述注册库将所述JavaScript脚本代理函数的引用写到所述浏览器端所请求的页面内容中。
所述类注册标识由所述注册库随机生成,当服务器重新启动时,为每个注册的类生成新的类注册标识。
一种远程过程调用装置,该装置位于服务器端,包括:
第一接收单元,用于接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括本次调用的类的类注册标识、方法名以及本次调用使用的参数;
获取单元,用于对所述函数调用请求进行解码,确定所述JavaScript脚本代理函数对应的类注册标识,并,获取本次调用的方法名以及本次调用使用的参数;
处理单元,用于从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;
第一发送单元,用于创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端。
可选地,所述装置还包括:
第二发送单元,用于向注册库发送类注册请求,请求所述注册库根据所述类注册请求中携带的信息进行类注册,所述类注册请求由浏览器端所请求的页面的服务器端代码发送至注册库,其中包括所述服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间。
一种用于远程过程调用的注册库,包括:
接收单元,用于接收服务器端发送的类注册请求,所述类注册请求由浏览器端所请求的页面的服务器端代码发送至注册库,其中包括服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
处理单元,用于根据所述服务器端类在服务器端的类名查找到与所述服务器端类对应的实体类,分析所述实体类中的方法声明;
生成单元,用于为所述实体类生成一个类注册标识和与所述类注册标识对应的JavaScript脚本代理函数;
发送单元,用于将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
所述发送单元将所述JavaScript脚本代理函数返回给所述浏览器端的页面具体为:
所述发送单元将所述JavaScript脚本代理函数的引用写到所述浏览器端所请求的页面内容中。
所述注册标识由所述生成单元随机生成,当服务器重新启动时,为每个注册的类生成新的类注册标识。
在本发明实施例中,服务器端接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括本次调用的类的类注册标识、方法名以及本次调用使用的参数;所述服务器端对所述JavaScript脚本代理函数的调用请求进行解码,获取本次调用的类注册标识、方法名以及本次调用使用的参数;所述服务器端从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;所述服务器端创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端,可见,本发明实施例所提供的方案利用注册库对服务器端的类进行管理,为某个被注册的类生成一个类注册标识和与之对应的JavaScript脚本代理函数,通过将JavaScript脚本代理函数加载到浏览器的页面建立浏览器端对服务器端的调用的基础,使得浏览器端的页面通过JavaScript脚本代理函数,可以实现对服务器端的类定义的方法进行调用,这种调用无需配置文件,而且只要某个类已经注册,那么该类所定义的方法在浏览器端的页面中都可以调用,而且这种调用方法,在一次业务处理过程中进行多次远程调用无需处理多次调用之间所需的复杂协调,简化了现有技术中浏览器端与服务器端多次交互时复杂的业务过程的开发。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例所提供的远程过程调用方法的流程图;
图2为本发明一实施例所提供的类注册过程的流程图;
图3为本发明另一实施例所提供的类注册过程的流程图;
图4为本发明另一实施例所提供的远程过程调用的方法的流程图;
图5为本发明一实施例所提供的远程过程调用的装置的结构示意图;
图6为本发明一实施例所提供的注册库的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,本发明一实施例所提供的方法包括:
S101,服务器端接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括本次调用的类的类注册标标识、方法名以及本次调用使用的参数;
本发明实施例主要描述了浏览器端调用服务器端业务逻辑实现的方法,该方法通过浏览器端和服务器端之间的交互实现。
浏览器端的页面的JavaScript脚本代理函数由所述注册库根据所述服务器端的类注册请求对服务器端类进行注册后返回给浏览器端。
参见图2,注册库根据所述服务器端的类注册请求对服务器端类进行注册的过程包括:
S201,服务器端向注册库发送类注册请求,请求所述注册库根据所述类注册请求中携带的信息进行类注册,所述类注册请求由浏览器端所请求页面的服务器端代码发送至注册库,其中包括服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
其中,注册请求由浏览器端所请求页面的服务器端代码发送至注册库具体为:
浏览器端所请求页面中增加一段服务器端代码,该服务器端代码的为指示服务器向注册库注册某个类。
例如,所述服务器端代码的形式可以是:
<%=Repository.register(MyBiz.class,″$″)%>
其中,register为类注册函数的函数名,参数包括类名MyBiz.class和该类注册后的空间名为$。
S202,注册库根据所述服务器端类在服务器端的类名查找到与所述服务器端类对应的实体类,并分析所述实体类中的方法声明,为所述实体类生成一个类注册标识和与所述类注册标识对应的JavaScript脚本代理函数;
在本发明的一种实施例中,所述类注册标识由所述注册库随机生成,当服务器重新启动时,注册库可以为每个注册的类生成新的类注册标识。
在本发明的另一种实施例中,在注册库生成类标识后,可以将该类标识进行保存,例如保存在数据库中,这样,当服务器重新启动时,注册库就不需要重新生成类注册标识了,只需要根据类名或者其他的类标识信息从数据库中读取即可。
S203,所述注册库将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
在本发明一实施例中,所述注册库可以通过将所述JavaScript脚本代理函数的引用写到所述浏览器端所请求的页面内容中的方式将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
进一步地,当浏览器端的页面获得JavaScript脚本代理函数后,注册过程还包括:
S204,浏览器端的页面将所述JavaScript脚本代理函数加载到当前页面中。
浏览器端的页面加载了JavaScript脚本代理函数后,如果浏览器要访问服务器端的该JavaScript脚本代理函数所对应的类所定义的方法时,直接调用浏览器端的JavaScript脚本代理函数就可以向服务器端发出调用请求,只要在该调用请求中指明需要本次调用的方法名以及本次调用使用的参数。
S102,所述服务器端对所述函数调用请求进行解码,确定所述JavaScript脚本代理函数对应的类注册标识,并,获取本次调用的方法名以及本次调用使用的参数;
S103,所述服务器端从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;
本发明实施例中,每个JavaScript脚本代理函数都与一个服务器端类的同名方法对应,并根据类注册标识建立JavaScript代理函数与服务器端的实体类之间的对应关系。每个实体类中可以包含多个方法,每个方法通过方法声明说明自身的参数类型。
本发明实施例所提供的方法,通过JavaScript脚本代理函数的实现嵌入本次调用所涉及的类注册标识,再根据类注册标识找到对应的实体类。在确定实体类之后,根据方法名找到该方法对应的方法声明,并根据方法声明对参数进行转换。
S104,所述服务器端创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端。
本发明实施例所提供的方法,利用注册库对服务器端的类进行管理,为某个被注册的类生成一个类注册标识和与之对应的JavaScript脚本代理函数,通过将JavaScript脚本代理函数加载到浏览器的页面建立浏览器端对服务器端的调用的基础,使得浏览器端的页面通过JavaScript脚本代理函数,可以实现对服务器端的类定义的方法进行调用,这种调用无需配置文件,而且只要某个类已经注册,那么该类所定义的方法浏览器端的页面都可以调用,而且这种调用方法,在一次业务处理过程中进行多次远程调用无需处理多次调用之间所需的复杂协调,简化了现有技术中浏览器端与服务器端多次交互时复杂的业务过程的开发。
随着JavaScript脚本代理函数的增加,可以形成与服务器端交互的JavaScript脚本库,提高了脚本代理函数的重用性。
下面以J2EE环境为例,对本发明实施例所提供的方法进行详细的说明。
通过前面的描述,可以知道,本发明实施例主要涉及到三个主体,包括注册库、浏览器端以及服务器端。
其中,注册库位于服务器中,主要负责所有需要被浏览器端调用的服务器端类的管理,为每个被注册的服务器端的类生成一个类注册标识以及对应的JavaScript脚本代理函数。
类注册过程由需要调用服务器端代码的浏览器端的Web界面的服务器端代码主动发起,例如需要注册的业务类为MyBiz,则在浏览器端的JSP文件中包含的注册代码如下:
<%=Repository.register(MyBiz.class,″$″)%>
其中:“$”是被注册类的命名空间,上述注册代码的含义为MyBiz类注册到名称为$的空间中去。当类注册完成以后,web页面可以通过$.method(...)调用服务器端该类的方法method。
Web页面如果需要调用服务器端某个类所定义的方法,首先需要向服务器端发送类注册请求,实际应用中,Web页面发送该类注册请求的方式,可以是在该Web页面的服务器端的执行代码中调用Web-RPC注册库的注册方法,例如:上述JSP文件中包含在<%%>之间的代码,在该代码中包含服务器端类及希望在浏览器调用时使用的命名空间。
服务器端执行上述代码,相当于向注册库发起了类注册流程。
注册库分析服务器端类的方法声明,为该类生成代理JavaScript脚本,然后返回一个包含有标识被注册类的类注册标识的字符串;最后,在Web页面的输出中嵌入该字符串。参见图3,以注册服务器端MyBiz类为例描述上述注册过程:
S301,注册库判断MyBiz.Class是否已经注册,如果否,进入步骤S302,否则进入S30X;
S302,分析MyBiz.Class的方法声明;
S303,生成MyBiz.Class的JavaScript脚本代理函数;
S304,生成MyBiz.Class的类注册标识;
S305,缓存MyBiz.Class的JavaScript脚本代理函数和类注册标识。
通过S303~S305,为MyBiz.Class生成了类注册标识和JavaScript脚本代理函数,并将类注册标识和JavaScript脚本代理函数对应起来。
S306,将MyBiz.Class的JavaScript脚本代理函数写到Web页面的内容中。
以JSP为例,注册完成以后,在JSP页面的输出中添加的内容如下:
<script src=″/invoke.jsp?a38fe136-bfbb-4e8f-943d-fd3c2fa2fdc9,$″></script>
其中,“a38fe136-bfbb-4e8f-943d-fd3c2fa2fdc9”是MyBiz.Class的类注册标识,这样,相当于将JavaScript脚本代理函数的引用关系返回给了Web页面,当Web页面需要加载该JavaScript脚本代理函数时,可以根据该引用关系获取并加载即可。
参见图4,MyBiz.Class类注册完成以后,浏览器如果要访问MyBiz.Class类在服务器端定义的方法,例如,服务器端类MyBiz.Class定义了方法add(inta,int b)实现对“a+b”进行求和运算,并且注册时使用“$”作为其命名空间,那么浏览器端调用服务器端的add(a,b)方法计算“1+1”的具体过程包括:
S401,浏览器端的JavaScript脚本代理函数发出函数调用请求,该函数调用请求具体为var r=$.add(1,1)。
该函数调用请求的意思是,请求调用命名空间为$的空间中的add方法,其中,两个参数分别为1,1,并要求将调用结果返回给变量r。
S402,服务器端对JavaScript脚本代理函数发送的函数调用请求进行解码,确定该代理函数对应的类注册标识为a38fe136-bfbb-4e8f-943d-fd3c2fa2fdc9,获取本次调用的方法名以及本次调用使用的参数。
S403,所述服务器端在注册库中检索,确定与a38fe136-bfbb-4e8f-943d-fd3c2fa2fdc9对应的类为MyBiz.Class,并根据方法名add获得该方法的方法声明,并根据方法声明进行参数类型转换。
S404,利用转换后的参数进行调用,并将结果返回给浏览器端。
S405,r被赋值为结果2。
本发明实施例所提供的方法,利用注册库对服务器端的类进行管理,为MyBiz.Class类生成一个类注册标识a38fe136-bfbb-4e8f-943d-fd3c2fa2fdc9和与之对应的JavaScript脚本代理函数,通过将JavaScript脚本代理函数加载到浏览器的页面建立浏览器端对服务器端调用的基础,使得浏览器端的页面通过JavaScript脚本代理函数,可以实现对服务器端的MyBiz.Class类定义的add的方法进行调用,这种调用无需配置文件,而且只要某个类已经注册,那么该类所定义的方法在浏览器端的页面中都可以调用,而且这种调用方法在一次业务处理过程中进行多次远程调用无需处理多次调用之间所需的复杂协调,简化了现有技术中浏览器端与服务器端多次交互时复杂的业务过程的开发。
参见图5,本发明实施例还提供一种远程过程调用装置,该装置位于服务器端,包括:
第一接收单元501,用于接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括次调用的类的类注册标识、方法名以及本次调用使用的参数;
获取单元502,用于对所述函数调用请求进行解码,确定所述JavaScript脚本代理函数对应的类注册标识,并获取本次调用的方法名以及本次调用使用的参数;
处理单元503,用于从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;
第一发送单元504,用于创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端。
为了能够顺利实现浏览器端对某个类所定义的方法的调用,服务器端需要首先在注册库中对该类进行注册,所以,本发明实施例所提供的装置还包括:
第二接收单元505,用于接收浏览器端的页面发送的类注册请求,所述类注册请求中包括服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
第二发送单元506,用于向注册库发送类注册请求,请求所述注册库根据所述类注册请求中携带的信息进行类注册。
参见图6,本发明实施例提供的用于远程过程调用的注册库包括:
接收单元601,用于接收服务器端发送的类注册请求,所述类注册请求由浏览器端的页面发送至所述服务器端,其中包括服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
处理单元602,用于根据所述服务器端类在服务器端的类名查找到与所述服务器端类对应的实体类,分析所述实体类中的方法声明;
生成单元603,用于为所述实体类生成一个类注册标识和与所述类注册标识对应的JavaScript脚本代理函数;
在本发明的一种实施例中,所述类注册标识由所述注册库随机生成,当服务器重新启动时,注册库可以为每个注册的类生成新的类注册标识。
在本发明的另一种实施例中,在注册库生成类标识后,可以将该类标识进行保存,例如保存在数据库中,这样,当服务器重新启动时,注册库就不需要重新生成类注册标识了,只需要根据类名或者其他的类标识信息从数据库中读取即可。
发送单元604,用于将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
在本发明一实施例中,所述发送单元604将所述JavaScript脚本代理函数返回给所述浏览器端的页面具体为:
所述发送单元将所述JavaScript脚本代理函数的引用写到所述浏览器端所请求的页面内容中。
本发明实施例所提供的装置,利用注册库对服务器端的类进行管理,为某个被注册的类生成一个类注册标识和与之对应的JavaScript脚本代理函数,通过将JavaScript脚本代理函数加载到浏览器的页面建立浏览器端对服务器端的调用的基础,使得浏览器端的页面通过JavaScript脚本代理函数,可以实现对服务器端的类定义的方法进行调用,这种调用无需配置文件,而且只要某个类已经注册,那么该类所定义的方法在浏览器端的页面中都可以调用,而且这种调用装置在一次业务处理过程中进行多次远程调用无需处理多次调用之间所需的复杂协调,简化了现有技术中浏览器端与服务器端多次交互时复杂的业务过程的开发。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种远程过程调用方法,其特征在于,包括:
服务器端接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括本次调用的类的类注册标识,方法名以及本次调用使用的参数;
所述服务器端对所述函数调用请求进行解码,确定所述JavaScript脚本代理函数对应的类注册标识,并,获取本次调用的方法名以及本次调用使用的参数;
所述服务器端从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;
所述服务器端创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端。
2.根据权利要求1所述的方法,其特征在于,所述JavaScript脚本代理函数由所述注册库根据所述服务器端的类注册请求对服务器端类进行注册后返回给浏览器端。
3.根据权利要求2所述的方法,其特征在于,所述注册库根据所述服务器端的类注册请求对服务器端类进行注册包括:
服务器端向注册库发送类注册请求,请求所述注册库根据所述类注册请求中携带的信息进行类注册,所述类注册请求由浏览器端所请求的页面的服务器端代码发送至注册库,其中包括所述服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
注册库根据所述服务器端类在服务器端的类名查找到与所述服务器端类对应的实体类,并分析所述实体类中的方法声明,为所述实体类生成一个类注册标识和与所述类注册标识对应的JavaScript脚本代理函数;
所述注册库将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述浏览器端的页面将所述JavaScript脚本代理函数加载到当前页面中。
5.根据权利要求3或4所述的方法,其特征在于,所述注册库将所述JavaScript脚本代理函数返回给所述浏览器端的页面具体为:
所述注册库将所述JavaScript脚本代理函数的引用写到所述浏览器端所请求的页面内容中。
6.根据权利要求1~4任意一项所述的方法,其特征在于,所述类注册标识由所述注册库随机生成,当服务器重新启动时,为每个注册的类生成新的类注册标识。
7.一种远程过程调用装置,其特征在于,该装置位于服务器端,包括:
第一接收单元,用于接收浏览器端的页面的JavaScript脚本代理函数发送的函数调用请求,所述函数调用请求中包括本次调用的类的类注册标识、方法名以及本次调用使用的参数;
获取单元,用于对所述函数调用请求进行解码,确定所述JavaScript脚本代理函数对应的类注册标识,并,获取本次调用的方法名以及本次调用使用的参数;
处理单元,用于从注册库中检索与所述类注册标识和方法名对应的实体类和相应的方法声明,并根据所述方法声明对本次调用使用的参数进行类型转换;
第一发送单元,用于创建服务器端对象并执行调用,获得调用结果,并将所述调用结果返回给浏览器端。
8.根据权利要求7所述的装置,其特征在于,还包括:
第二发送单元,用于向注册库发送类注册请求,请求所述注册库根据所述类注册请求中携带的信息进行类注册,所述类注册请求由浏览器端所请求的页面的服务器端代码发送至注册库,其中包括所述服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间。
9.一种用于远程过程调用的注册库,其特征在于,包括:
接收单元,用于接收服务器端发送的类注册请求,所述类注册请求由浏览器端所请求的页面的服务器端代码发送至注册库,其中包括服务器端类在服务器端的类名以及希望在浏览器调用所述服务器端类时使用的命名空间;
处理单元,用于根据所述服务器端类在服务器端的类名查找到与所述服务器端类对应的实体类,分析所述实体类中的方法声明;
生成单元,用于为所述实体类生成一个类注册标识和与所述类注册标识对应的JavaScript脚本代理函数;
发送单元,用于将所述JavaScript脚本代理函数返回给所述浏览器端的页面。
10.根据权利要求9所述的注册库,其特征在于,所述发送单元将所述JavaScript脚本代理函数返回给所述浏览器端的页面具体为:
所述发送单元将所述JavaScript脚本代理函数的引用写到所述浏览器端所请求的页面内容中。
11.根据权利要求9或10任意一项所述的注册库,其特征在于,所述注册标识由所述生成单元随机生成,当服务器重新启动时,为每个注册的类生成新的类注册标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910211144 CN101697139B (zh) | 2009-11-06 | 2009-11-06 | 一种远程过程调用方法、装置和注册库 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910211144 CN101697139B (zh) | 2009-11-06 | 2009-11-06 | 一种远程过程调用方法、装置和注册库 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101697139A CN101697139A (zh) | 2010-04-21 |
CN101697139B true CN101697139B (zh) | 2013-04-17 |
Family
ID=42142244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910211144 Active CN101697139B (zh) | 2009-11-06 | 2009-11-06 | 一种远程过程调用方法、装置和注册库 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101697139B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298954A (zh) * | 2018-09-14 | 2019-02-01 | 北京数聚鑫云信息技术有限公司 | 一种智能调用Dubbo远程服务的方法及装置 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236665A (zh) * | 2010-04-27 | 2011-11-09 | 华为技术有限公司 | 页面加载的方法及装置 |
CN102236682A (zh) * | 2010-05-06 | 2011-11-09 | 深圳市金蝶中间件有限公司 | 维持用户状态信息的方法和装置 |
CN102779031A (zh) * | 2011-05-10 | 2012-11-14 | 北京磊友信息科技有限公司 | 一种生成JavaScript脚本程序的方法 |
CN102279773B (zh) * | 2011-07-28 | 2014-07-09 | 迈普通信技术股份有限公司 | 一种双向远程调用的方法和系统 |
CN102591664B (zh) * | 2011-12-31 | 2016-03-30 | 四川长虹电器股份有限公司 | 一种基于嵌入式浏览器的网络账号管理方法 |
CN103425522B (zh) * | 2012-05-25 | 2017-07-28 | 深圳中兴力维技术有限公司 | 一种基于web的后台服务器访问方法及系统 |
CN103116520B (zh) * | 2012-11-02 | 2016-07-06 | 深圳键桥通讯技术股份有限公司 | 基于tcp/ udp的远程过程调用rpc的方法 |
CN103885973B (zh) * | 2012-12-21 | 2017-07-07 | 中国科学院声学研究所 | 一种基于Web引擎的远程过程调用系统及实现方法 |
CN103051728B (zh) * | 2013-01-10 | 2015-07-08 | 太仓市同维电子有限公司 | 一种远程过程调用方法 |
CN104615489B (zh) * | 2015-01-22 | 2018-02-23 | 江苏大烨智能电气股份有限公司 | 一种多节点数据交互的实现方法 |
CN107203541B (zh) * | 2016-03-17 | 2020-04-14 | 台达电子企业管理(上海)有限公司 | 页面加载方法及其页面加载装置 |
CN107645476B (zh) * | 2016-07-22 | 2021-06-11 | 上海优扬新媒信息技术有限公司 | 请求处理方法和装置 |
CN108205466B (zh) * | 2016-12-20 | 2021-04-30 | 北京京东尚科信息技术有限公司 | 计算机函数方法的执行方法和装置 |
CN107479985B (zh) * | 2017-06-30 | 2020-01-03 | 武汉斗鱼网络科技有限公司 | 一种远程过程调用的方法、装置及计算机设备 |
CN107277029B (zh) * | 2017-06-30 | 2020-01-03 | 武汉斗鱼网络科技有限公司 | 一种远程过程调用的方法、装置及计算机设备 |
CN108337236A (zh) * | 2017-12-28 | 2018-07-27 | 杭州马猴烧韭科技有限公司 | 一种基于Protobuf和HTTP/1.1的gRPC调用方法及装置 |
CN110659141B (zh) * | 2018-06-30 | 2022-01-04 | 武汉斗鱼网络科技有限公司 | 一种指令执行的方法以及相关设备 |
CN109614247B (zh) * | 2018-11-20 | 2023-08-18 | 广东工业大学 | 一种声明式远程服务调用系统及其执行方法 |
CN109739655A (zh) * | 2018-11-21 | 2019-05-10 | 北京奇安信科技有限公司 | 一种gRPC请求的参数设置方法及装置 |
CN110909098A (zh) * | 2019-11-14 | 2020-03-24 | 武汉一格空间科技有限公司 | 一种云端地理信息数据分析方法及系统 |
CN113709085A (zh) * | 2020-05-22 | 2021-11-26 | 成都鼎桥通信技术有限公司 | 远程过程调用处理方法、装置及设备 |
CN112596927A (zh) * | 2020-12-25 | 2021-04-02 | 上海艾融软件股份有限公司 | 远程方法调用方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196813A (zh) * | 2007-12-26 | 2008-06-11 | 上海科泰世纪科技有限公司 | 计算机软件系统中基于构件接口实现事件回调的方法 |
CN101303656A (zh) * | 2008-06-06 | 2008-11-12 | 中国科学院计算技术研究所 | 一种Java应用程序远程直接内存访问方法 |
-
2009
- 2009-11-06 CN CN 200910211144 patent/CN101697139B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196813A (zh) * | 2007-12-26 | 2008-06-11 | 上海科泰世纪科技有限公司 | 计算机软件系统中基于构件接口实现事件回调的方法 |
CN101303656A (zh) * | 2008-06-06 | 2008-11-12 | 中国科学院计算技术研究所 | 一种Java应用程序远程直接内存访问方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298954A (zh) * | 2018-09-14 | 2019-02-01 | 北京数聚鑫云信息技术有限公司 | 一种智能调用Dubbo远程服务的方法及装置 |
CN109298954B (zh) * | 2018-09-14 | 2019-10-25 | 北京数聚鑫云信息技术有限公司 | 一种智能调用Dubbo远程服务的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101697139A (zh) | 2010-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101697139B (zh) | 一种远程过程调用方法、装置和注册库 | |
US7870482B2 (en) | Web browser extension for simplified utilization of web services | |
CN108334387B (zh) | 动态界面渲染方法及装置 | |
US8578333B2 (en) | Method and system for client-side user interface enhancement to enable application integration and portalisation | |
CN101216838B (zh) | 基于web标记的xml界面配置文件分发系统及方法 | |
US9130975B2 (en) | Generation of macros | |
US9569292B2 (en) | Remotable contracts for the web | |
CN105872083A (zh) | 一种支持不同类型客户端访问服务器的方法、服务器及系统 | |
CN110489323B (zh) | 可视化的rpc api调试方法、装置、介质和设备 | |
CN112187558B (zh) | 数据校验方法、装置、电子设备 | |
CN111338623B (zh) | 一种开发用户界面的方法、装置、介质和电子设备 | |
CN111221572B (zh) | 一种自动适配运行环境的方法、装置、介质和设备 | |
CN102591961A (zh) | 一种制作数据图表的方法及系统 | |
CN112631590B (zh) | 组件库生成方法、装置、电子设备和计算机可读介质 | |
CN110263070A (zh) | 事件上报方法及装置 | |
CN111857658A (zh) | 一种渲染动态组件的方法、装置、介质和电子设备 | |
CN114564203A (zh) | 一种业务运行方法、装置、电子设备及可读介质 | |
CN111858104B (zh) | 多端适配的表单生成方法、装置、设备和介质 | |
CN102662838B (zh) | 一种浏览器中Flash的调试方法及系统 | |
Imran et al. | Aggregated provenance and its implications in clouds | |
CN110377273B (zh) | 一种数据处理的方法、装置、介质和电子设备 | |
US20130124971A1 (en) | Real time web script refresh using asynchronous polling without full web page reload | |
CN111124924A (zh) | Api部署方法、装置、电子设备及存储介质 | |
CN103473106A (zh) | 一种页面生成的方法及系统 | |
CN111767498A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |