买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】跨平台的服务调用方法及装置_人谷科技(北京)有限责任公司_201710119756.1 

申请/专利权人:人谷科技(北京)有限责任公司

申请日:2017-03-02

公开(公告)日:2020-06-26

公开(公告)号:CN107105004B

主分类号:H04L29/08(20060101)

分类号:H04L29/08(20060101);G06F9/54(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.06.26#授权;2017.09.22#实质审查的生效;2017.09.08#著录事项变更;2017.08.29#公开

摘要:本发明适用于云计算技术领域,提供了跨平台的服务调用方法及装置,包括:检测所述目标服务是否为本地服务,若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务;若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务。在本发明中,通过自动从注册服务器或远程服务缓存列表中查找目标服务的方式,使得用户可以在目标服务的部署位置发生改变时,自动找到并调用目标服务,有利于整个系统更加稳定地运行。

主权项:1.一种跨平台的服务调用方法,其特征在于,包括:接收用户调用目标服务的指令;检测所述目标服务是否为本地服务;若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务,所述远程服务列表存储在本地服务器当中;若所述目标服务在所述远程服务列表中,则生成服务请求报文;根据所述目标服务的服务信息,建立与所述目标服务所在的远程服务器之间的连接;将所述服务请求报文发送至所述目标服务所在的远程服务器;接收所述目标服务所在的远程服务器发送的应答报文;根据所述应答报文,解析出服务调用结果;若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果,并且将从所述注册服务器获取的服务信息缓存到所述远程服务列表中。

全文数据:跨平台的服务调用方法及装置技术领域[0001]本发明属于云计算技术领域,尤其涉及跨平台的服务调用方法及装置。背景技术[0002]云计算已成为企业处理数据时常用的处理方式,当用户需要一种服务时,这个服务不一定直接由本地服务器提供,还可以通过调用其他服务器上的相应程序远程为用户提供服务。[0003]然而在现有的云计算平台中,开发人员需要区分目标服务的部署位置,当目标服务的部署位置不在本地服务器时,一旦部署位置发生变化,开发人员必须修改对应的代码及配置才能找到和调用目标服务。这给开发人员增加了额外的工作量,同时也不利于整个系统的稳定运行。发明内容[0004]有鉴于此,本发明实施例提供了跨平台的服务调用方法及装置,以解决现有的云计算平台在目标服务的部署位置发生变化后,必须修改对应的代码及配置才能找到目标服务的问题。[0005]第一方面,提供了一种跨平台的服务调用方法,包括:接收用户调用目标服务的指令;[0006]检测所述目标服务是否为本地服务;[0007]若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;[0008]若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;[0009]若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果;[0010]若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果。[0011]第二方面,提供了一种跨平台的服务调用装置,包括:接收模块,用于接收用户调用目标服务的指令;[0012]检测模块,用于检测所述目标服务是否为本地服务;[0013]本地调用模块,若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;[0014]搜索模块,用于若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;[0015]第一远程调用模块,用于若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果;[0016]第二远程调用模块,用于若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果。[0017]在本发明实施例中,通过自动从注册服务器或远程服务缓存列表中查找目标服务的方式,使得用户可以在目标服务的部署位置发生改变时,自动找到并调用目标服务,降低了开发人员的工作量,且有利于整个系统更加稳定地运行。附图说明[0018]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0019]图1是本发明实施例提供的跨平台的服务调用方法本地服务器侧的实现流程图;[0020]图2是本发明实施例提供的跨平台的服务调用方法本地服务器侧S105的具体实现流程图;[0021]图3是本发明实施例提供的跨平台的服务调用方法本地服务器侧S205的具体实现流程图;[0022]图4是本发明实施例提供的跨平台的服务调用方法本地服务器侧S106的具体实现流程图;[0023]图5是本发明实施例提供的跨平台的服务调用方法的系统流程图;图6是本发明实施例提供的跨平台的服务调用方法本地服务器侧的结构框图;[0024]图7是本发明实施例提供的跨平台的服务调用方法系统的结构框图。具体实施方式[0025]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。[0026]本发明实施例接收用户调用目标服务的指令;检测所述目标服务是否为本地服务;若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果;若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。[0027]图1示出了本发明实施例提供的跨平台的服务调用方法本地服务器侧的实现流程,详述如下:[0028]在SlOl中,接收用户调用目标服务的指令。[0029]目标服务指用户根据自己的需要所指定的业务服务,这里的业务服务可以实现某一些功能,帮助用户达到他们使用本地服务器的目的。目标服务可以由用户自己编码实现的业务逻辑组成,也可以由已存在的业务逻辑组成。[0030]用户通过终端指定一个目标服务,并向本地服务器发送调用目标服务的指令,之后本地服务器接收用户调用目标服务的指令。[0031]在Sl02中,检测所述目标服务是否为本地服务。[0032]由于在云计算中,每个服务器中存放的服务程序是相对比较少的,大量的服务可能存放在不同的远程服务器中,而不是在用户直接可以使用到的本地服务器中,因此当本地服务器接收到调用目标服务的指令之后,首先会在本地服务器中检测是否有用户需要的目标服务。[0033]在S103中,若所述目标服务是本地服务,则从本地服务器直接调用该目标服务。[0034]在S104中,若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务。[0035]远程服务列表存储在本地服务器当中,存放着部分远程服务的服务信息。这些服务信息包括某个远程服务所在的服务器的机器地址、服务端口等信息。通过这些服务信息,本地服务器可以找到目标服务所在的远程服务器。需要注意的是远程服务列表中只包含着部分服务的服务信息,并不是所有的目标服务都可以在远程服务列表中被搜索到。[0036]在S105中,若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果。[0037]图2示出了本发明实施例提供的跨平台的服务调用方法本地服务器侧S105的具体实现流程.[0038]在S201中,生成服务请求报文。[0039]本地服务器将需要目标服务处理的业务数据进行序列化处理,序列化处理的目的是将一个数据结构如二叉树数据结构变成一个char数组或者一个string字符串,方便网络传输。[0040]序列化处理将一个对象的状态特性分解成字节流,然后在网络传输结束后,经过反序列化处理重构出原数据特性。[0041]在本发明实施例中,业务数据的序列化处理是将DOMdocumentobjectmodel文档对象模型)对象转换成可传输的XMLextensiblemarkuplanguage可扩展标记语言)字符串,实现序列化处理的具体代码如下:[0042]puhlievoidserializeXmlElementelementthrowsIQException{wrItePrintlnQ;indent;元素幵始writer,writeΓ〇;writer,«riteelement.getName写属性wr11eA11ributeselement;元素内容if!element.hasContent{无ft容,关闭元素writeEniptyElementCloseelenient,getNaineIelse{wrUor,write..〃〃);写内容writeElementContentelement;元素关闭[0043]writer,writeΓΚ:";writor,writeelement,getNameO;wriUr.write〃〃);}}[0044]当业务数据序列化之后,需要把字符串打包进一个服务请求报文中。[0045]在S202中,根据所述目标服务的服务信息,建立与所述目标服务所在的远程服务器之间的连接。[0046]由于S105的先决条件是目标服务就在远程服务列表中,因此可以直接从存储在本地服务器的远程服务列表中查找到目标服务的服务信息。服务信息包括目标服务所在的服务器的机器地址、服务端口等信息。通过这些服务信息,本地服务器可以找到目标服务所在的远程服务器,并建立SOCKET长连接。[0047]SOCKET是应用层与TCPIP协议族通信的中间软件抽象层,它是一组接口,把复杂的TCPIP协议族隐藏在SOCKET接口后面。长连接指两个服务器先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。[0048]在本发明实施例中,JavaScript上实现序列化处理的具体代码如下:importjava.awt.承.;importjava,awt,event.importjava.io.*;[0049]importjava,net.publicclassChatClientextendsFrame{Socket:s=null;DataOutputStrearados=null;DataInputStreamdis二iiu_Ll;privatebooleanfcConneeted=false;TextFieldtfT.rt=newTextFie:ld〇;TextAreataContent=newTextAreaO;ThreadtRecv=newThreadnewRecvThreadO;publicstaticvoidmainString[]^arg:s{newChatCiIent〇,IaunchFrame8888;}pub]IcvoidIaunchFrameini,port{setLocation400,300;this.setSize300,300;addtfTxt,BorderLayout.SOI'TIi;[0050]addtaContent,BorderLayout.NORTH;pack〇;this.addWindowListenernewWindowAdapter{pubIIgvoidwindowClosing:WindowEYentargO{disconnect;System,exit0;}};tfTxt.addActionListenernewTFListenerO;setVisibletrue;connectport:;tRecv.start;[0051]IpublicvoidG〇nneetintport{try-{s=newSocket"127,0·0,1",port;dos=newDataOiitputSt:reams,getOutputStxeSm〇;dis-newDataInputStreams.getInputStream;System:·out.printIn〃违接成功!");bConnected=true;}catchLinknOTnHQstExceptione{e.printStackTrace;}catchiOExceptiona{.e.printStackTraGe;}}publicvoiddisconnect{try{d;os.close;dis.close;s.close〇;}catch工OExc母ptj:QHe{e.printStackTrace;.}}priyateclassTFListenerimplements:ActionListener{publicvoidactio.nPe:rform:edActionEvente{Stringstr=tfTxt.getText.triniO;tfTxt.setText,Λ,;try{dos.writelTFsti·;dos.flushQ;}catchIOExccptioncl{©1.printStackTrace;:}}}privateclassRecvThreadimplementsRunnable{publicvoidrun{try{[0052]whilebConnected{Stringstr=dis:,readUTFQ;taContent.setTexttaContent.getText.+str.+’\.n’.;}catchSocketE:xceptione{System,out,prIntlnhbT»bye!f,;}catchEOFExceptioneSystem,out.println"3恳出了,’by.e.!〃.);}catchIOExceptione{e,printStackTrace;}}}[0053]}[0054]在S203中,将所述服务请求报文发送至所述目标服务所在的远程服务器。[0055]在S204中,接收所述目标服务所在的远程服务器发送的应答报文。[0056]远程服务器在接收到服务请求报文并处理完数据后,会将处理结果打包进一个应答报文,具体步骤将在远程服务器侧的实施例详细介绍。本地服务器接收这个由远程服务器发送来的应答报文。[0057]在S205中,根据所述应答报文,解析出服务调用结果。[0058]图3示出了本发明实施例提供的跨平台的服务调用方法本地服务器侧S205的具体实现流程,详述如下:[0059]在S301中,从所述应答报文中解析出业务数据。[0060]首先将应答报文解包得到字符串形式的调用结果。[0061]在S302中,将所述业务数据进行反序列化处理,得到服务调用结果。[0062]通过反序列化处理,得到最终的调用结果。[0063]在发明实施例中,将XML字符串的调用结果反序列化处理成DOM对象得到最终的调用结果。[0064]在S106中,若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果,并且将从所述注册服务器获取的服务信息缓存到所述远程服务列表中。[0065]图4示出了本发明实施例提供的跨平台的服务调用方法本地服务器侧S106的具体实现流程,详述如下:[0066]在S401中,建立与所述注册服务器的连接。[0067]由于在S106的情况下,本地服务器中的远程服务列表不含有用户希望使用的目标服务,因此本地服务器在没有搜索到相应服务后,会建立与注册服务器的连接以找到相应的目标服务的服务信息。[0068]注册服务器也是一个服务器,用于集中治理分散在不同系统服务器上的应用服务。当一个应用服务的信息改变时(如一个应用服务的部署位置发生改变),应用服务所在的服务器会自动通知注册服务器,注册服务器会根据相应的改变,更新数据以保证注册服务器内的数据的实效性,保证各个服务器可以从注册服务器内查到最新的应用服务的服务信息。[0069]在本实施例中,本地服务器与注册服务器建立SOCKET长连接,具体的连接建立方法及说明已在前文介绍,不在此赘述。[0070]在S402中,向所述注册服务器查询所述目标服务的服务信息。[0071]由于注册服务器一定会含有本系统内所有服务器上的所有服务的服务信息,因此注册服务器会向本地服务器返回目标服务的服务信息。服务信息包括目标服务所在的服务器的机器地址、服务端口等信息。通过这些服务信息,本地服务器可以找到目标服务所在的远程服务器。[0072]本地服务器会组装一个查询服务报文,通过已建立好的连接发送给注册服务器以查询目标服务的服务信息。[0073]在S403中,接收所述注册服务器返回的所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接。[0074]将所述服务请求报文发送至所述目标服务所在的远程服务器。[0075]在S404中,生成服务请求报文。[0076]本地服务器将需要目标服务处理的业务数据进行序列化处理,序列化处理的目的是将一个数据结构如二叉树数据结构变成一个char数组或者一个string字符串,方便网络传输。[0077]序列化处理将一个对象的状态特性分解成字节流,然后在网络传输结束后,经过反序列化处理重构出原数据特性。[0078]在本发明实施例中,业务数据的序列化处理是将DOMdocumentobjectmodel文档对象模型)对象转换成可传输的XMLextensiblemarkuplanguage可扩展标记语言)字符串。[0079]在S405中,将所述服务请求报文发送至所述目标服务所在的远程服务器。[0080]在S406中,接收所述目标服务所在的远程服务器发送的应答报文。[0081]远程服务器在接收到服务请求报文并处理完数据后,会将处理结果打包进一个应答报文,具体步骤将在远程服务器侧的实施例详细介绍。本地服务器接收这个由远程服务器发送来的应答报文。[0082]在S407中,根据所述应答报文,解析出服务调用结果。[0083]从所述应答报文中解析出业务数据。[0084]将应答报文解包得到字符串形式的调用结果。[0085]将所述业务数据进行反序列化处理,得到服务调用结果。[0086]通过反序列化处理,得到最终的调用结果。[0087]在发明实施例中,将XML字符串的调用结果反序列化处理成DOM对象得到最终的调用结果。[0088]图5示出了本发明实施例提供的跨平台的服务调用方法的系统流程,详述如下:[0089]需要注意的是,图5介绍的是当目标服务不在本地服务器时,且在本地服务器上的远程服务列表中也查找不到目标服务后的系统流程。[0090]在S501中,本地服务器建立与注册服务器的连接。[0091]由于在S106的情况下,本地服务器中的远程服务列表不含有用户希望使用的目标服务,因此本地服务器在没有搜索到相应服务后,会建立与注册服务器的连接以找到相应的目标服务的服务信息。[0092]注册服务器也是一个服务器,用于集中治理分散在不同系统服务器上的应用服务。当一个应用服务的信息改变时(如一个应用服务的部署位置发生改变),应用服务所在的服务器会自动通知注册服务器,注册服务器会根据相应的改变,更新数据以保证注册服务器内的数据的实效性,保证各个服务器可以从注册服务器内查到最新的应用服务的服务信息。[0093]在本实施例中,本地服务器与注册服务器建立SOCKET长连接,具体的连接建立方法及说明已在前文介绍,不在此赘述。[0094]在S502中,本地服务器向所述注册服务器查询目标服务的服务信息。[0095]由于注册服务器一定会含有本系统内所有服务器上的所有服务的服务信息,因此注册服务器会向本地服务器返回目标服务的服务信息。服务信息包括目标服务所在的服务器的机器地址、服务端口等信息。通过这些服务信息,本地服务器可以找到目标服务所在的远程服务器。[0096]本地服务器会组装一个查询服务报文,通过已建立好的连接发送给注册服务器以查询目标服务的服务信息。[0097]在S503中,注册服务器返回所述目标服务的服务信息。[0098]在S504中,本地服务器接收所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接。[0099]在S505中,本地服务器向所述远程服务器发送服务请求报文。[0100]在S506中,远程服务器接收所述服务请求报文。[0101]在S507中,远程服务器解析所述服务请求报文,获取业务数据,并通过所述目标服务处理所述业务数据,得到服务调用结果。[0102]将服务请求报文解包得到字符串形式的业务数据。[0103]将所述业务数据进行反序列化处理,得到远程服务器可直接处理的业务数据。[0104]在发明实施例中,将XML字符串的调用结果反序列化处理成DOM对象得到最终的业务数据。[0105]通过所述目标服务处理所述业务数据,得到服务调用结果。[0106]在S508中,远程服务器将所述服务调用结果打包并返回到所述服务请求报文的源服务器。[0107]在S509中,接收所述目标服务所在的远程服务器发送的应答报文;[0108]远程服务器在接收到服务请求报文并处理完数据后,会将处理结果打包进一个应答报文,具体步骤将在远程服务器侧的实施例详细介绍。本地服务器接收这个由远程服务器发送来的应答报文。[0109]在S510中,根据所述应答报文,解析出服务调用结果。[0110]从所述应答报文中解析出业务数据。[0111]将应答报文解包得到字符串形式的调用结果。[0112]将所述业务数据进行反序列化处理,得到服务调用结果。[0113]通过反序列化处理,得到最终的调用结果。[0114]在发明实施例中,将XML字符串的调用结果反序列化处理成DOM对象得到最终的调用结果。[0115]将服务请求报文解包得到字符串形式的调用结果。[0116]将所述业务数据进行反序列化处理,得到服务调用结果。[0117]在发明实施例中,将XML字符串的调用结果反序列化处理成DOM对象得到最终的调用结果。[0118]对应于上文实施例所述的跨平台的服务调用方法本地服务器侧的方法流程,图6示出了本发明实施例提供的跨平台的服务调用方法本地服务器侧的结构框图,该装置包括:[0119]接收模块601,用于接收用户调用目标服务的指令;[0120]检测模块602,用于检测所述目标服务是否为本地服务;[0121]本地调用模块603,若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;[0122]搜索模块604,用于若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;[0123]第一远程调用模块605,用于若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果;[0124]第二远程调用模块606,用于若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果,并且将从所述注册服务器获取的服务信息缓存到所述远程服务列表中。[0125]进一步地,第一远程调用模块包括:[0126]第一报文生成子模块,用于生成服务请求报文;[0127]第一连接子模块,用于根据所述目标服务的服务信息,建立与所述目标服务所在的远程服务器之间的连接;[0128]第一发送子模块,用于将所述服务请求报文发送至所述目标服务所在的远程服务器;[0129]第一接收子模块,用于接收所述目标服务所在的远程服务器发送的应答报文;[0130]第一解析子模块,用于根据所述应答报文,解析出服务调用结果。[0131]进一步地,解析子模块包括:[0132]第一业务数据生成子模块,用于从所述应答报文中解析出业务数据;[0133]第一调用结果生成子模块,用于将所述业务数据进行反序列化处理,得到服务调用结果。[0134]进一步地,第二远程调用模块包括:[0135]第二连接子模块,用于建立与所述注册服务器的连接;[0136]查询子模块,用于向所述注册服务器查询所述目标服务的服务信息;[0137]第三连接子模块,用于接收所述注册服务器返回的所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接;[0138]第二报文生成子模块,用于生成服务请求报文;[0139]第二发送子模块,用于将所述服务请求报文发送至所述目标服务所在的远程服务器;[0M0]第二接收子模块,用于接收所述目标服务所在的远程服务器发送的应答报文;[0141]第二解析子模块,用于根据所述应答报文,解析出服务调用结果。[0142]对应于上文实施例所述的跨平台的服务调用方法远程服务器侧的方法流程,图6示出了本发明实施例提供的跨平台的服务调用方法系统的结构框图,该系统包括:[0143]本地服务器701用于建立与注册服务器的连接;[0144]所述本地服务器还用于向所述注册服务器查询目标服务的服务信息;[0145]所述注册服务器702用于返回所述目标服务的服务信息;[0146]所述本地服务器还用于接收所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接;[0147]所述本地服务器还用于向所述远程服务器发送服务请求报文;[0148]所述远程服务器703用于接收所述服务请求报文;[0149]所述远程服务器还用于解析所述服务请求报文,获取业务数据,并通过所述目标服务处理所述业务数据,得到服务调用结果;[0150]所述远程服务器还用于将所述服务调用结果打包并返回到所述服务请求报文的源服务器。[0151]所述本地服务器接收所述目标服务所在的远程服务器发送的应答报文;[0152]所述本地服务器根据所述应答报文,解析出服务调用结果。[0153]所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0154]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0155]在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。[0156]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0157]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0158]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备可以是个人计算机,服务器,或者网络设备等或处理器processor执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(R〇M,Read_OnlyMemory、随机存取存储器(RAM,RandomAccessMemory、磁碟或者光盘等各种可以存储程序代码的介质。[0159]以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

权利要求:1.一种跨平台的服务调用方法,其特征在于,包括:接收用户调用目标服务的指令;检测所述目标服务是否为本地服务;若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果;若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果,并且将从所述注册服务器获取的服务信息缓存到所述远程服务列表中。2.如权利要求1所述的方法,其特征在于,所述根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果包括:生成服务请求报文;根据所述目标服务的服务信息,建立与所述目标服务所在的远程服务器之间的连接;将所述服务请求报文发送至所述目标服务所在的远程服务器;接收所述目标服务所在的远程服务器发送的应答报文;根据所述应答报文,解析出服务调用结果。3.如权利要求2所述的方法,其特征在于,所述根据所述应答报文,解析出服务调用结果包括:从所述应答报文中解析出业务数据;将所述业务数据进行反序列化处理,得到服务调用结果。4.如权利要求1所述的方法,其特征在于,所述根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果包括:建立与所述注册服务器的连接;向所述注册服务器查询所述目标服务的服务信息;接收所述注册服务器返回的所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接;生成服务请求报文;将所述服务请求报文发送至所述目标服务所在的远程服务器;接收所述目标服务所在的远程服务器发送的应答报文;根据所述应答报文,解析出服务调用结果。5.—种跨平台的服务调用方法,其特征在于,包括:本地服务器建立与注册服务器的连接,向所述注册服务器查询目标服务的服务信息;所述注册服务器返回所述目标服务的服务信息;所述本地服务器接收所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接;并向所述远程服务器发送服务请求报文;所述远程服务器接收所述服务请求报文,解析所述服务请求报文,获取业务数据,并通过所述目标服务处理所述业务数据,得到服务调用结果;所述远程服务器将所述服务调用结果打包并返回到所述服务请求报文的源服务器;所述本地服务器接收所述目标服务所在的远程服务器发送的应答报文,并根据所述应答报文,解析出服务调用结果。6.—种跨平台的服务调用装置,其特征在于,包括:接收模块,用于接收用户调用目标服务的指令;检测模块,用于检测所述目标服务是否为本地服务;本地调用模块,若所述目标服务是本地服务,则从本地服务器直接调用该目标服务;搜索模块,用于若所述目标服务不是本地服务,则从远程服务列表中搜索所述目标服务;第一远程调用模块,用于若所述目标服务在所述远程服务列表中,则根据所述远程服务列表中的所述目标服务的服务信息,从远程服务器调用所述目标服务,获取调用结果;第二远程调用模块,用于若所述目标服务不在所述远程服务列表中,则根据注册服务器提供的服务信息,从远程服务器调用所述目标服务,获取调用结果,并且将从所述注册服务器获取的服务信息缓存到所述远程服务列表中。7.如权利要求6所述的装置,其特征在于,所述第一远程调用模块包括:第一报文生成子模块,用于生成服务请求报文;第一连接子模块,用于根据所述目标服务的服务信息,建立与所述目标服务所在的远程服务器之间的连接;第一发送子模块,用于将所述服务请求报文发送至所述目标服务所在的远程服务器;第一接收子模块,用于接收所述目标服务所在的远程服务器发送的应答报文;第一解析子模块,用于根据所述应答报文,解析出服务调用结果。8.如权利要求7所述的装置,其特征在于,所述解析子模块包括:第一业务数据生成子模块,用于从所述应答报文中解析出业务数据;第一调用结果生成子模块,用于将所述业务数据进行反序列化处理,得到服务调用结果。9.如权利要求6所述的装置,其特征在于,所述第二远程调用模块包括:第二连接子模块,用于建立与所述注册服务器的连接;查询子模块,用于向所述注册服务器查询所述目标服务的服务信息;第三连接子模块,用于接收所述注册服务器返回的所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接;第二报文生成子模块,用于生成服务请求报文;第二发送子模块,用于将所述服务请求报文发送至所述目标服务所在的远程服务器;第二接收子模块,用于接收所述目标服务所在的远程服务器发送的应答报文;第二解析子模块,用于根据所述应答报文,解析出服务调用结果。10.—种跨平台的服务调用装置,其特征在于,包括:本地服务器用于建立与注册服务器的连接,向所述注册服务器查询目标服务的服务信息;所述注册服务器用于返回所述目标服务的服务信息,接收所述服务信息,并根据所述服务信息,建立与所述目标服务所在的远程服务器之间的连接;所述本地服务器还用于向所述远程服务器发送服务请求报文;所述远程服务器用于接收所述服务请求报文,解析所述服务请求报文,获取业务数据,并通过所述目标服务处理所述业务数据,得到服务调用结果;所述远程服务器还用于将所述服务调用结果打包并返回到所述服务请求报文的源服务器;所述本地服务器接收所述目标服务所在的远程服务器发送的应答报文,并根据所述应答报文,解析出服务调用结果。

百度查询: 人谷科技(北京)有限责任公司 跨平台的服务调用方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。