CN106357713A - 实现远程过程调用的方法和客户端装置以及服务器装置 - Google Patents
实现远程过程调用的方法和客户端装置以及服务器装置 Download PDFInfo
- Publication number
- CN106357713A CN106357713A CN201510418723.8A CN201510418723A CN106357713A CN 106357713 A CN106357713 A CN 106357713A CN 201510418723 A CN201510418723 A CN 201510418723A CN 106357713 A CN106357713 A CN 106357713A
- Authority
- CN
- China
- Prior art keywords
- object class
- definition
- result
- call
- remote procedure
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
本发明提供一种实现远程过程调用的方法和客户端装置以及服务器装置,有助于在处理远程方法调用请求时对于可变对象的处理的准确性并且提高返回请求结果的效率。该方法包括:客户端对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义;所述服务器对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化,再将封装和序列化后的处理结果返回给所述客户端;所述客户端对收到的序列化的处理结果进行反序列化。
Description
技术领域
本发明涉及计算机技术领域,特别地涉及一种实现远程过程调用的方法和客户端装置以及服务器装置。
背景技术
随着远程过程调用协议RPC(Remote Procedure Call Protocol)在互联网服务器间信息交互的普遍应用,使得信息并发和处理过程有了飞速进步。RPC是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
在请求信息的数据传输过程中需要进行序列化,可以采用一些序列化服务框架来完成,目前常用的序列化服务框架例如Thrift(相关信息可参考http://thrift.apache.org/tutorial/)等,存在的主要问题是对可变对象的序列化不具备很好的支持,从而导致对象在一方被序列化之后由另一方反序列化时出现不一致的情况,这样一来,被请求方返回的对象内容有可能不满足调用方的需求。
发明内容
有鉴于此,本发明提供一种实现远程过程调用的方法和客户端装置以及服务器装置,有助于在处理远程方法调用请求时对于可变对象的处理的准确性并且提高返回请求结果的效率。
为实现上述目的,根据本发明的一个方面,提供了一种处理拣货信息的方法。
本发明的实现远程过程调用的方法包括:客户端对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义;所述服务器对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化,再将封装和序列化后的处理结果返回给所述客户端;所述客户端对收到的序列化的处理结果进行反序列化。
可选地,所述对象类定义是由JSON定义。
可选地,所述方法调用请求是基于远程过程调用协议的请求。
根据本发明的另一方面,提供了一种实现远程过程调用的客户端装置。
本发明的实现远程过程调用的客户端装置包括:客户端发送模块,用于对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义;客户端接收模块,用于对所述服务器返回的序列化的处理结果进行反序列化;其中所述序列化的处理结果是所述服务器对所述对象格式进行反序列化之后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果然后再将该处理结果按照所述对象类定义进行封装后再进行序列化而得到。
可选地,所述对象类定义是由JSON定义。
可选地,所述方法调用请求是基于远程过程调用协议的请求。
根据本发明的又一方面,提供了一种实现远程过程调用的服务器装置。
本发明的实现远程过程调用的服务器装置包括:服务端接收模块,用于接收客户端发送的序列化的方法调用请求,该方法调用请求中包含方法调用参数信息和预设的对象类定义;处理模块,用于对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化;服务端发送模块,用于封装和序列化后的处理结果返回给所述客户端。
可选地,所述对象类定义是由JSON定义。
可选地,所述方法调用请求是基于远程过程调用协议的请求。
根据本发明的技术方案,客户端对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义,服务器对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化,再将封装和序列化后的处理结果返回给所述客户端,所述客户端对收到的序列化的处理结果进行反序列化,这种方式对于客户端发来的方法调用请求,服务器仅对其中的对象类定义进行反序列化,并不对方法调用参数信息进行反序列化,这是因为服务器已经得到对象类定义,能够直接定位到需要返回对象的类型和结果,这种做法有助于保证向方法调用方返回其所需的对象信息,还能够减少反序列化的工作量,并减少生成静态代码和静态数据类型等操作。另外按照上述步骤的做法,对于同一个方法,可以灵活定义需要返回的对象信息,这种方式在现实中,对于可变对象,无需重复编写方法代码,可以采用已有方法代码,再添加不同的对象类定义即可,这样无需另行编写方法代码,减轻开发人员工作量。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施方式的实现远程过程调用的方法的主要步骤的示意图;
图2是根据本发明实施方式的实现远程过程调用的客户端装置的基本组成部分的示意图;
图3是根据本发明实施方式的实现远程过程调用的服务器装置的基本组成部分的示意图。
具体实施方式
以下结合附图对本发明的示范性实施方式做出说明,其中包括本发明实施方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施方式做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本发明的实施方式中,客户端在向服务器发送方法调用请求时,将预设的对象类定义一并发送给服务器,使服务器根据该对象类定义进行返回结果的封装和序列化。以下结合图1加以说明,图1是根据本发明实施方式的实现远程过程调用的方法的主要步骤的示意图。如图1所示,该方法主要包括如下的步骤S11至步骤S17。
步骤S11:客户端对方法调用请求进行序列化然后发送给服务器。该方法调用请求中包含方法调用参数信息和预设的对象类定义。可采用JSON(JSON)来定义,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
本发明的实施方式中,可采用的JSON文件形式例如:
{
"类型":"此处指包名",
"名称":"此处指类名",
"别名":["此处指别名,用于动态生成对象"],
"作用域":[
{"名称":"value","类型":"long"},
{……},
{……}
]
}
也就是说,定义了需要返回对象的类型,或者说定义了对象的具体结构。
步骤S12:服务器对对象类定义进行反序列化,然后按照对象类定义和方法调用参数信息处理方法调用请求从而得到处理结果。
步骤S13:服务器将处理结果按照对象类定义进行封装后再进行序列化,再将封装和序列化后的处理结果返回给客户端。
步骤S14:客户端对收到的序列化的处理结果进行反序列化。
从以上步骤可以看出,对于客户端发来的方法调用请求,服务器仅对其中的对象类定义进行反序列化,并不对方法调用参数信息进行反序列化,这是因为服务器已经得到对象类定义,能够直接定位到需要返回对象的类型和结果,这种做法有助于保证向方法调用方返回其所需的对象信息,还能够减少反序列化的工作量,并减少生成静态代码和静态数据类型等操作。另外按照上述步骤的做法,对于同一个方法,可以灵活定义需要返回的对象信息,这种方式在现实中,对于可变对象,无需重复编写方法代码,可以采用已有方法代码,再添加不同的对象类定义即可,这样无需另行编写方法代码,减轻开发人员工作量。
图2是根据本发明实施方式的实现远程过程调用的客户端装置的基本组成部分的示意图。如图2所示,本发明实施方式中的实现远程过程调用的客户端装置20主要包括客户端发送模块21和客户端接收模块22。
客户端发送模块21用于对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义;客户端接收模块22用于对所述服务器返回的序列化的处理结果进行反序列化;其中所述序列化的处理结果是所述服务器对所述对象格式进行反序列化之后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果然后再将该处理结果按照所述对象类定义进行封装后再进行序列化而得到。
图3是根据本发明实施方式的实现远程过程调用的服务器装置的基本组成部分的示意图。如图3所示,本发明实施方式的实现远程过程调用的服务器装置30主要包括服务端接收模块31、处理模块32、以及服务端发送模块33。
服务端接收模块31用于接收客户端发送的序列化的方法调用请求,该方法调用请求中包含方法调用参数信息和预设的对象类定义;处理模块32用于对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化;服务端发送模块33用于封装和序列化后的处理结果返回给所述客户端。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (9)
1.一种实现远程过程调用的方法,其特征在于,包括:
客户端对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义;
所述服务器对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化,再将封装和序列化后的处理结果返回给所述客户端;
所述客户端对收到的序列化的处理结果进行反序列化。
2.根据权利要求1所述的实现远程过程调用的方法,其特征在于,所述对象类定义是由JSON定义。
3.根据权利要求1或2所述的实现远程过程调用的方法,其特征在于,所述方法调用请求是基于远程过程调用协议的请求。
4.一种实现远程过程调用的客户端装置,其特征在于,包括:
客户端发送模块,用于对方法调用请求进行序列化然后发送给服务器,该方法调用请求中包含方法调用参数信息和预设的对象类定义;
客户端接收模块,用于对所述服务器返回的序列化的处理结果进行反序列化;其中所述序列化的处理结果是所述服务器对所述对象格式进行反序列化之后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果然后再将该处理结果按照所述对象类定义进行封装后再进行序列化而得到。
5.根据权利要求4所述的客户端装置,其特征在于,所述对象类定义是由JSON定义。
6.根据权利要求4或5所述的客户端装置,其特征在于,所述方法调用请求是基于远程过程调用协议的请求。
7.一种实现远程过程调用的服务器装置,其特征在于,包括:
服务端接收模块,用于接收客户端发送的序列化的方法调用请求,该方法调用请求中包含方法调用参数信息和预设的对象类定义;
处理模块,用于对所述对象类定义进行反序列化,然后按照所述对象类定义和所述方法调用参数信息处理所述方法调用请求从而得到处理结果,然后将该处理结果按照所述对象类定义进行封装后再进行序列化;
服务端发送模块,用于封装和序列化后的处理结果返回给所述客户端。
8.根据权利要求7所述的服务器装置,其特征在于,所述对象类定义是由JSON定义。
9.根据权利要求7或8所述的服务器装置,其特征在于,所述方法调用请求是基于远程过程调用协议的请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510418723.8A CN106357713B (zh) | 2015-07-16 | 2015-07-16 | 实现远程过程调用的方法和客户端装置以及服务器装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510418723.8A CN106357713B (zh) | 2015-07-16 | 2015-07-16 | 实现远程过程调用的方法和客户端装置以及服务器装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106357713A true CN106357713A (zh) | 2017-01-25 |
CN106357713B CN106357713B (zh) | 2019-12-31 |
Family
ID=57842613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510418723.8A Active CN106357713B (zh) | 2015-07-16 | 2015-07-16 | 实现远程过程调用的方法和客户端装置以及服务器装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106357713B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648940A (zh) * | 2017-03-13 | 2017-05-10 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
CN107483399A (zh) * | 2017-06-30 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 一种在远程过程调用中的信息封装方法及装置 |
CN108259500A (zh) * | 2018-01-26 | 2018-07-06 | 郑州云海信息技术有限公司 | 一种rpc通讯方法、系统及装置 |
WO2019100819A1 (zh) * | 2017-11-24 | 2019-05-31 | 中兴通讯股份有限公司 | 一种实现远程过程调用的方法及装置 |
CN109862095A (zh) * | 2019-01-30 | 2019-06-07 | 新华三大数据技术有限公司 | 基于Web服务的数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003036464A2 (en) * | 2001-10-22 | 2003-05-01 | Sun Microsystems, Inc. | Inter-process communication using different programming languages |
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
CN103729292A (zh) * | 2013-12-30 | 2014-04-16 | 瑞达信息安全产业股份有限公司 | 一种跨主机、跨平台的远程命令调用方法和系统 |
CN104320396A (zh) * | 2014-10-28 | 2015-01-28 | 用友优普信息技术有限公司 | 数据交互装置和方法 |
-
2015
- 2015-07-16 CN CN201510418723.8A patent/CN106357713B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003036464A2 (en) * | 2001-10-22 | 2003-05-01 | Sun Microsystems, Inc. | Inter-process communication using different programming languages |
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
CN103729292A (zh) * | 2013-12-30 | 2014-04-16 | 瑞达信息安全产业股份有限公司 | 一种跨主机、跨平台的远程命令调用方法和系统 |
CN104320396A (zh) * | 2014-10-28 | 2015-01-28 | 用友优普信息技术有限公司 | 数据交互装置和方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648940A (zh) * | 2017-03-13 | 2017-05-10 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
CN106648940B (zh) * | 2017-03-13 | 2020-05-22 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
CN107483399A (zh) * | 2017-06-30 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 一种在远程过程调用中的信息封装方法及装置 |
CN107483399B (zh) * | 2017-06-30 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 一种在远程过程调用中的信息封装方法及装置 |
WO2019100819A1 (zh) * | 2017-11-24 | 2019-05-31 | 中兴通讯股份有限公司 | 一种实现远程过程调用的方法及装置 |
CN108259500A (zh) * | 2018-01-26 | 2018-07-06 | 郑州云海信息技术有限公司 | 一种rpc通讯方法、系统及装置 |
CN109862095A (zh) * | 2019-01-30 | 2019-06-07 | 新华三大数据技术有限公司 | 基于Web服务的数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106357713B (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220294850A1 (en) | Cloud storage methods and systems | |
CN106357713A (zh) | 实现远程过程调用的方法和客户端装置以及服务器装置 | |
US20140013451A1 (en) | Data obfuscation for open data (odata) communications | |
CN103617543B (zh) | 应用程序的推荐方法和装置 | |
CN112527528A (zh) | 基于消息队列的数据传输方法、装置及存储介质 | |
US20160337290A1 (en) | Message Push Method and Apparatus | |
CN111259037B (zh) | 一种基于规则配置的数据查询方法、装置、存储介质及终端 | |
CN101854371A (zh) | JavaScript对象的调用及处理的方法、装置 | |
EP4033340A1 (en) | Session message display method and apparatus, and electronic device and storage medium | |
CN103907329A (zh) | 用于实现离线web应用执行的方法和装置 | |
CN106095518B (zh) | 应用程序安装方法及装置 | |
CN109039876B (zh) | 邮件处理方法和装置 | |
CN106598678A (zh) | 向终端设备提供应用程序安装包的方法及装置 | |
EP2778968A1 (en) | Mobile telecommunication device remote access to cloud-based or virtualized database systems | |
CN104135536A (zh) | 一种基于json数据协议的Web管理系统数据交互方法 | |
CN109634751A (zh) | 一种利用electron框架实现应用层和底层通信的方法 | |
CN105068801A (zh) | 修改json日期格式的方法及系统 | |
CN112434620B (zh) | 场景文字识别方法、装置、设备和计算机可读介质 | |
CN108696899A (zh) | Sip消息传输与接收方法及传输与接收装置 | |
Ahn et al. | Development of an oneM2M-compliant IoT platform for wearable data collection | |
CN107517188A (zh) | 一种基于安卓系统的数据处理方法和装置 | |
US9614900B1 (en) | Multi-process architecture for a split browser | |
CN112699111B (zh) | 报表生成方法、装置、电子设备和计算机可读介质 | |
US20130191502A1 (en) | System and method for transformation and delivery of software to mobile platforms | |
CN112732457A (zh) | 图像传输方法、装置、电子设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |