CN102209076B - 服务端与客户端之间的交互方法和交互系统 - Google Patents

服务端与客户端之间的交互方法和交互系统 Download PDF

Info

Publication number
CN102209076B
CN102209076B CN201110149675.9A CN201110149675A CN102209076B CN 102209076 B CN102209076 B CN 102209076B CN 201110149675 A CN201110149675 A CN 201110149675A CN 102209076 B CN102209076 B CN 102209076B
Authority
CN
China
Prior art keywords
client
service end
wcf
serializing
return value
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
Application number
CN201110149675.9A
Other languages
English (en)
Other versions
CN102209076A (zh
Inventor
滕石松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
You Pu Information Technology Co., Ltd of UFSOFT
Original Assignee
Yonyou Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yonyou Software Co Ltd filed Critical Yonyou Software Co Ltd
Priority to CN201110149675.9A priority Critical patent/CN102209076B/zh
Publication of CN102209076A publication Critical patent/CN102209076A/zh
Application granted granted Critical
Publication of CN102209076B publication Critical patent/CN102209076B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供了一种交互方法和系统,方法包括:客户端代理接收调用信息和参数集合,客户端序列化器将参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的参数集合和调用信息发送至WCF客户端,其将参数集合和调用信息发送至WCF服务端;当服务端代理接收到参数集合和调用信息时,其获取业务类方法的参数类型列表,并调用服务端序列化器将经过序列化处理的参数集合进行反序列化处理为参数集合,通过反射技术调用业务类方法,将参数集合传递至业务类方法,获取执行业务类方法的返回值并将返回值发送至WCF服务端;WCF服务端将返回值发送至WCF客户端,其将返回值发送至客户端代理,最后将返回值传送至客户端。实现了WCF服务与数据类、业务类的分离。

Description

服务端与客户端之间的交互方法和交互系统
技术领域
本发明涉及基于WCF服务的交互技术,具体而言,涉及服务端与客户端之间的交互方法和交互系统。
背景技术
Silverlight逐渐成为开发客户端的主流技术之一,作为Silverlight客户端与.net服务端交互的基础,WCF(Windows CommunicationFoundation)服务的应用也越来越广泛。
图1示出了WCF服务的示意图。如图1所示,要想通过WCF服务实现Silverlight客户端与.net服务端之间的交互,就必须创建WCF服务端与WCF客户端。
为方便理解,可以将客户端与服务端之间的交互比作打电话,此时,WCF服务相当于电话线,WCF服务端与WCF客户端相当于两部电话,Silverlight客户端相当于发出指令的人,而.net服务端相当于接收指令、执行动作并报告执行结果的人。
具体的交互过程为:WCF客户端接收Silverlight客户端发出的指令,通过WCF服务将该指令信息传递给WCF服务端,WCF服务端有将该指令信息传递给.net服务端;.net服务端收到指令信息后执行相应的动作,然后将执行的结果传递给WCF服务端,WCF服务端通过WCF服务将执行结果传递给WCF客户端,最终传递给Silverlight客户端。
对Silverlight客户端而言,.net服务端有两种对象最重要:数据类、业务类。数据类用于保存业务涉及的信息,例如:可以定义一个数据类“加班单”,该数据类的对象(实例)记录了加班的人员、加班日期、加班小时数等信息。而业务类定义了实现某种业务(或操作)的方法,例如:可以定义“加班单管理类”,调用该类(或该类的对象)的某些方法,可以实现对数据库中加班单记录的增加、删除、修改、查询操作。
业务类与数据类应用举例:Silverlight客户端通过WCF服务调用.net服务端的“加班单管理类”(或该类的对象)的方法,从数据库中查询加班单信息,并组织成“加班单”数据类对象,通过WCF服务返回给Silverlight客户端。Silverlight客户端将加班单展示给用户,用户修改加班单的内容,点击“保存”按钮进行保存操作。保存时Silverlight客户端将修改后的“加班单”数据类对象通过WCF服务传递给.net服务端的“加班单管理类”的方法(或该类的对象),“加班单管理类”的方法将“加班单”数据类对象所代表的加班单信息存入数据库中。
图2是WCF服务中服务契约与数据契约声明的示意图,如图2所示,实现WCF服务,有两个必要条件:
1.WCF服务只能调用声明为服务契约的业务类,也就是说:如果Silverlight客户端希望访问.net服务端的某个业务类的方法,则必须将该业务类声明为服务契约,并写入WCF服务端和WCF客户端的代码中。
2.WCF服务只能传递标准数据类型(例如整型、字符串等)或声明为数据契约的数据类,也就是说:如果希望通过WCF服务传递某种数据类,则必须将该数据类声明为数据契约,并写入WCF服务端和客户端的代码中。
而这两个必要条件给开发工作带来很大的不便:
系统稳定性差:当增加、修改业务类或数据类时,需要相应的修改WCF服务端和WCF客户端的服务契约或数据契约,反复修改导致WCF服务的稳定性变差。
系统可扩展性差:如果某产品从C/S架构转换为B/S架构,此时系统的服务端有大量的业务类、数据类,不可能为所有的业务类、数据类定义服务契约、数据契约。因此,开发WCF服务时要确定一个范围,Silverlight客户端只能访问/传递该范围内的业务类、数据类。当要访问/传递的业务类、数据类在该范围之外时,则必须修改WCF服务端、WCF客户端以增加相应的服务契约、数据契约,导致系统的可扩展性差。
为了增加系统的稳定性和可扩展性,需要一种基于WCF服务的交互技术。
发明内容
本发明关于基于WCF服务的交互技术,可以适用于以WCF服务为交互基础的各种系统。
在此描述的一个方面提供一种基于WCF服务的服务端与客户端之间的交互方法,包括:步骤302,客户端代理接收来自客户端的调用信息和参数集合,调用客户端序列化器将参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的参数集合和调用信息发送至WCF客户端,WCF客户端通过WCF服务将经过序列化处理的参数集合和调用信息发送至WCF服务端,其中,调用信息为标准数据类型格式的数据;步骤304,当服务端代理接收到来自WCF服务端的经过序列化处理的参数集合和调用信息时,服务端代理通过反射技术获取被调用的业务类方法的参数类型列表,并根据参数类型列表调用服务端序列化器将经过序列化处理的参数集合进行反序列化处理为参数集合,以及根据调用信息通过反射技术调用服务端的业务类方法,将参数集合传递至业务类方法,获取执行业务类方法的返回值并将返回值发送至WCF服务端;以及步骤306,WCF服务端将返回值通过WCF服务发送至WCF客户端,WCF客户端将返回值发送至客户端代理,客户端代理将返回值传送至客户端。
通过此方法,可以将原本不可以直接通过WCF服务传输的数据类序列化为可以直接传输的数据格式,利用反射技术来调用业务类方法,这样就不用预先在WCF服务中为数据类定义数据契约,为业务类定义服务契约,服务端业务类的任何变化都无需修改WCF服务的代码,数据类的任何变化都不需修改WCF服务的代码。
在上述技术方案中,优选地,步骤302还可以包括:客户端代理保存来自客户端的返回值类型定义;步骤304还可以包括:当判断返回值是数据类时,所述服务端代理调用服务端序列化器序列化返回值,并将经过序列化处理的返回值发送至WCF服务端;步骤306还可以包括:客户端代理将返回值类型定义和经过序列化的返回值发送至客户端序列化器进行反序列化处理,客户端代理将经过反序列化处理的返回值传递至客户端。执行业务类方法的执行结果如果是数据类对象,那么也可以通过序列化的方法来将其序列化为WCF服务可以直接传输的形式,实现了WCF与数据类的分离。
在上述技术方案中,优选地,客户端可以包括Silverlight客户端。
在上述技术方案中,优选地,服务端可以包括.net服务端。
在上述技术方案中,优选地,标准数据类型格式可以包括字符串和整型。
在此描述的另一方面提供一种基于WCF服务的服务端与客户端之间的交互系统,包括服务端和客户端,还包括:客户端代理,连接至客户端,接收来自客户端的调用信息和参数集合并将参数信息传递至客户端序列化器,将来自客户端序列化器的经过序列化处理的参数集合和调用信息发送至WCF客户端以及将来自WCF客户端的返回值发送至客户端,其中,调用信息为标准数据类型格式的数据;客户端序列化器,连接至客户端代理,用于将来自客户端代理的参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的参数集合传递至客户端代理;WCF客户端,连接至客户端代理,通过WCF服务将经过序列化处理的参数集合和调用信息发送至WCF服务端以及将来自WCF服务端的返回值发送至客户端代理;WCF服务端,连接至服务端代理,用于将经过序列化处理的参数集合和调用信息传递至服务端代理以及将来服务端代理的返回值发送至WCF客户端;服务端代理,连接至服务端,当接收到来自WCF服务端的经过序列化处理的参数集合和调用信息时,根据调用信息通过反射技术获取被调用的业务类方法的参数类型列表,将参数类型列表和经过序列化处理的参数集合传递至服务端序列化器,以及根据调用信息通过反射技术调用服务端的业务类方法,将来自服务端序列化器的经过反序列化处理的参数集合传递至业务类方法,获取执行业务类方法的返回值并将返回值发送至WCF服务端;以及服务端序列化器,连接至服务端代理,用于根据参数类型列表将经过序列化处理的参数集合进行反序列化为参数集合,并将参数集合传递至服务端代理。
通过此系统,可以将原本不可以直接通过WCF服务传输的数据类序列化为可以直接传输的数据格式,利用反射技术来调用业务类方法,这样就不用预先在WCF服务中为数据类定义数据契约,为业务类定义服务契约,服务端业务类的任何变化都无需修改WCF服务的代码,数据类的任何变化都不需修改WCF服务的代码。
在上述技术方案中,优选地,客户端代理还保存来自客户端的返回值类型定义;当判断返回值是数据类时,服务端代理调用服务端序列化器序列化返回值,并将经过序列化处理的返回值发送至WCF服务端;客户端代理将返回值类型定义和经过序列化的返回值发送至客户端序列化器进行反序列化处理,客户端代理将经过反序列化处理的返回值传递至客户端。执行业务类方法的执行结果如果是数据类对象,那么也可以通过序列化的方法来将其序列化为WCF服务可以直接传输的形式,实现了WCF与数据类的分离。
在上述技术方案中,优选地,客户端可以包括Silverlight客户端。
在上述技术方案中,优选地,服务端可以包括.net服务端。
在上述技术方案中,优选地,标准数据类型格式可以包括字符串和整型。
附图说明
图1示出了相关技术中的WCF服务的示意图;
图2示出了相关技术中的WCF服务中的服务契约和数据契约声明的示意图;
图3示出了根据本发明的实施例的基于WCF服务的服务端与客户端之间的交互方法的流程图;
图4示出了根据本发明的实施例的基于WCF服务的服务端与客户端之间的交互系统的框图;以及
图5示出了根据本发明的实施例的WCF服务与业务类、数据类分离的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
为了增加系统的稳定性、可扩展性,需要解决两个问题:
1、如何实现WCF服务与业务类的分离——Silverlight客户端通过WCF服务调用.net服务端的业务类时,不需要事先为该业务类定义服务契约;.net服务端业务类的任何变化都不必修改WCF服务的代码。
2、如何实现WCF服务与数据类的分离——不需要事先为数据类定义数据契约,就能够通过WCF服务传输该数据类的对象;数据类的任何变化都不必修改WCF服务的代码。
因此,本发明提出了一种基于WCF服务的服务端与客户端之间的交互方法和系统,可以实现WCF服务与业务类、数据类分离。
在详细说明本发明的实施例之前对一些名词进行解释。各实施例中出现的序列化、反序列化以及反射的解释为如下:
序列化:将对象转换为可保存或传输的格式的过程。举例来说,将对象的信息(例如:字段值、类名等)抽取出来,将抽取出例如类名的对象按照某种格式统一存储在一个字符串中(也可以存储在二进制数组或其他格式中),以便于存入数据库或在网络间传输。标准数据类型也可以被序列化,例如一个整型变量可以被序列化为一个字符串。
反序列化:反序列化是与序列化相对的过程,是指将序列化的结果(例如:一个字符串)还原为对象的过程。在反序列化过程之前必须给其提供如下两部分内容:序列化的结果、反序列化的类型定义(也就是序列化之前对象的类型定义)。
反射:简单来说,通过反射可以实现如下内容:
指定程序集名称及路径、命名空间、类名,(1)可以获得类型的定义(如该类的方法、属性等信息),(2)可以创建该类型的实例(即创建该类型的对象);
指定程序集名称及路径、命名空间、类名、方法名,(1)可以调用方法名对应的方法,(2)可以获得该方法的参数列表、每一个参数的类型定义、方法返回值的类型定义等信息。
需要注意的是:反射不能在服务端与客户端之间执行,也就是说,客户端代码不能直接反射调用服务端方法,服务端代码也不能直接反射调用客户端代码。
图3示出了根据本发明的实施例的基于WCF服务的服务端与客户端之间的交互方法的流程图。
如图3所示,根据本发明的实施例的基于WCF服务的服务端与客户端之间的交互方法,包括:步骤302,客户端代理接收来自客户端的调用信息和参数集合,调用客户端序列化器将参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的参数集合和调用信息发送至WCF客户端,WCF客户端通过WCF服务将经过序列化处理的参数集合和调用信息发送至WCF服务端,其中,调用信息为标准数据类型格式的数据;步骤304,当服务端代理接收到来自WCF服务端的经过序列化处理的参数集合和调用信息时,服务端代理通过反射技术获取被调用的业务类方法的参数类型列表,并根据参数类型列表调用服务端序列化器将经过序列化处理的参数集合进行反序列化处理为参数集合,以及根据调用信息通过反射技术调用服务端的业务类方法,将参数集合传递至业务类方法,获取执行业务类方法的返回值并将返回值发送至WCF服务端;以及步骤306,WCF服务端将返回值通过WCF服务发送至WCF客户端,WCF客户端将返回值发送至客户端代理,客户端代理将返回值传送至客户端。
通过此方法,可以将原本不可以直接通过WCF服务传输的数据类序列化为可以直接传输的数据格式,利用反射技术来调用业务类方法,这样就不用预先在WCF服务中为数据类定义数据契约,为业务类定义服务契约,服务端业务类的任何变化都无需修改WCF服务的代码,数据类的任何变化都不需修改WCF服务的代码。
在上述技术方案中,优选地,步骤302还可以包括:客户端代理保存来自客户端的返回值类型定义;步骤304还可以包括:当判断返回值是数据类时,所述服务端代理调用服务端序列化器序列化返回值,并将经过序列化处理的返回值发送至WCF服务端;步骤306还可以包括:客户端代理将返回值类型定义和经过序列化的返回值发送至客户端序列化器进行反序列化处理,客户端代理将经过反序列化处理的返回值传递至客户端。执行业务类方法的执行结果如果是数据类对象,那么也可以通过序列化的方法来将其序列化为WCF服务可以直接传输的形式,实现了WCF与数据类的分离。
在上述技术方案中,优选地,客户端可以包括Silverlight客户端。
在上述技术方案中,优选地,服务端可以包括.net服务端。
在上述技术方案中,优选地,标准数据类型格式可以包括字符串和整型。
为了实现WCF服务于业务类、数据类的分离,增加了服务端代理、客户端代理、服务端序列化器以及客户端序列化器四个部分。创建一个WCF服务(以及WCF客户端、WCF服务端),用于实现客户端与服务端之间最基本的通信。服务端的业务类、数据类不需要在WCF服务端、WCF客户端中声明为服务契约和数据契约。
图4示出了根据本发明的实施例的基于WCF服务的服务端与客户端之间的交互系统的框图。
如图4所示,根据本发明的实施例的基于WCF服务的服务端与客户端之间的交互系统400,包括服务端416和客户端402,还包括:客户端代理404,连接至客户端402,接收来自客户端402的调用信息和参数集合并将参数信息传递至客户端序列化器406,将来自客户端序列化器406的经过序列化处理的参数集合和调用信息发送至WCF客户端408以及将来自WCF客户端408的返回值发送至客户端,其中,调用信息为标准数据类型格式的数据;客户端序列化器406,连接至客户端代理404,用于将来自客户端代理404的参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的参数集合传递至客户端代理404;WCF客户端408,连接至客户端代理404,通过WCF服务将经过序列化处理的参数集合和调用信息发送至WCF服务端410以及将来自WCF服务端410的返回值发送至客户端代理404;WCF服务端410,连接至服务端代理412,用于将经过序列化处理的参数集合和调用信息传递至服务端代理412以及将来服务端代理412的返回值发送至WCF客户端408;服务端代理412,连接至服务端416,当接收到来自WCF服务端410的经过序列化处理的参数集合和调用信息时,根据调用信息通过反射技术获取被调用的业务类方法的参数类型列表,将参数类型列表和经过序列化处理的参数集合传递至服务端序列化器414,以及根据调用信息通过反射技术调用服务端的业务类方法,将来自服务端序列化器414的经过反序列化处理的参数集合传递至业务类方法,获取执行业务类方法的返回值并将返回值发送至WCF服务端410;以及服务端序列化器414,连接至服务端代理412,用于根据参数类型列表将经过序列化处理的参数集合进行反序列化为参数集合,并将参数集合传递至服务端代理412。
通过此系统,可以将原本不可以直接通过WCF服务传输的数据类序列化为可以直接传输的数据格式,利用反射技术来调用业务类方法,这样就不用预先在WCF服务中为数据类定义数据契约,为业务类定义服务契约,服务端业务类的任何变化都无需修改WCF服务的代码,数据类的任何变化都不需修改WCF服务的代码。
在上述技术方案中,优选地,客户端代理404还保存来自客户端402的返回值类型定义;当判断返回值是数据类时,服务端代理412调用服务端序列化器414序列化返回值,并将经过序列化处理的返回值发送至WCF服务端410;客户端代理404将返回值类型定义和经过序列化的返回值发送至客户端序列化器406进行反序列化处理,客户端代理404将经过反序列化处理的返回值传递至客户端402。执行业务类方法的执行结果如果是数据类对象,那么也可以通过序列化的方法来将其序列化为WCF服务可以直接传输的形式,实现了WCF与数据类的分离。
在上述技术方案中,优选地,客户端402可以包括Silverlight客户端。
在上述技术方案中,优选地,服务端416可以包括.net服务端。
在上述技术方案中,优选地,标准数据类型格式可以包括字符串和整型。
接下来继续结合图5来说明本发明的又一实施例,在实施例中,将本发明的基于WCF服务的客户端与服务端之间的交互系统中的服务端作为.net服务端,客户端作为Silverligh客户端,在此,本领域技术人员应该理解,本发明的技术方案可以应用于以WCF服务为基础的各种系统中,不仅限于实施例中的实施方式。
图5示出了根据本发明的实施例的WCF服务与业务类、数据类分离的示意图。
增加的两个序列化器506和514的作用是:(1)将数据类对象序列化为可以通过WCF服务传输的格式(例如:字符串);(2)将序列化的结果(例如:字符串)反序列化为数据类对象。
增加的客户端代理504的作用是:(1)调用开始时,接收Silverlight客户端502传递的参数集合,并调用客户端序列化器506将参数集合中的数据类对象进行序列化,然后将处理过的参数集合传递给WCF客户端508;(2)调用结束时,从WCF客户端508接收返回值,并传送至Silverlight客户端502;如果返回值是被序列化的数据类对象,则首先调用客户端序列化器506,对其进行反序列化,得到数据类对象,然后将数据类对象传送至Silverlight客户端502。
增加的服务端代理512的作用是:(1)调用过程中,接收WCF服务端510传递过来的参数集合,如果参数集合中有被序列化的数据类对象,则调用服务端序列化器514将其反序列化;(2)反射调用服务端516业务类的方法,将参数集合传递给该方法;(3)获取业务类方法的执行结果,并返回给WCF服务端510;如果返回结果是数据类对象,则先调用服务端序列化器514将其序列化,然后再返回给WCF服务端510。
由于.net与Silverlight之间不能相互引用程序集(数据类定义在程序集中),因此,将定义数据类的代码编译为.net与Silverlight两个程序集,分别部署在服务端与客户端。也就是说,不同类型的两个程序集使用同一套代码文件(数据类定义代码)。系统中各模块之间的工作原理如下:
Silverlight客户端502将下列信息传递给客户端代理504:方法的调用信息(程序集名称及路径、命名空间、类名、方法名等)、参数集合、返回值的类型定义,其中,返回值的类型定义保存在客户端代理504中,而方法的调用信息的数据本身是字符串形式的数据,因此不需将其进行序列化;
客户端代理504调用客户端序列化器506,将参数集合中的数据类对象序列化为标准数据类型(简化实现:将所有的参数全部序列化为标准数据类型)。然后将处理过的参数集合与调用信息一起传递给WCF客户端508;
WCF客户端508将调用信息、参数集合传递给WCF服务端510;
WCF服务端510又将调用信息、参数集合传递给服务端代理512;
服务端代理512根据调用信息,利用反射技术得到被调用方法的参数类型列表,根据参数类型列表服务端代理512能够判断出参数集合中哪些参数需要进行反序列化操作,并调用服务端序列化器514对其进行反序列化操作(简化实现:反序列化参数集合中的所有参数),使参数集合中的参数与相应的参数类型对应;
根据调用信息通过反射技术调用.net服务端516的业务类方法,将反序列化处理后的参数集合传递给该方法,获取执行业务类方法的返回值;
如果返回值是数据类对象,服务端代理512会调用服务端序列化器514对其进行序列化操作(简化实现:不论返回值为何种类型,都对其进行序列化操作);
服务端代理512将返回值传送给WCF服务端510,WCF服务端510又将返回值传递给WCF客户端508,WCF客户端508最后将返回值传递给客户端代理504;
客户端代理504根据保存的返回值的类型定义,判断返回值是否是序列化的结果。如果返回值是序列化的结果,则将返回值及其类型定义一起传递给客户端序列化器506,对返回值进行反序列化操作(简化实现:不论返回值为何种类型,都对其进行反序列化操作);
客户端代理504接收来自客户端序列化器506的反序列化后的返回值,并将该返回值返回给Silverlight客户端502,这样就完成Silverlight客户端502与.net服务端516之间的一次交互。
通过上述技术方案,Silverlight客户端将方法的调用信息与参数集合一起,通过WCF服务传递到WCF服务端,再传递给服务端代理。服务端代理获得方法的调用信息(程序集名称及路径、命名空间、类名、方法名等)后,利用反射技术可以调用.net服务端内任意程序集的任意业务类的任意方法,实现了WCF服务与业务类分离。
这种方式不需要为业务类声明服务契约。当业务类或其方法发生变化时,只需修改方法的调用信息或参数集合,而不需要修改WCF服务。因此,WCF服务是稳定的,是与业务类无关的,从而实现了WCF服务与业务类的分离。
本发明还实现了WCF服务与数据类分离:
一方面,字符串等标准数据类型无需注册为数据契约,可直接通过WCF服务传递;另一方面,序列化技术能够将数据类对象转换为标准数据类型。因此,本发明通过序列化技术实现WCF服务与数据类的分离。具体方法如下:
(1)数据类对象作为参数通过WCF服务进行传递。
客户端代理收到Silverlight客户端传递的参数集合后,调用客户端序列化器将其中的数据类对象序列化为标准数据类型(简化实现:将所有的参数全部序列化),然后通过WCF服务传输给服务端代理。服务端代理调用服务端序列化器,将被序列化的参数集合反序列化为数据类对象(简化实现:将所有参数全部反序列化),再将经过反序列化处理后的参数集合传递给业务类的方法。
(2)数据类对象作为返回值通过WCF服务进行传递。
业务类方法执行完毕,将返回值传递给服务端代理。如果返回值是数据类对象,服务端代理将调用服务端序列化器,对其进行序列化操作(简化实现:不判断返回值类型,直接序列化),这样返回值就可以通过WCF服务传递给客户端代理。如果客户端代理收到的是序列化的返回值,则调用客户端序列化器将其反序列化为数据类对象(简化实现:不判断返回值类型,直接反序列化)。
如前所述,反序列化过程不但要提供序列化的结果,还要提供对象被序列化前的类型定义。这样,服务端方向与客户端方向的反序列化方法如下:
服务端方向的反序列化方法:服务端代理使用反射技术可以得到方法的每一个参数的类型定义(得到参数类型列表)。也就是说,可以知道每个参数是标准数据类型还是数据类对象。由于标准数据类型不必序列化,而数据类对象必须序列化,据此可以判断出参数集合中哪个参数是序列化的结果。将序列化的参数与其对应的类型定义一起提供给服务端序列化器,对其进行反序列化操作(简化实现:将每个参数及其对应的类型定义一起提供给服务端序列化器,反序列化参数集合中的所有参数)。
客户端方向的反序列化方法:Silverlight客户端将方法返回值(执行方法的执行结果)的类型定义传递给客户端代理。客户端代理判断其类型,如果返回值的类型是数据类,则将接收到来自WCF客户端的返回值与类型定义一起提供给客户端序列化器,进行反序列化操作(简化实现:无论方法的返回值为何种类型,都对其进行反序列化操作)。
以上结合附图详细说明了本发明的实施例的技术方案,实施本发明的技术方案可以达到以下技术效果:
1、实现了WCF服务与业务类的分离。
不需要将业务类声明为服务契约,即可通过WCF服务对其进行调用,业务类的任何变化都不需要修改WCF服务。
2、实现了WCF服务与数据类的分离。
不需要将数据类声明为数据契约,即可通过WCF服务对其进行传输,数据类的任何变化都不需要修改WCF服务。
3、有效的提高系统的稳定性。
由于业务类、数据类的任何变化都不需要修改WCF服务,因此作为系统交互基础的WCF服务具有很高的稳定性,从而提高了整个系统的稳定性。
4、有效的提高系统的可扩展性。
只需调整调用信息,客户端例如Silverlight客户端就可以调用服务端例如.net服务端的任意业务类的任意方法,而无需修改WCF服务,有效的提高了系统的可扩展性。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种服务端与客户端之间的交互方法,其特征在于,包括:
步骤302,客户端代理接收来自客户端的调用信息和参数集合,调用客户端序列化器将所述参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的所述参数集合和所述调用信息发送至WCF客户端,所述WCF客户端通过WCF服务将经过序列化处理的所述参数集合和所述调用信息发送至WCF服务端,其中,所述调用信息为标准数据类型格式的数据,所述客户端包括Silverlight客户端;
步骤304,当服务端代理接收到来自所述WCF服务端的经过序列化处理的所述参数集合和所述调用信息时,所述服务端代理通过反射技术获取被调用的业务类方法的参数类型列表,并根据所述参数类型列表调用服务端序列化器将经过序列化处理的所述参数集合进行反序列化处理为所述参数集合,以及根据所述调用信息通过所述反射技术调用服务端的所述业务类方法,将所述参数集合传递至所述业务类方法,获取执行所述业务类方法的返回值并将所述返回值发送至所述WCF服务端,所述服务端包括.net服务端;以及
步骤306,所述WCF服务端将所述返回值通过WCF服务发送至所述WCF客户端,所述WCF客户端将所述返回值发送至所述客户端代理,所述客户端代理将所述返回值传送至所述客户端。
2.根据权利要求1所述的服务端与客户端之间的交互方法,其特征在于,所述步骤302还包括:所述客户端代理保存来自所述客户端的返回值类型定义;
所述步骤304还包括:当判断所述返回值是数据类时,所述服务端代理调用所述服务端序列化器序列化所述返回值,并将经过序列化处理的所述返回值发送至所述WCF服务端;
所述步骤306还包括:所述客户端代理将所述返回值类型定义和经过序列化的所述返回值发送至所述客户端序列化器进行反序列化处理,所述客户端代理将经过反序列化处理的所述返回值传递至所述客户端。
3.根据权利要求1或2所述的服务端与客户端之间的交互方法,其特征在于,所述标准数据类型格式包括字符串和整型。
4.一种服务端与客户端之间的交互系统,包括服务端和客户端,其特征在于,还包括:
客户端代理,连接至所述客户端,接收来自所述客户端的调用信息和参数集合并将所述参数信息传递至客户端序列化器,将来自客户端序列化器的经过序列化处理的所述参数集合和所述调用信息发送至WCF客户端以及将来自WCF客户端的返回值发送至所述客户端,其中,所述调用信息为标准数据类型格式的数据,所述客户端包括Silverlight客户端;
所述客户端序列化器,连接至所述客户端代理,用于将来自所述客户端代理的所述参数集合序列化为标准数据类型格式的数据,并将经过序列化处理的所述参数集合传递至所述客户端代理;
所述WCF客户端,连接至所述客户端代理,通过WCF服务将经过序列化处理的所述参数集合和所述调用信息发送至WCF服务端以及将来自所述WCF服务端的返回值发送至所述客户端代理;
所述WCF服务端,连接至服务端代理,用于将经过序列化处理的所述参数集合和所述调用信息传递至所述服务端代理以及将来所述服务端代理的所述返回值发送至所述WCF客户端,所述服务端包括.net服务端;
所述服务端代理,连接至所述服务端,当接收到来自所述WCF服务端的经过序列化处理的所述参数集合和所述调用信息时,根据所述调用信息通过反射技术获取被调用的业务类方法的参数类型列表,将所述参数类型列表和经过序列化处理的所述参数集合传递至服务端序列化器,以及根据所述调用信息通过反射技术调用所述服务端的所述业务类方法,将来自服务端序列化器的经过反序列化处理的所述参数集合传递至所述业务类方法,获取执行所述业务类方法的所述返回值并将所述返回值发送至所述WCF服务端;以及
所述服务端序列化器,连接至所述服务端代理,用于根据所述参数类型列表将经过序列化处理的所述参数集合进行反序列化为所述参数集合,并将所述参数集合传递至所述服务端代理。
5.根据权利要求4所述的服务端与客户端之间的交互系统,其特征在于,所述客户端代理还保存来自所述客户端的返回值类型定义;
当判断所述返回值是数据类时,所述服务端代理调用所述服务端序列化器序列化所述返回值,并将经过序列化处理的所述返回值发送至所述WCF服务端;
所述客户端代理将所述返回值类型定义和经过序列化的所述返回值发送至所述客户端序列化器进行反序列化处理,所述客户端代理将经过反序列化处理的所述返回值传递至所述客户端。
6.根据权利要求4或5所述的服务端与客户端之间的交互系统,其特征在于,所述标准数据类型格式包括字符串和整型。
CN201110149675.9A 2011-06-03 2011-06-03 服务端与客户端之间的交互方法和交互系统 Active CN102209076B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110149675.9A CN102209076B (zh) 2011-06-03 2011-06-03 服务端与客户端之间的交互方法和交互系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110149675.9A CN102209076B (zh) 2011-06-03 2011-06-03 服务端与客户端之间的交互方法和交互系统

Publications (2)

Publication Number Publication Date
CN102209076A CN102209076A (zh) 2011-10-05
CN102209076B true CN102209076B (zh) 2014-01-29

Family

ID=44697740

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110149675.9A Active CN102209076B (zh) 2011-06-03 2011-06-03 服务端与客户端之间的交互方法和交互系统

Country Status (1)

Country Link
CN (1) CN102209076B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103188289B (zh) * 2011-12-28 2015-11-04 北京新媒传信科技有限公司 一种客户端与服务端的消息通信方法
CN102801726B (zh) * 2012-08-06 2016-03-30 上海西本网络科技有限公司 通信系统以及客户端与服务端之间的通信方法
CN103218230A (zh) * 2013-04-23 2013-07-24 浪潮集团山东通用软件有限公司 一种silverlight框架下动态创建实体类的方法
CN104216902B (zh) * 2013-05-31 2018-10-02 西门子公司 一种基于服务器分页的分页数据装载方法、装置和系统
CN104486382B (zh) * 2014-11-27 2017-09-22 珠海格力电器股份有限公司 一种wcf双工通信服务的创建方法及系统
CN106357713B (zh) * 2015-07-16 2019-12-31 北京京东尚科信息技术有限公司 实现远程过程调用的方法和客户端装置以及服务器装置
CN105183756B (zh) * 2015-07-20 2018-08-14 北京空间飞行器总体设计部 WCF RIA Services下集成NHIBERNATE的方法
CN106936937B (zh) * 2015-12-29 2020-09-08 阿里巴巴集团控股有限公司 用于互联网业务交互的通用接口的实现方法和装置
CN107643953A (zh) * 2016-07-20 2018-01-30 深圳市祈飞科技有限公司 一种远程对象调用方法及系统
CN107918562B (zh) * 2016-10-11 2021-11-26 北京京东尚科信息技术有限公司 一种统一接口管理方法和系统
CN106484548A (zh) * 2016-10-20 2017-03-08 济南浪潮高新科技投资发展有限公司 一种基于异步回调机制的动作编排请求响应处理方法
CN106506519B (zh) * 2016-11-21 2019-05-28 辽宁科技大学 WCF框架net.tcp协议跨平台通信的系统及方法
CN108427691B (zh) * 2017-02-15 2021-11-16 腾讯科技(深圳)有限公司 网络数据传输方法、装置和计算机设备
CN112035831A (zh) * 2020-08-14 2020-12-04 深信服科技股份有限公司 一种数据处理方法、装置、服务器及存储介质
CN112788003A (zh) * 2020-12-28 2021-05-11 浪潮通用软件有限公司 一种基于微服务架构的rpc通信方法及设备
CN115314536B (zh) * 2022-08-03 2024-02-02 平安付科技服务有限公司 远程执行命令方法及装置、存储介质、计算机设备
CN115858193B (zh) * 2022-11-24 2023-08-25 广州市易鸿智能装备有限公司 一种数据传输方法和实现业务类bussiness功能对接的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882156A (zh) * 2010-06-13 2010-11-10 用友软件股份有限公司 Silverlight客户端可控缓存方法和系统
CN101894110A (zh) * 2009-05-20 2010-11-24 灰熊(北京)科技有限公司 一种web游戏客户端不同功能页面之间数据共享的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594900B2 (en) * 2008-12-09 2017-03-14 Microsoft Technology Licensing, Llc Isolating applications hosted by plug-in code

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894110A (zh) * 2009-05-20 2010-11-24 灰熊(北京)科技有限公司 一种web游戏客户端不同功能页面之间数据共享的方法
CN101882156A (zh) * 2010-06-13 2010-11-10 用友软件股份有限公司 Silverlight客户端可控缓存方法和系统

Also Published As

Publication number Publication date
CN102209076A (zh) 2011-10-05

Similar Documents

Publication Publication Date Title
CN102209076B (zh) 服务端与客户端之间的交互方法和交互系统
CN103023933B (zh) 一种登录信息集成处理系统及方法
CN110806934A (zh) 基于rpa技术的智能一体机开发及多业务快速处理方法
CN104601641A (zh) 应用链接分享方法、装置及系统
CN102227901A (zh) 点滴式同步协议
KR20100048571A (ko) 다중 사용자-다중 서비스 제공 방법, 장치 및 시스템
CN103390244B (zh) 一种具有运营商特色的用户好友关系聚合方法及聚合平台
CN101854371A (zh) JavaScript对象的调用及处理的方法、装置
CN107770269A (zh) 一种服务响应方法及其终端
CN103139157A (zh) 一种基于socket的网络通信方法、装置及系统
CN107438084A (zh) 多客户端数据同步方法和装置
CN102255867A (zh) 服务请求处理方法、装置及系统
CN104135536A (zh) 一种基于json数据协议的Web管理系统数据交互方法
CN101882293A (zh) 国内托管银行与境外托管代理银行间的数据处理方法及系统
CN108696899A (zh) Sip消息传输与接收方法及传输与接收装置
CN107911547A (zh) 交互系统、界面布局的方法
CN107368334B (zh) 一种业务插件交互系统及方法
CN106649488A (zh) 多数据源交互接口的调用方法及装置
CN107636655A (zh) 实时提供数据即服务(DaaS)的系统和方法
CN108280228A (zh) 一种网页的处理方法及相关设备
CN109889558A (zh) 面向物联网应用的数据传输方法、中间件及系统
CN107370628A (zh) 基于埋点的日志处理方法及系统
CN101155174A (zh) 基于公用协议的远程用户界面服务实现方法
CN105450589A (zh) 远程调用方法及系统
CN102103606A (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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160215

Address after: 100094 Beijing City, North Road, Haidian District, No. 68, building 2, floor 2

Patentee after: You Pu Information Technology Co., Ltd of UFSOFT

Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park

Patentee before: UFIDA Software Co., Ltd.