基于集合类型对象的服务程序调用方法、装置及系统 【技术领域】
本发明涉及计算机技术领域,特别涉及一种基于集合类型对象的服务程序调用方法、装置及系统。
背景技术
目前客户端调用服务器上的服务程序是通过接口参数实现的,客户端调用服务程序时,每个接口参数各自作为一个对象被传递到服务器,服务器获得各个接口参数值,执行相应的业务功能。
现有技术的缺点是:
由于业务需求的变化,经常会导致在原有业务功能的基础上增加新的功能或者改进原有的功能,需要增加或者减少原来的接口参数,服务程序的接口函数发生变化,这种修改经常会导致客户端程序与服务程序中大量的代码修改,甚至需要重新编译程序。而且,由于无法确定有多少客户端需要调用服务程序,且不知道各客户端调用服务程序的方式如何,需要对每一客户端进行检查,如果客户端定义的接口参数与服务程序的接口参数个数或者类型不一致,需要修改客户端程序的代码甚至重新编译,增加了运营的成本。
【发明内容】
本发明实施例提供一种基于集合类型对象的服务程序调用方法、装置及系统,使在业务需求发生变化时,不影响服务程序的调用。
有鉴于此,本发明实施例提供:
一种基于集合类型对象的服务程序执行方法,包括:
接收客户端发送的调用请求,从所述调用请求中获得集合类型对象;
将所述集合类型对象还原得到控制参数的值;
根据所得到的控制参数的值,执行控制参数所对应的业务功能。
一种基于集合类型对象的服务程序调用方法,包括:
客户端获得控制参数的值;
根据控制参数和控制参数的值,构造集合类型对象;
发送对服务器上的服务程序的调用请求,所述调用请求中携带所述集合类型对象。
一种服务器,包括:
接收单元,用于接收客户端发送的调用请求;
第一获取单元,用于从所述调用请求中获得集合类型对象;
第二获取单元,用于将所述集合类型对象还原得到控制参数的值;
业务功能执行单元,用于根据所得到的控制参数的值,执行控制参数所对应的业务功能。
一种客户端,包括:
获得单元,用于获得控制参数的值;
构造单元,用于根据控制参数和控制参数的值,构造集合类型对象;
发送单元,用于发送对服务器上的服务程序的调用请求,所述调用请求中携带所述集合类型对象。
一种网络系统,包括:客户端和服务器,
所述客户端,用于获得控制参数的值,根据控制参数和控制参数的值,构造集合类型对象,发送对服务器上的服务程序的调用请求,所述调用请求中携带所述集合类型对象;
所述服务器,用于接收客户端发送的调用请求,从所述调用请求中获得集合类型对象,将所述集合类型对象还原得到控制参数的值,根据所得到的控制参数的值,执行控制参数所对应的业务功能。
本发明实施例中,由于服务程序的接口函数的参数为集合类型参数,这样在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,如果还原得到的控制参数的个数比服务器本地定义的集合类型对象中控制参数的个数多了,则多的控制参数没有相关业务处理;如果还原得到地控制参数的个数比服务器本地定义的集合类型对象中控制参数的个数少了,则少的控制参数对应的业务功能不被执行,因此服务程序能在保证和客户端程序多版本兼容的情况下独立发生变化。
本发明实施例中,由于服务程序的接口函数的参数为集合类型参数,这样在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,客户端只需要在构造集合类型对象时修改、增加或者删除集合类型对象中的某一控制参数即可。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种基于集合类型对象的服务程序调用方法流程图;
图2是本发明实施例二提供的一种基于集合类型对象的服务程序执行方法流程图;
图3是本发明实施例三提供的一种基于集合类型对象的服务程序调用方法流程图;
图4是本发明实施例四提供的服务器结构图;
图5是本发明实施例五提供的客户端结构图;
图6是本发明实施例六提供的网络系统结构图。
【具体实施方式】
实施例一:
参阅图1,本发明实施例一提供一种基于集合类型对象的服务程序调用方法,该方法包括:
101、服务器运行服务程序,等待客户端的调用。
在该步骤之前,已规定服务器与客户端的接口函数的参数为集合类型参数,以及集合类型参数包括的控制参数的个数,以及该接口函数的返回值的类型。后续客户端调用服务程序时,集合类型参数被作为一个集合类型对象传递到服务器。其中,集合类型对象是由多个控制参数组成的集合对象。
该集合类型对象可以是使用COM技术实现的通用的集合类型对象,也可以是C++中的标准模板库(STL)对象、.NET中的System.Collections中的ArrayList、Dictionary等对象,不影响本发明的实现。
具体的,集合类型对象可以是数组对象,也可以是字典对象;
或者,该集合类型对象是一数组对象,数组对象中的每一项为一字典对象;
或者,该集合类型对象是一字典对象,字典对象中的每一项包括名称和该名称对应的参数,其中每个名称所对应的参数是一个数组对象。
采用上述数组对象与字典对象结合的方式,可以表示多种数据结构,例如多维表。
102、客户端构造集合类型对象,向服务器发送对服务程序的调用请求,调用请求中携带集合类型对象。
现举例说明:假定已规定客户端与服务器的接口函数名称为DoCall,调用参数类型为Dictionary,返回值为空。Dictionary中可能包括的具体值BSIGN代表一个布尔型控制参数,INTVALUE是一个整型控制参数;
客户端在调用服务程序时先新建一个Dictionary对象,然后再将″BSIGN″/TRUE″INTVALUE″/100这样两个参数值放到Dictionary对象中,此时,Dictionary对象是这样的:
名称 值
BSIGN TRUE
INTVALUE 100
客户端将调用请求序列化成一个或者几个文件,具体的,客户端按照预定的集合类型对象保存规则将Dictionary对象保存到文件中,然后向服务器发送文件,文件中包括Dictionary对象。其中,预定的集合类型对象保存规则是预先配置在服务器和客户端上的。
103、服务器接收客户端发送的调用请求后,先从调用请求中取出集合类型对象,将集合类型对象还原成控制参数。
续上述实例,服务器接收到调用请求对应的文件后,按照预定的集合类型对象保存规则,对文件进行反寻列化,得到集合类型对象,服务器使用Dictionary对象的取值方法从集合类型对象中取″BSIGN″的值“TRUE”,从中取″INTVALUE″的值“100”,得到两个控制参数。
104、服务器中的服务程序根据不同的控制参数进行相应的业务处理,根据业务处理结果,向客户端返回数据。
如上对本发明实施例一采用的技术方案进行了详细介绍,使服务程序能在保证和客户端程序多版本兼容的情况下独立发生变化,如下举例说明:
假定版本1中规定集合类型对象中包括两个控制参数;到版本2时规定集合类型对象中包括三个控制参数;
则使用版本1的客户端程序调用服务程序时传来的Dictionary对象可能是这样的:
名称 值
1 FALSE
2 100
使用版本2的客户端程序调用服务程序时传来的Dictionary对象可能是这样的:
1 TRUE
2 300
3 ABC
如果服务器采用版本2的服务程序,其接收到Dictionary对象后会自动找各个参数,如果没有找到参数3,就不会执行参数3相关的业务操作,这样版本2的服务程序就能够处理版本1和版本2的客户端程序的调用。如果服务器采用版本1的服务程序,其在处理版本2的客户端程序的调用时,也不会出错,只是没有相关业务处理。
本发明实施例一中,服务程序的接口函数的参数为集合类型参数,在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,客户端程序和服务程序可以独立的修改,但该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,从而使得服务程序能在保证和客户端程序多版本兼容的情况下独立发生变化,而且该服务程序的接口可以在微软平台上通用。
实施例二:
参阅图2,本发明实施例二提供一种基于集合类型对象的服务程序执行方法,该方法从服务器侧描述服务程序的执行过程,该方法包括:
201、服务器接收客户端发送的调用请求,从所述调用请求中获得集合类型对象。
该步骤的具体实现方式可以是:服务器接收客户端传来的调用请求所序列化成的文件,按照预定的集合类型对象保存规则,对所述文件进行反序列化,得到集合类型对象。
其中,预定的集合类型对象保存规则是预先配置在服务器和客户端上的,在该步骤之前,客户端会根据集合类型对象保存规则将所构造的集合类型对象保存到文件中,在该步骤中服务器根据集合类型对象保存规则对文件进行反序列化,得到集合类型对象,保证得到的集合类型对象是客户端构造的集合类型对象。
202、将集合类型对象还原得到控制参数的值。
若客户端传递的集合类型对象是字典对象,则根据字典对象中的控制参数和控制参数的值的对应关系,获得控制参数及控制参数的值;
若客户端传递的集合类型对象是数组对象,则根据预定的数组对象中包含的控制参数的顺序,获取对应的控制参数的值。
203、根据所得到的控制参数的值,执行控制参数所对应的业务功能。
本发明实施例二中,服务程序的接口函数的参数为集合类型参数,服务器将客户端发送的集合类型对象还原得到控制参数的值,执行相应的业务功能,这样,在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,如果服务器还原得到的控制参数的个数比服务器本地定义的集合类型对象中控制参数的个数多了,则多的控制参数没有相关业务处理;如果还原得到的控制参数的个数比服务器本地定义的集合类型对象中控制参数的个数少了,则少的控制参数对应的业务功能不被执行,因此服务程序能在保证和客户端程序多版本兼容的情况下独立发生变化。
实施例三:
参阅图3,本发明实施例三提供一种基于集合类型对象的服务程序调用方法,该方法从客户端侧描述服务程序的调用过程,该方法包括:
301、客户端获得控制参数的值。
302、根据控制参数和控制参数的值,构造集合类型对象。
若集合类型对象是字典对象,则集合类型对象包括:控制参数和该控制参数的值;若所述集合类型对象是数组对象,则集合类型对象包括:按照预定顺序排列的控制参数的值。这个预定顺序是数组对象中包含的控制参数的顺序,在客户端构造数组对象时按照预定顺序排列控制参数的值,在服务器按照该预定顺序获取控制参数的值,服务器就知道哪个值是对应哪个控制参数的。
303、发送对服务器上的服务程序的调用请求,所述调用请求中携带所述集合类型对象。
在该步骤之前,客户端按照预定的集合类型对象保存规则,将集合类型对象保存到调用请求对应的序列化文件中,然后将序列化文件发送到服务器。
本发明实施例三中,服务程序的接口函数的参数为集合类型参数,在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,客户端只需要在构造集合类型对象时修改、增加或者删除集合类型对象中的某一控制参数即可。
实施例四:
参阅图4,本发明实施例四提供一种服务器,其包括:
接收单元401,用于接收客户端发送的调用请求;
第一获取单元402,用于从所述调用请求中获得集合类型对象;
其中,集合类型对象可以是数组对象,也可以是字典对象;
或者,该集合类型对象是一数组对象,数组对象中的每一项为一字典对象;
或者,该集合类型对象是一字典对象,字典对象中的每一项包括名称和该名称对应的参数,其中每个名称所对应的参数是一个数组对象。
第二获取单元403,用于将所述集合类型对象还原得到控制参数的值;其中,具体还原得到控制参数的值的方式参见实施例二的相关描述,在此不再赘述。
业务功能执行单元404,用于根据所得到的控制参数的值,执行控制参数所对应的业务功能。
其中,接收单元401接收的是客户端发送的调用请求所序列化成的文件;此时第一获取单元402具体用于按照预定的集合类型对象保存规则,对所述文件进行反序列化,得到集合类型对象。
本发明实施例四中,服务程序的接口函数的参数为集合类型参数,服务器将客户端发送的集合类型对象还原得到控制参数的值,执行相应的业务功能,这样,在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,如果服务器还原得到的控制参数的个数比服务器本地定义的集合类型对象中控制参数的个数多了,则多的控制参数没有相关业务处理;如果还原得到的控制参数的个数比服务器本地定义的集合类型对象中控制参数的个数少了,则少的控制参数对应的业务功能不被执行,因此服务程序能在保证和客户端程序多版本兼容的情况下独立发生变化。
实施例五:
参阅图5,本发明实施例五提供一种客户端,其包括:
获得单元501,用于获得控制参数的值;
构造单元502,用于根据控制参数和控制参数的值,构造集合类型对象;
其中,集合类型对象可以是数组对象,也可以是字典对象;
或者,该集合类型对象是一数组对象,数组对象中的每一项为一字典对象;
或者,该集合类型对象是一字典对象,字典对象中的每一项包括名称和该名称对应的参数,其中每个名称所对应的参数是一个数组对象。
其中,具体的构造集合类型对象的方式参见实施例三中的相关描述,在此不再赘述。
发送单元503,用于发送对服务器上的服务程序的调用请求,所述调用请求中携带所述集合类型对象。
优选的,该客户端还包括:序列化单元,用于按照预定的集合类型对象保存规则,将集合类型对象保存到调用请求对应的序列化文件中;此时发送单元503,用于发送所述调用请求对应的序列化文件。
本发明实施例五中,服务程序的接口函数的参数为集合类型参数,在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,客户端只需要在构造集合类型对象时修改、增加或者删除集合类型对象中的某一控制参数即可。
实施例六:
参阅图6,本发明实施例六提供一种网络系统,其包括:
客户端601,用于获得控制参数的值,根据控制参数和控制参数的值,构造集合类型对象,发送对服务器上的服务程序的调用请求,所述调用请求中携带所述集合类型对象;
服务器602,用于接收客户端发送的调用请求,从所述调用请求中获得集合类型对象,将所述集合类型对象还原得到控制参数的值,根据所得到的控制参数的值,执行控制参数所对应的业务功能。
本发明实施例六中,服务程序的接口函数的参数为集合类型参数,在业务需求发生变化,需要修改、增加或者删除集合类型对象中的某一控制参数时,客户端程序和服务程序可以独立的修改,但该服务程序的接口函数没有改变,不影响客户端对服务程序的调用,从而使得服务程序能在保证和客户端程序多版本兼容的情况下独立发生变化,而且该服务程序的接口可以在微软平台上通用。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,例如只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的基于集合类型对象的服务程序调用方法及装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。