CN105871911A - 一种服务调用引擎、方法及系统 - Google Patents
一种服务调用引擎、方法及系统 Download PDFInfo
- Publication number
- CN105871911A CN105871911A CN201610388187.6A CN201610388187A CN105871911A CN 105871911 A CN105871911 A CN 105871911A CN 201610388187 A CN201610388187 A CN 201610388187A CN 105871911 A CN105871911 A CN 105871911A
- Authority
- CN
- China
- Prior art keywords
- service
- interface
- described service
- request
- service request
- 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.)
- Pending
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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种服务调用引擎、方法及系统,该服务调用引擎包括:配置单元,用于根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将服务调用引擎配置为目标调用模式;其中,服务调用引擎中包括:至少两种调用模式;至少一个服务接口,用于接收客户端发送的服务请求;连接单元,用于接收目标接口发送的服务请求,并读取配置文件以确定服务调用引擎的目标调用模式,并利用目标调用模式将服务请求发送至服务端,以使服务端对服务请求进行解析调用并反馈调用结果;根据目标接口的数据类型将调用结果进行解析,并将解析后的调用结果通过目标接口发送至客户端。根据本方案,可以提高服务调用引擎的可扩展性。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种服务调用引擎、方法及系统。
背景技术
随着互联网技术的不断发展,ERP(Enterprise Resource Planning,企业资源计划)管理软件越来越得到广泛的应用。然而随着企业管理的模块越来越多,管理业务也越来越复杂,在信息调用时存在分散性、多格式和多结构等差异,往往导致服务的调用无法进行统一,造成服务调用混乱。
目前,可以通过RPC服务调用引擎来实现各个服务的调用,其中的服务被抽象为离散的过程,系统间的互操作通过远程调用过程来实现。
然而,现有的服务调用引擎在构建结束之后,只能够应用于与该服务调用引擎的调用模式相匹配的架构中,因此扩展性能较差。
发明内容
本发明实施例提供了一种服务调用引擎、方法及系统,以提高服务调用引擎的可扩展性。
第一方面,本发明实施例提供了一种服务调用引擎,包括:
配置单元,用于根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将所述服务调用引擎配置为所述目标调用模式;其中,所述服务调用引擎中包括:至少两种调用模式;
至少一个服务接口,用于接收客户端发送的服务请求,并将所述服务请求发送至连接单元;
连接单元,用于接收目标接口发送的所述服务请求,并读取所述配置文件以确定所述服务调用引擎当前的调用模式为所述目标调用模式,并利用所述目标调用模式将所述服务请求发送至所述服务端,以使所述服务端对所述服务请求进行解析调用并反馈调用结果;根据所述目标接口的数据类型将所述调用结果进行解析,并将解析后的所述调用结果通过所述目标接口发送至所述客户端。
优选地,
所述至少两种调用模式包括:本地调用和远程调用;
所述连接单元,具体用于在所述目标调用模式包括本地调用时,利用反射机制将所述服务请求发送至所述服务端;在所述目标调用模式包括远程调用时,将所述服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至所述服务端。
优选地,所述连接单元,进一步用于获取所述服务请求相应的上下文信息,并利用所述上下文信息对所述服务请求进行封装,以利用所述目标调用模式将封装后的所述服务请求发送至所述服务端;其中,所述上下文信息包括:程序集信息、类信息、方法信息和参数信息。
优选地,
所述连接单元,具体用于根据所述服务请求中携带的目标服务标识向所述服务端获取与所述目标服务标识相对应的上下文信息;其中,所述服务端包括多个服务标识和每一个服务标识对应的上下文信息;
或,
所述连接单元,具体用于根据所述服务请求中携带的信息获取上下文信息。
第二方面,本发明实施例还提供了一种基于上述任一所述服务调用引擎实现服务调用的方法,包括:
利用配置单元根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将所述服务调用引擎配置为所述目标调用模式;
利用所述至少一个服务接口中的目标接口接收客户端发送的服务请求,并将所述服务请求发送至连接单元;
利用所述连接单元接收所述服务请求,并读取所述配置文件以确定所述服务调用引擎当前的调用模式为所述目标调用模式,并利用所述目标调用模式将所述服务请求发送至所述服务端,以使所述服务端对所述服务请求进行解析调用并反馈调用结果;根据所述目标接口的数据类型将所述调用结果进行解析,并将解析后的所述调用结果通过所述目标接口发送至所述客户端。
优选地,
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:在所述目标调用模式包括本地调用时,利用所述连接单元通过反射机制将所述服务请求发送至所述服务端;
或,
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:在所述目标调用模式包括远程调用时,将所述服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至所述服务端。
优选地,在所述利用所述目标调用模式将所述服务请求发送至所述服务端之前,进一步包括:利用所述连接单元获取所述服务请求相应的上下文信息,并利用所述上下文信息对所述服务请求进行封装;
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:利用所述目标调用模式将封装后的所述服务请求发送至所述服务端;
其中,所述上下文信息包括:程序集信息、类信息、方法信息和参数信息。
优选地,
所述获取所述服务请求相应的上下文信息,包括:根据所述服务请求中携带的目标服务标识,向所述服务端获取与所述目标服务标识相对应的上下文信息;其中,所述服务端包括:多个服务标识和每一个服务标识对应的上下文信息;
或,
所述获取所述服务请求相应的上下文信息,包括:根据所述服务请求中携带的信息获取上下文信息。
优选地,
所述服务调用引擎提供的服务包括:针对RESTFul资源的服务和针对Invoke资源的服务;
在所述服务调用引擎用于提供针对RESTFul资源的服务时,所述服务接口包括:string接口、object接口和<T>接口中的至少一个;其中,
在所述目标接口为string接口时,将所述调用结果的格式解析为string类型;
在所述目标接口为object接口时,将所述调用结果的格式解析为object类型;
在所述目标接口为<T>接口时,将所述调用结果的格式解析为泛型;
在所述服务调用引擎用于提供针对Invoke资源的服务时,所述服务接口包括:Invoke接口、Invoke<T>接口、InvokeCustom<T>接口和InvokeStream接口中的至少一个;其中,
在所述目标接口为Invoke接口时,将所述调用结果的格式解析为string类型或序列化的字符串;
在所述目标接口为Invoke<T>接口时,将所述调用结果的格式解析为泛型;
在所述目标接口为InvokeCustom<T>接口时,将所述调用结果的格式解析为自定义序列化类型;
在所述目标接口为InvokeStream接口时,将所述调用结果的格式解析为流格式。
第三方面,本发明实施例还提供了一种服务调用系统,包括:客户端、服务端和上述任一所述的服务调用引擎;其中,
所述客户端,用于向所述服务调用引擎发送服务请求,并接收所述服务调用引擎返回的调用结果;
所述服务端,用于接收所述服务调用引擎发送的所述服务请求,并对所述服务请求进行解析并调用,将调用结果发送所述服务调用引擎。
本发明实施例提供了一种服务调用引擎、方法及系统,通过在服务调用引擎中构建至少两种调用模式,当利用服务调用引擎对客户端与服务端之间实现服务调用时,可以根据客户端与服务端之间的调用模式,对服务调用引擎的调用模式进行配置,以使服务调用引擎的调用模式与客户端与服务端之间的调用模式相同,在接收到客户端发送的服务请求时,通过读取配置文件以确定服务调用引擎当前的调用模式,并根据该当前的调用模式将服务请求发送给服务端,以实现服务调用,当客户端与服务端之间的调用模式发生变化时,也可以通过配置配置文件,对服务调用引擎的调用模式进行配置,从而提高了服务调用引擎的可扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种服务调用引擎结构示意图;
图2是本发明一个实施例提供的一种方法流程图;
图3是本发明一个实施例提供的一种服务调用系统结构示意图;
图4是本发明一个实施例提供的另一种方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种服务调用引擎,该服务调用引擎可以包括以下内容:
配置单元101,用于根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将所述服务调用引擎配置为所述目标调用模式;其中,所述服务调用引擎中包括:至少两种调用模式;
至少一个服务接口102,用于接收客户端发送的服务请求,并将所述服务请求发送至连接单元;
连接单元103,用于接收目标接口发送的所述服务请求,并读取所述配置文件以确定所述服务调用引擎当前的调用模式为所述目标调用模式,并利用所述目标调用模式将所述服务请求发送至所述服务端,以使所述服务端对所述服务请求进行解析调用并反馈调用结果;根据所述目标接口的数据类型将所述调用结果进行解析,并将解析后的所述调用结果通过所述目标接口发送至所述客户端。
根据上述方案,通过在服务调用引擎中构建至少两种调用模式,当利用服务调用引擎对客户端与服务端之间实现服务调用时,可以根据客户端与服务端之间的调用模式,对服务调用引擎的调用模式进行配置,以使服务调用引擎的调用模式与客户端与服务端之间的调用模式相同,在接收到客户端发送的服务请求时,通过读取配置文件以确定服务调用引擎当前的调用模式,并根据该当前的调用模式将服务请求发送给服务端,以实现服务调用,当客户端与服务端之间的调用模式发生变化时,也可以通过配置配置文件,对服务调用引擎的调用模式进行配置,从而提高了服务调用引擎的可扩展性。
在本发明一个实施例中,为了可以实现服务调用引擎中不同调用模式的切换,需要在构建服务调用引擎时,在服务调用引擎中构建至少两种调用模式,所述至少两种调用模式可以包括:本地调用和远程调用;
所述连接单元,具体用于在所述目标调用模式包括本地调用时,利用反射机制将所述服务请求发送至所述服务端;在所述目标调用模式包括远程调用时,将所述服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至所述服务端。
其中,若需要服务调用引擎需要提供其他调用模式的服务,也可以将相应服务的调用模式构建在该服务调用引擎中。例如,UDP(User DatagramProtocol,用户数据报协议)调用模式。
通过上述多个调用模式的构建,可以根据客户端与服务端之间的调用模式,可以对服务调用引擎的调用模式进行动态切换,从而可以提高服务调用引擎的可扩展性。
在本发明一个实施例中,为了保证服务调用引擎、服务端可以识别该服务请求,该连接单元,进一步用于获取所述服务请求相应的上下文信息,并利用所述上下文信息对所述服务请求进行封装,以利用所述目标调用模式将封装后的所述服务请求发送至所述服务端;其中,所述上下文信息包括:程序集信息、类信息、方法信息和参数信息。
在本发明一个实施例中,该连接单元获取服务请求相应的上下文信息时,可以通过如下一种方式来实现:由客户端在发送服务请求时,将服务请求的上下文信息携带在服务请求中,连接单元通过对服务请求进行解析,以获取该上下文信息。
在本发明一个实施例中,为了提高客户端在发送服务请求过程中的安全性能,该连接单元在获取服务请求相应的上下文信息时,可以通过如下一种方式来获得:预先在服务端注册多个服务标识,以及每一个服务标识对应的上下文信息;客户端向服务调用引擎发送的服务请求中只携带服务标识,服务调用引擎根据该服务标识向服务端获取相应的上下文信息。
请参考图2,本发明实施例还提供了一种基于上述实施例中任一所述服务调用引擎实现服务调用的方法,该方法可以包括以下步骤:
步骤201:利用配置单元根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将所述服务调用引擎配置为所述目标调用模式;
步骤202:利用所述至少一个服务接口中的目标接口接收客户端发送的服务请求,并将所述服务请求发送至连接单元;
步骤203:利用所述连接单元接收所述服务请求,并读取所述配置文件以确定所述服务调用引擎当前的调用模式为所述目标调用模式,并利用所述目标调用模式将所述服务请求发送至所述服务端,以使所述服务端对所述服务请求进行解析调用并反馈调用结果;根据所述目标接口的数据类型将所述调用结果进行解析,并将解析后的所述调用结果通过所述目标接口发送至所述客户端。
根据上述方案,通过在服务调用引擎中构建至少两种调用模式,当利用服务调用引擎对客户端与服务端之间实现服务调用时,可以根据客户端与服务端之间的调用模式,对服务调用引擎的调用模式进行配置,以使服务调用引擎的调用模式与客户端与服务端之间的调用模式相同,在接收到客户端发送的服务请求时,通过读取配置文件以确定服务调用引擎当前的调用模式,并根据该当前的调用模式将服务请求发送给服务端,以实现服务调用,当客户端与服务端之间的调用模式发生变化时,也可以通过配置配置文件,对服务调用引擎的调用模式进行配置,从而提高了服务调用引擎的可扩展性。
在本发明一个实施例中,为了满足客户端与服务端之间的调用模式,在服务调用引擎向服务端发送服务请求时,可以通过如下方式实现:
在所述目标调用模式包括本地调用时,利用所述连接单元通过反射机制将所述服务请求发送至所述服务端;
或,
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:在所述目标调用模式包括远程调用时,将所述服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至所述服务端。
在本发明一个实施例中,为了保证服务调用引擎、服务端可以识别该服务请求,在所述利用所述目标调用模式将所述服务请求发送至所述服务端之前,进一步包括:利用所述连接单元获取所述服务请求相应的上下文信息,并利用所述上下文信息对所述服务请求进行封装;
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:利用所述目标调用模式将封装后的所述服务请求发送至所述服务端;
其中,所述上下文信息包括:程序集信息、类信息、方法信息和参数信息。
在本发明一个实施例中,可以通过如下方式获取服务请求相应的上下文信息:根据所述服务请求中携带的信息获取上下文信息。
在本发明一个实施例中,为了提高客户端在发送服务请求过程中的安全性能,该连接单元在获取服务请求相应的上下文信息时,可以通过如下一种方式来获得:根据所述服务请求中携带的目标服务标识,向所述服务端获取与所述目标服务标识相对应的上下文信息;其中,所述服务端包括:多个服务标识和每一个服务标识对应的上下文信息。
在本发明一个实施例中,该服务调用引擎至少可以提供针对RESTFul资源的服务和针对Invoke资源的服务。
其中,在所述服务调用引擎用于提供针对RESTFul资源的服务时,所述服务接口包括:string接口、object接口和<T>接口中的至少一个;其中,
在所述目标接口为string接口时,将所述调用结果的格式解析为string类型;
在所述目标接口为object接口时,将所述调用结果的格式解析为object类型;
在所述目标接口为<T>接口时,将所述调用结果的格式解析为泛型;
其中,在所述服务调用引擎用于提供针对Invoke资源的服务时,所述服务接口包括:Invoke接口、Invoke<T>接口、InvokeCustom<T>接口和InvokeStream接口中的至少一个;其中,
在所述目标接口为Invoke接口时,将所述调用结果的格式解析为string类型或序列化的字符串;
在所述目标接口为Invoke<T>接口时,将所述调用结果的格式解析为泛型;
在所述目标接口为InvokeCustom<T>接口时,将所述调用结果的格式解析为自定义序列化类型;
在所述目标接口为InvokeStream接口时,将所述调用结果的格式解析为流格式。
请参考图3,本发明实施例还提供了一种服务调用系统,该服务调用系统可以包括:客户端20、服务端30和上述任一所述的服务调用引擎10;其中,
所述客户端20,用于向所述服务调用引擎10发送服务请求,并接收所述服务调用引擎10返回的调用结果;
所述服务端30,用于接收所述服务调用引擎10发送的所述服务请求,并对所述服务请求进行解析并调用,将调用结果发送所述服务调用引擎10。
下面结合上述服务调用系统,对服务调用的实现方法进行详细说明。
如图4所示,本发明实施例提供了一种实现服务调用的方法,该方法可以包括以下步骤:
步骤401:构建服务调用引擎,其中,构建的该服务调用引擎包括至少两种调用模式。
其中,该服务调用引擎包括的调用模式至少可以包括如下几种调用模式的两种:本地调用(Local)、远程调用(Remote)和UDP调用。
步骤402:确定客户端与服务端之间的目标调用模式,根据目标调用模式将服务调用引擎中的配置文件进行配置,以使服务调用引擎的调用模式配置为目标调用模式。
若客户端与服务端均设置在同一台机器上,那么客户端与服务端之间的目标调用模式为本地调用;
若客户端与服务端为独立的两个设备,且服务端位于远端,那么客户端与服务端之间的目标调用模式为远程调用。
在本实施例中,可以配置如下配置文件:
对于配置文件中对调用模式的配置,可以预先约定不同调用模式的识别标识,例如,Value="http"时,用于表征远程调用方式;Value="local"时,用于表征本地调用方式。
因此,在根据客户端与服务端之间的调用方式对配置文件进行配置时,可以对配置文件中的Value值进行配置。
步骤403:客户端(Client)向服务调用引擎发送服务请求。
步骤404:服务调用引擎利用目标接口(Client Service)接收该服务请求,并将该服务请求发送至连接单元(Connection Factory)。
在本实施例中,服务调用引擎可以构建至少一个服务接口,其中,该至少一个服务接口可以对外至少提供如下两类服务:RESTFul资源的服务和Invoke资源的服务。
其中,针对RESTFul资源的服务时,可以提供如下方法列表:
GetString:提供资源的获取方法,调用结果为string类型;
GetObject:提供资源的获取方法,调用结果为object;
Get<T>:提供资源的获取方法,调用结果为泛型;
PutString:提供资源的更新方法,调用结果为string;
PutObject:提供资源的更新方法,调用结果为object;
Put<T>:提供资源的更新方法,调用结果为泛型;
PostString:提供资源的新增方法,调用结果为string;
PostObject:提供资源的新增方法,调用结果为object;
Post<T>:提供资源的新增方法,调用结果为泛型;
DeleteString:提供资源的删除方法,调用结果为string;
DeleteObject:提供资源的删除方法,调用结果为object;
Delete<T>:提供资源的删除方法,调用结果为泛型;
DoString:提供对资源的其他操作方法,调用结果为string;
DoObject:提供对资源的其他操作方法,调用结果为object;
Do<T>:提供对资源的其他操作方法,调用结果为泛型。
其中,针对Invoke资源的服务时,可以提供如下方法列表:
Invoke:提供反射调用方法,此方法适用方法的参数是string类型或者序列化好的字符串,调用结果是string或者序列化好的字符串;
Invoke<T>:提供反射调用方法,此方法适用方法参数支持JSON序列化的,调用结果为泛型的情况;
InvokeCustom<T>:提供反射调用方法,此方法适用于参数或者调用结果需要自定义序列化的情况;
InvokeStream:提供流的调用方法,此方法适用于服务端数据量比较大,可以采用流式传输的情况。
步骤405:Connection Factory读取配置文件,以获知该服务调用引擎当前的调用模式,其中,该当前的调用模式为目标调用模式。
步骤406:Connection Factory调用连接管理单元(Connection Manager)获取目标调用模式的调用逻辑。
步骤407:Connection Factory根据目标调用模式的调用逻辑获取服务请求对应的上下文信息,并利用上下文信息对服务请求进行封装。
在本实施例中,上下文的获取可以通过如下两种方式:
在本实施例中,至少可以通过如下两种方式获取服务请求相应的上下文信息:
1、根据服务请求中携带的信息获取上下文信息。
2、根据服务请求中携带的目标服务标识,向服务端获取与目标服务标识相对应的上下文信息;其中,服务端包括:多个服务标识和每一个服务标识对应的上下文信息。
其中,该上下文信息可以包括:程序集信息、类信息、方法信息和参数信息等。另外,对于程序运行所需的上下文信息还可以包括:登录的Session信息、登录实例信息等。
其中,程序集信息主要用来让服务调用引擎知道需要调用的程序集信息;类信息主要用来让服务调用引擎知道要调用的类信息;方法信息主要用来让服务调用引擎知道要调用的方法信息;参数信息主要用来让服务调用引擎知道调用参数的信息。
步骤408:判断目标调用模式,在目标调用模式包括本地调用时,执行步骤409;在目标调用模式包括远程调用时,执行步骤410。
步骤409:Connection Factory通过反射机制将封装后的服务请求发送至服务端(Server Handler),执行步骤411。
其中,Local调用方式是通过本地调用,不依赖于IIS(Internet InformationServices,互联网信息服务)。
步骤410:Connection Factory将封装后的服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至Server Handler,执行步骤411。
其中,Remote调用方式是通过Http调用,依赖IIS。
步骤411:Server Handler对接收到的服务请求进行解析,并根据解析结果调用各个具体的实现,在具体实现执行完成之后,将调用结果发送给Connection Factory。
对于不同的调用方式,Server Handler需要进行不同的解析。对于Local调用方式是接收反射的服务请求,并根据该服务请求调用具体服务的实现。对于Remote调用方式则是解析Http的Http请求流。
步骤412:Connection Factory根据目标接口的数据类型,将调用结果将调用结果进行解析,并将解析后的调用结果通过目标接口发送给Client。
例如,该目标接口的数据类型为string类型,且服务请求用于获取资源,那么对该调用结果进行解析,以保证该解析后的调用结果的格式为string类型。
在本实施例中,对于将调用结果发送给Client的方式也需要根据调用模式来确定,例如,对于Local调用模式是通过反射将调用结果返回给Client,对于Remote调用模式是通过将调用结果封装到Reponse中返回给Client。
步骤413:Client对调用结果进行解析。
综上,本发明各个实施例至少可以实现如下有益效果:
1、在本发明实施例中,通过在服务调用引擎中构建至少两种调用模式,当利用服务调用引擎对客户端与服务端之间实现服务调用时,可以根据客户端与服务端之间的调用模式,对服务调用引擎的调用模式进行配置,以使服务调用引擎的调用模式与客户端与服务端之间的调用模式相同,在接收到客户端发送的服务请求时,通过读取配置文件以确定服务调用引擎当前的调用模式,并根据该当前的调用模式将服务请求发送给服务端,以实现服务调用,当客户端与服务端之间的调用模式发生变化时,也可以通过配置配置文件,对服务调用引擎的调用模式进行配置,从而提高了服务调用引擎的可扩展性。
2、在本发明实施例中,通过预先在服务端注册各个服务标识和上下文信息的对应关系,客户端在向服务调用引擎发送服务请求时,该服务请求可以只携带服务标识,服务调用引擎可以根据该服务标识去服务端获取相应的上下文信息,从而可以保证客户端与服务调用引擎之间数据传输的安全性。
3、在本发明实施例中,可以基于REST的服务设计,采用配置的形式,动态的实现服务的切换,可以使得调用者在不改变任何代码的前提下,能够自由的切换服务的调用方式,降低了开发者理解服务的难度,扩大了服务调用引擎的适用性。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种服务调用引擎,其特征在于,包括:
配置单元,用于根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将所述服务调用引擎配置为所述目标调用模式;其中,所述服务调用引擎中包括:至少两种调用模式;
至少一个服务接口,用于接收客户端发送的服务请求,并将所述服务请求发送至连接单元;
连接单元,用于接收目标接口发送的所述服务请求;并读取所述配置文件,以确定所述服务调用引擎当前的调用模式为所述目标调用模式;并利用所述目标调用模式将所述服务请求发送至所述服务端,以使所述服务端对所述服务请求进行解析调用并反馈调用结果;根据所述目标接口的数据类型将所述调用结果进行解析;并将解析后的所述调用结果通过所述目标接口发送至所述客户端。
2.根据权利要求1所述的服务调用引擎,其特征在于,
所述至少两种调用模式包括:本地调用和远程调用;
所述连接单元,具体用于在所述目标调用模式包括本地调用时,利用反射机制将所述服务请求发送至所述服务端;在所述目标调用模式包括远程调用时,将所述服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至所述服务端。
3.根据权利要求1或2所述的服务调用引擎,其特征在于,所述连接单元,进一步用于获取所述服务请求相应的上下文信息,并利用所述上下文信息对所述服务请求进行封装,以利用所述目标调用模式将封装后的所述服务请求发送至所述服务端;其中,所述上下文信息包括:程序集信息、类信息、方法信息和参数信息。
4.根据权利要求3所述的服务调用引擎,其特征在于,
所述连接单元,具体用于根据所述服务请求中携带的目标服务标识向所述服务端获取与所述目标服务标识相对应的上下文信息;其中,所述服务端包括多个服务标识和每一个服务标识对应的上下文信息;
或,
所述连接单元,具体用于根据所述服务请求中携带的信息获取上下文信息。
5.一种基于上述权利要求1-4中任一所述服务调用引擎实现服务调用的方法,其特征在于,包括:
利用配置单元根据客户端与服务端之间的目标调用模式,对配置文件进行配置,以将所述服务调用引擎配置为所述目标调用模式;
利用所述至少一个服务接口中的目标接口接收客户端发送的服务请求,并将所述服务请求发送至连接单元;
利用所述连接单元接收所述服务请求,并读取所述配置文件以确定所述服务调用引擎当前的调用模式为所述目标调用模式,并利用所述目标调用模式将所述服务请求发送至所述服务端,以使所述服务端对所述服务请求进行解析调用并反馈调用结果;根据所述目标接口的数据类型将所述调用结果进行解析,并将解析后的所述调用结果通过所述目标接口发送至所述客户端。
6.根据权利要求1所述的方法,其特征在于,
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:在所述目标调用模式包括本地调用时,利用所述连接单元通过反射机制将所述服务请求发送至所述服务端;
或,
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:在所述目标调用模式包括远程调用时,将所述服务请求以二进制的形式写入Http请求流中,并将Http请求流发送至所述服务端。
7.根据权利要求5所述的方法,其特征在于,在所述利用所述目标调用模式将所述服务请求发送至所述服务端之前,进一步包括:利用所述连接单元获取所述服务请求相应的上下文信息,并利用所述上下文信息对所述服务请求进行封装;
所述利用所述目标调用模式将所述服务请求发送至所述服务端,包括:利用所述目标调用模式将封装后的所述服务请求发送至所述服务端;
其中,所述上下文信息包括:程序集信息、类信息、方法信息和参数信息。
8.根据权利要求7所述的方法,其特征在于,
所述获取所述服务请求相应的上下文信息,包括:根据所述服务请求中携带的目标服务标识,向所述服务端获取与所述目标服务标识相对应的上下文信息;其中,所述服务端包括:多个服务标识和每一个服务标识对应的上下文信息;
或,
所述获取所述服务请求相应的上下文信息,包括:根据所述服务请求中携带的信息获取上下文信息。
9.根据权利要求5-8中任一所述的方法,其特征在于,
所述服务调用引擎提供的服务包括:针对RESTFul资源的服务和针对Invoke资源的服务;
在所述服务调用引擎用于提供针对RESTFul资源的服务时,所述服务接口包括:string接口、object接口和<T>接口中的至少一个;其中,
在所述目标接口为string接口时,将所述调用结果的格式解析为string类型;
在所述目标接口为object接口时,将所述调用结果的格式解析为object类型;
在所述目标接口为<T>接口时,将所述调用结果的格式解析为泛型;
在所述服务调用引擎用于提供针对Invoke资源的服务时,所述服务接口包括:Invoke接口、Invoke<T>接口、InvokeCustom<T>接口和InvokeStream接口中的至少一个;其中,
在所述目标接口为Invoke接口时,将所述调用结果的格式解析为string类型或序列化的字符串;
在所述目标接口为Invoke<T>接口时,将所述调用结果的格式解析为泛型;
在所述目标接口为InvokeCustom<T>接口时,将所述调用结果的格式解析为自定义序列化类型;
在所述目标接口为InvokeStream接口时,将所述调用结果的格式解析为流格式。
10.一种服务调用系统,其特征在于,包括:客户端、服务端和上述权利要求1-4中任一所述的服务调用引擎;其中,
所述客户端,用于向所述服务调用引擎发送服务请求,并接收所述服务调用引擎返回的调用结果;
所述服务端,用于接收所述服务调用引擎发送的所述服务请求,并对所述服务请求进行解析并调用,将调用结果发送所述服务调用引擎。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610388187.6A CN105871911A (zh) | 2016-06-02 | 2016-06-02 | 一种服务调用引擎、方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610388187.6A CN105871911A (zh) | 2016-06-02 | 2016-06-02 | 一种服务调用引擎、方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105871911A true CN105871911A (zh) | 2016-08-17 |
Family
ID=56675832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610388187.6A Pending CN105871911A (zh) | 2016-06-02 | 2016-06-02 | 一种服务调用引擎、方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105871911A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106961339A (zh) * | 2017-03-24 | 2017-07-18 | 网宿科技股份有限公司 | 实现定向流量的方法及系统 |
CN107168729A (zh) * | 2017-04-11 | 2017-09-15 | 深圳市艾数信息技术有限公司 | 一种服务的调用方法和系统 |
CN108536522A (zh) * | 2018-04-12 | 2018-09-14 | 江南大学 | 一种智能表单应用方法及系统 |
CN108647102A (zh) * | 2018-05-11 | 2018-10-12 | 阿里巴巴集团控股有限公司 | 异构系统的服务请求处理方法、装置和电子设备 |
CN108694120A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 测试服务组件的方法和装置 |
CN109298958A (zh) * | 2018-10-26 | 2019-02-01 | 恒生电子股份有限公司 | 服务的调用方法及相关系统 |
CN111198806A (zh) * | 2019-12-17 | 2020-05-26 | 航天信息股份有限公司 | 一种基于服务开放平台的服务调用数据统计分析方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101764837A (zh) * | 2009-12-23 | 2010-06-30 | 宁波东海蓝帆科技有限公司 | 一种Web服务动态调用系统及调用方法 |
US20130290397A1 (en) * | 2000-11-02 | 2013-10-31 | Guy Pardon | Decentralized, distributed internet data management |
CN103699367A (zh) * | 2012-09-27 | 2014-04-02 | 中国电信股份有限公司 | Http应用程序接口调用方法与装置 |
CN104142856A (zh) * | 2013-05-07 | 2014-11-12 | 华为技术有限公司 | 服务程序调用方法、系统及其智能设备 |
-
2016
- 2016-06-02 CN CN201610388187.6A patent/CN105871911A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290397A1 (en) * | 2000-11-02 | 2013-10-31 | Guy Pardon | Decentralized, distributed internet data management |
CN101764837A (zh) * | 2009-12-23 | 2010-06-30 | 宁波东海蓝帆科技有限公司 | 一种Web服务动态调用系统及调用方法 |
CN103699367A (zh) * | 2012-09-27 | 2014-04-02 | 中国电信股份有限公司 | Http应用程序接口调用方法与装置 |
CN104142856A (zh) * | 2013-05-07 | 2014-11-12 | 华为技术有限公司 | 服务程序调用方法、系统及其智能设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106961339A (zh) * | 2017-03-24 | 2017-07-18 | 网宿科技股份有限公司 | 实现定向流量的方法及系统 |
CN107168729A (zh) * | 2017-04-11 | 2017-09-15 | 深圳市艾数信息技术有限公司 | 一种服务的调用方法和系统 |
CN108694120A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 测试服务组件的方法和装置 |
CN108694120B (zh) * | 2017-04-12 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 测试服务组件的方法和装置 |
CN108536522A (zh) * | 2018-04-12 | 2018-09-14 | 江南大学 | 一种智能表单应用方法及系统 |
CN108647102A (zh) * | 2018-05-11 | 2018-10-12 | 阿里巴巴集团控股有限公司 | 异构系统的服务请求处理方法、装置和电子设备 |
CN108647102B (zh) * | 2018-05-11 | 2022-05-13 | 创新先进技术有限公司 | 异构系统的服务请求处理方法、装置和电子设备 |
CN109298958A (zh) * | 2018-10-26 | 2019-02-01 | 恒生电子股份有限公司 | 服务的调用方法及相关系统 |
CN111198806A (zh) * | 2019-12-17 | 2020-05-26 | 航天信息股份有限公司 | 一种基于服务开放平台的服务调用数据统计分析方法及系统 |
CN111198806B (zh) * | 2019-12-17 | 2024-04-05 | 航天信息股份有限公司 | 基于服务开放平台的服务调用数据统计分析方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105871911A (zh) | 一种服务调用引擎、方法及系统 | |
US9923893B2 (en) | Simplified IoT services for cloud environments | |
US9311171B1 (en) | Execution of end-to-end-processes across applications | |
US8291047B2 (en) | Screen scraping interface | |
US8504989B2 (en) | Service definition document for providing blended services utilizing multiple service endpoints | |
US9038082B2 (en) | Resource abstraction via enabler and metadata | |
US8843877B2 (en) | Integrated SOA deployment and management system and method for software services | |
US11635974B2 (en) | Providing a different configuration of added functionality for each of the stages of predeployment, deployment, and post deployment using a layer of abstraction | |
US20120124133A1 (en) | Active business client | |
US11797273B2 (en) | System and method for enhancing component based development models with auto-wiring | |
US20120233588A1 (en) | Blended service creation, test, and deployment environment for multiple service endpoints | |
US20130261611A1 (en) | Modular Diagnostic Instrument Workstation Architecture and Method | |
US9747353B2 (en) | Database content publisher | |
Beckmann et al. | sDDS: A portable data distribution service implementation for WSN and IoT platforms | |
CN108664385A (zh) | 一种应用程序编程接口的测试方法及装置 | |
US20220214931A1 (en) | System and method for exposing features of integration platform adapters as first-class actions in an orchestration template | |
Cheng et al. | LSMP: A lightweight service mashup platform for ordinary users | |
CN115248692A (zh) | 一种支持多种深度学习框架模型云端部署的装置及方法 | |
CN114240382A (zh) | 基于结构化流程模板的流程实例生成方法及装置 | |
US11989558B2 (en) | Automatic generation of a cloud integration adapter from a standard, programming language-agnostic interface specification | |
Cavallaro et al. | Satisfying requirements for pervasive service compositions | |
US20070112793A1 (en) | Model publishing framework | |
Höfig | Interpretation of behaviour models at runtime: performance benchmark and case studies | |
Cortez et al. | Virtual model‐view‐controller design pattern: Extended MVC for service‐oriented architecture | |
WO2022205013A1 (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160817 |