基于实体类的客户端与服务器通信的方法

文档序号:7555124阅读:186来源:国知局
专利名称:基于实体类的客户端与服务器通信的方法
技术领域
本发明涉及互联网通信技术领域,尤其涉及一种基于实体类的客户端与服务器通信的方法。
背景技术
互联网发展初期,网页比较简单,仅包括文字或少量图片,在传统移动终端上,浏览器一般采用HTTP协议来访问服务器。但随着互联网的发展,网页的内容和形式越来越丰富,网页内容不仅包含了文字,还有大量的图片、多媒体信息和外接等。根据2012年google的统计显示,每幅网页大概有88个资源,需要访问14个不同的站点,并且平均大小640KB。当前在基于互联网的科研中,无论采用C/S架构还是B/S架构,要开发一种软件或者产品,一般使用C类语言或Java类语言,若各模块使用同一类语言,则无通信流畅,但随着技术的不断发展与更新,在越来越多的情况下,需要使用多类编程语言共同开发程序,如使用C类语言编写客户端和Java类语言编写服务器端,但是数据类型不同、数据格式不统一等原因,会造成各模块间的数据通信出现问题。为了解决上述问题,目前的解决方案是套接字方法,每次通信时,首先在客户端和服务器端建立一个通道来连接客户端请求到服务器端的特定端口,继而将客户端的字段逐个读出来,存到流、xml、properties等载体中,然后通过载体将字段发送到服务器端,服务器端进行解析,重新生成对象,再次将字段保存到流、xml、properties等载体,回传到客户端。这种解决方案的数据传递方向是客户端_>流、xml、properties等载体_>服务器端_>流、xml、properties等载体-> 客户端;同时造成了很多问题,主要有两个方面:1、数据要在客户端与载体、服务器端与载体之间不停地转换,过程比较复杂并且很容易产生错误;2、在于不同的客户端可能由不同的语言编写,在于服务器端的通信过程中,就需要不同格式的中间载体,加大了项目复杂度,难于管理。尤其是在复杂的大型项目中,复杂的数据类型、大量的数据与多种格式的通信中间载体不仅容易在数据转换中产生数据失真等问题,也容易因为通信压力过大引起通信崩溃。因此,对于现有技术所存在的问题,迫切需要本领域技术人员解决的技术问题是提供有效措施,以解决现有技术存在的问题。

发明内容
本发明所要解决的技术问题是提供一种基于实体类的客户端与服务器通信的方法,用于减轻通信压力和项目复杂度,使客户端与服务器端的通信更加简洁高效。为了解决上述问题,本发明公开了一种基于实体类的客户端与服务器通信的方法,包括:
定义客户端与服务器用于数据传输的实体类;定义客户端和服务器通信的通信接口及通信函数;通信过程中服务器开启服务,客户端将数据赋予到对应的实体类并序列化为Json报文字节序列,通过通信接口发送到服务器端;服务器端对Json报文字节序列进行反序列化得到实体类数据,通过业务处理得至丨J结果;服务器端将结果赋予到到实体类中,并将实体类数据序列化为Json报文字节序列,通过通信接口返回到客户端;客户端对Json报文字节序列进行反序列化得到实体类数据,再对该实体类数据进行业务处理。进一步地,所述定义客户端和服务器通信的通信接口及通信函数包括定义服务器端的通信接口及通信函数、定义客户端的通信接口及通信函数和实现客户端访问服务器端的流程。进一步地,所述方法在客户端定义通信接口时同时说明实体类对应的通信接口名称及其名下对应的服务。进一步地,所述方法还包括:定义通信类、数据访问基类、封装基的数据操作以及每一个实体类对应的数据访问类。进一步地,客户端发送数据到服务器端的方法时,数据访问类调用数据访问基类,数据访问基类再调用通信类,在通信类中将实体类数据序列化为Json报文字节序列,通过通信接口访问服务器端对应的服务。进一步地,所定义的客户端与服务器用于数据传输的实体类完全相同。进一步地,所述定义客户端与服务器用于数据传输的实体类时,使用SybasePower Designer工具设计实体类并编写相应的控制代码,分别生成客户端与服务器对应的实体类代码。进一步地,通信时客户端通过IP地址及端口访问服务器,再通过通信接口连接到具体的服务。进一步地,所述文本结束符在同一附件里只出现一次。综上,本方案应用于明文数据传输接收中,可以利用其简洁高效的编码解码效率,大大降低了密文的长度及存储空间,增强信道的传输速率,从而减少数据的传输延迟;同时,利用门限方案和可信第三方增加了传输数据的安全性。


图1是本发明的本发明的一种基于实体类的客户端与服务器通信的方法的流程示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图与实例对本发明作进一步详细说明。但所举实例不作为对本发明的限定。参见图1所示,本发明的一种基于实体类的客户端与服务器通信的方法的流程示意图,具体包括以下主要步骤:步骤SA01,定义客户端与服务器用于数据传输的实体类;步骤SA02,定义客户端和服务器通信的通信接口及通信函数;步骤SA03,通信过程中服务器开启服务,客户端将数据赋予到对应的实体类并序列化为Json报文字节序列,通过通信接口发送到服务器端;步骤SA04,服务器端对Json报文字节序列进行反序列化得到实体类数据,通过业务处理得到结果;步骤SA05,服务器端将结果赋予到到实体类中,并将实体类数据序列化为Json报文字节序列,通过通信接口返回到客户端;步骤SA06,客户端对Json报文字节序列进行反序列化得到实体类数据,再对该实体类数据进行业务处理。具体的,本发明提出一种基于实体类的用于C编写的客户端与Java编写的服务器端进行通信的方法,使不同的C类开发语言都能通过实体类直接与服务器进行通信,降低通信负担、提高通信效率,增强系统的健壮性。实际应用中,客户端与服务器通信包括四个部分:服务器端与客户端定义完全相同的实体类(101)、服务器端与客户端定义通信接口(102),这是整个模型的基础;客户端处理数据(103),包括处理发送到服务器端的数据和处理从服务器端接收到的数据;服务器端处理数据(104),包括处理从客户端接收到的数据和处理发送到客户端的数据。101:服务器端与客户端定义完全相同的实体类,这是整个通信的基础,这些实体类既可以作为通信中数据传输的载体,也可以作为客户端与服务器端进行业务处理时的数据对象。为了保证客户端与服务器端的实体类完全相同,可以使用Sybase Power Designer工具设计实体类并编写相应的控制代码,以便分别生成客户端与服务器端对应的实体类代码。102:服务器端与客户端定义通信接口,这是整个通信的通道。该通信接口由两部分组成,分别是handler定义一个实体类对应的所有服务的通信接口,service来定义handler中的一个通信服务的具体流程。通信时,客户端通过IP地址及端口访问服务器端,再通过通信接口连接到具体的服务。以上两个步骤是整个模型的基础准备,接下来客户端设置对应服务器端的IP地址和端口号,服务器端开启服务,进入通信流程。103:客户端处理数据,包括处理发送到服务器端的数据和处理从服务器端接收到的数据。客户端处理发送到服务器端的数据步骤I客户端业务流程产生的实体类数据与调用的通信接口首先进入数据访问类;步骤2由数据访问类进入数据访问基类,数据访问基类包括有参数、有返回值的通信接口调用,有参数、无返回值的通信接口调用,无参数、有返回值的通信接口调用,实体类数据通过调用其中一个接口进入数据访问基类;步骤3由数据访问基类进入通信类,通信类包括通信函数的初始化、通信、网络设置、数据传输错误时的处理、日志记录、单向发送数据、单向接收数据、双向传递数据等函数,以及实体类数据序列化为字节序列的函数和字节序列反序列化为实体类数据的函数。步骤4实体类数据在通信类被序列化为Json报文字节序列后,通过步骤3中定义的单向发送、单向接收、双向传递三种通信方式的一种,调用通信接口将Json报文字节序列发送到服务器端。如果该步骤选择单向接收这一通信方式,则只传递通信接口,不传递序列化后的Json报文字节序列;如果该步骤选择另外两种通信方式,则要传递通信接口和序列化后的Json报文字节序列。104:服务器端处理数据,包括处理从客户端接收到的数据和处理发送到客户端的数据。服务器端处理从客户端接收到的数据步骤5客户端发送过来的Json报文字节序列通过通信接口调用对应实体类的handler,再进入对应的通信服务service ;步骤eservice调用业务逻辑处理流程处理数据,将Json报文字节序列反序列化为实体类数据,处理数据过程包括首先判断传来数据是否为List队列,如果是,做特殊的Json反序列化处理,将传来的string格式的反序列化为实体类数据;如果不是,将传来的string格式的Json报文字节序列直接反序列化为实体类数据;步骤7实体类数据进入service具体处理流程,根据调用DAO层定义的增删改查等数据库操作,产生结果;步骤8由业务逻辑函数将得到的结果对应到相应的实体类中,并将实体类数据序列化为string格式的Json报文字节序列。服务器端处理发送到客户端的数据步骤9业务逻辑函数将步骤8中产生的Json报文字节序列发送到客户端的通信类中。如果103的步骤4中选择单向发送这一通信方式,则Json报文字节序列不再返回,只返回一个判断成功的true (或false)值;如果选择的是另外两种通信方式,则要返回Json报文字节序列。103:客户端处理从服务器端接收到的数据步骤10客户端首先通过通信类将服务器端返回的Json报文字节序列反序列化为实体类数据,并将该实体类数据传递到数据访问基类中去,反序列化过程为客户端通过通信类中的单向发送、单向接收、双向传递三种通信方式中的一种接收到Json报文字节序列后,对它进行反序列化处理,首先判断传来数据是否为List队列,如果是,做特殊的Json反序列化处理,将传来的string格式的Json报文字节序列反序列化为实体类数据,再进行对应的操作将数据显示出来;如果不是,将传来的string格式的Json报文字节序列直接反序列化为实体类数据。步骤11由数据访问基类将数据传递到数据访问类中。步骤12整个通信过程结束,接下来调用客户端业务处理流程处理数据。以上对本发明所提供的基于实体类的客户端与服务器通信的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种基于实体类的客户端与服务器通信的方法,其特征在于,包括: 定义客户端与服务器用于数据传输的实体类; 定义客户端和服务器通信的通信接口及通信函数; 通信过程中服务器开启服务,客户端将数据赋予到对应的实体类并序列化为Json报文字节序列,通过通信接口发送到服务器端; 服务器端对Json报文字节序列进行反序列化得到实体类数据,通过业务处理得到结果; 服务器端将结果赋予到到实体类中,并将实体类数据序列化为Json报文字节序列,通过通信接口返回到客户端; 客户端对Json报文字节序列进行反序列化得到实体类数据,再对该实体类数据进行业务处理。
2.如权利要求1所述的基于实体类的客户端与服务器通信的方法,其特征在于: 所述定义客户端和服务器通信的通信接口及通信函数包括定义服务器端的通信接口及通信函数、定义客户端的通信接口及通信函数和实现客户端访问服务器端的流程。
3.如权利要求1所述的基于实体类的客户端与服务器通信的方法,其特征在于,所述方法在客户端定义通信接口时同时说明实体类对应的通信接口名称及其名下对应的服务。
4.如权利要求1所述的基于实体类的客户端与服务器通信的方法,其特征在于,所述方法还包括:定义通信类、数据访问基类、封装基的数据操作以及每一个实体类对应的数据访问类。
5.如权利要求1所述的基于实体类的客户端与服务器通信的方法,其特征在于,客户端发送数据到服务器端的方法时,数据访问类调用数据访问基类,数据访问基类再调用通信类,在通信类中将实体类数据序列化为Json报文字节序列,通过通信接口访问服务器端对应的服务。
6.如权利要求1所述的基于实体类的客户端与服务器通信的方法,其特征在于,所定义的客户端与服务器用于数据传输的实体类完全相同。
7.如权利要求6所述的基于实体类的客户端与服务器通信的方法,其特征在于,所述定义客户端与服务器用于数据传输的实体类时,使用Sybase Power Designer工具设计实体类并编写相应的控制代码,分别生成客户端与服务器对应的实体类代码。
8.如权利要求1所述的基于实体类的客户端与服务器通信的方法,其特征在于,通信时客户端通过IP地址及端口访问服务器,再通过通信接口连接到具体的服务。
全文摘要
本发明提供的基于实体类的客户端与服务器通信的方法,包括定义客户端与服务器用于数据传输的实体类以及客户端和服务器通信的通信接口及通信函数;服务器开启服务,客户端将数据赋予到对应的实体类并序列化为Json报,通过通信接口发送到服务器;服务器端对Json报进行反序列化得实体类数据,通过业务处理得结果;服务器端将结果赋予到到实体类中,并将实体类数据序列化为Json报文字节序列,通过通信接口返回到客户端;客户端对Json报文字节序列进行反序列化得到实体类数据,再对该实体类数据进行业务处理。本发明提供的基于实体类的客户端与服务器通信的方法有效减轻通信压力和项目复杂度,使客户端与服务器端的通信更加简洁高效。
文档编号H04L29/06GK103179133SQ20131012795
公开日2013年6月26日 申请日期2013年4月12日 优先权日2013年4月12日
发明者何泾沙, 张伊璇, 史秀鹏, 万雪娇, 刘公政 申请人:北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1