首页> 中国专利> 基于HTTP和对象序列化的通用数据交换方法

基于HTTP和对象序列化的通用数据交换方法

摘要

本发明公开了一种基于HTTP和对象序列化的通用数据交换方法,步骤包括:(1)从数据源抽取数据记录或数据源推送一条数据记录(2)数据记录被序列化为数据流封装在一个HTTP请求中,并在HTTP请求头中记录数据流元信息(3)数据处理程序接收HTTP请求并反序列化记录(4)数据处理程序处理数据记录。本发明的目的是提供一种跨系统跨平台的数据交换方法,基于本发明不同的数据处理程序能便捷地交换异构数据。

著录项

  • 公开/公告号CN104780222A

    专利类型发明专利

  • 公开/公告日2015-07-15

    原文格式PDF

  • 申请/专利号CN201510213732.3

  • 发明设计人 徐锐;刘斌;台宪青;

    申请日2015-04-29

  • 分类号

  • 代理机构无锡市大为专利商标事务所(普通合伙);

  • 代理人曹祖良

  • 地址 214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座

  • 入库时间 2023-12-18 09:57:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-06

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/08 专利号:ZL2015102137323 变更事项:专利权人 变更前:江苏物联网研究发展中心 变更后:江苏物联网研究发展中心 变更事项:地址 变更前:214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座 变更后:214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座 变更事项:专利权人 变更前:北京科电高技术公司 变更后:北京科电高技术有限公司

    专利权人的姓名或者名称、地址的变更

  • 2019-03-12

    授权

    授权

  • 2015-08-12

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20150429

    实质审查的生效

  • 2015-07-15

    公开

    公开

说明书

技术领域

本发明涉及一种多个系统通过网络交换数据的方法,具体是一种基于HTTP和对象序列化的通用数据交换方法。

背景技术

数据交换是构建数据仓库系统的重要基础技术。大数据时代背景下,数据的产生和分析处理通常是在不同的地理位置进行的。通过数据交换技术,可以将各处产生的异构数据收集起来加载到数据仓库,成为数据处理的基础。参与数据交换的各方,即数据生产者和数据消费者,所依赖的技术平台和底层系统各不相同。在数据交换各方之间建立一种通用的数据管道具有重要意义。

本发明提出一种基于HTTP和对象的序列化技术的数据交换方法,交换双方通过协商确定对象的序列化方法和压缩算法。采用本发明,数据生产者和数据消费者都不必考虑的对方对某种特定存储技术或系统平台的依赖,而只需关心数据内容。

发明内容

本发明的目的是提供一种跨系统跨平台的数据交换方法,基于本发明不同的数据处理程序能便捷地交换异构数据。

本发明通过以下技术方案实现:所述基于HTTP和对象序列化的通用数据交换方法,采用HTTP协议报文传递消息,传输层基于TCP协议,包括以下步骤:

(1)从数据源抽取一条数据记录或数据源推送一条数据记录,此数据记录被称为对象;

(2)根据对象的结构,对象被序列化为数据流,封装在一个HTTP请求报文的消息体中;其中,HTTP请求头Headers中记录数据流元信息,包括序列化方法和对象大小;HTTP请求报文的路径域Path指定数据交换目标处理程序;HTTP请求报文的方法域Method指定数据交换操作方法;

(3)数据交换的目标处理系统接收HTTP请求,根据报文携带的数据元信息,采用对应的反序列化方法,转换对象为本系统兼容格式的数据;

(4)数据处理程序随后对数据进行处理,处理完成后以HTTP响应的方式返回处理结果。

对象序列化的方法在建立TCP连接时通过一次HTTP请求-响应过程协商;一次数据交换过程中,将参与数据交换的两方中发起TCP连接的一方称为客户端,另一方称为服务端,协商序列化方法的具体过程如下:

(1)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Accept字段携带有客户端支持的序列化方法列表,客户端支持的多个序列化方 法使用分号隔开;

(2)服务端接收到请求后,读取Accept字段得到客户端支持的序列化方法列表,然后与本系统支持的序列化方法进行比对,选取一个或多个双方支持的序列化方法;

(3)服务端返回一个HTTP响应,响应头中Accept字段携带选取的序列化方法;

(4)客户端收到服务端发回的响应后获知协商的序列化方法,后续与服务端的数据交换过程采用协商的序列化方法中的一个。

参与数据交换的双方所支持的对象序列化方法至少包括JSON序列化。使得双方至少能协商出一种序列化方法。

所述服务端和客户端都能够选用特定的压缩算法对序列化数据流进行压缩后再传输,即消息体中存放压缩后的数据。

所述客户端和服务端协商可选的数据流的压缩算法,协商压缩算法的过程如下:

(1)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Accept-Encoding字段携带有客户端支持的压缩算法列表,客户端支持的多个压缩算法使用分号隔开;

(2)服务端接收到请求后,读取Accept-Encoding字段得到客户端支持的压缩算法列表,然后与本系统支持的压缩算法进行比对,选取一个或多个双方支持的压缩算法;

(3)服务端返回一个HTTP响应,响应头中Accept-Encoding字段携带可用的压缩算法;

(4)客户端收到服务端发回的响应后获知协商的压缩算法,后续与服务端的数据交换过程中需要对数据进行压缩时采用协商的压缩算法进行压缩。

压缩算法的协商和序列化方法的协商是合并在一次请求中实现的。

数据压缩是可选的,服务端或客户端可以不支持任何数据压缩算法。在一次数据交换过程中,客户端/服务端采用了压缩算法时,HTTP请求/响应报文中使用Content-Encoding字段指明所采用的压缩算法。客户端或服务端根据Content-Encoding字段解压数据再进行反序列化。

服务端返回处理结果时,HTTP响应报文中采用与HTTP请求报文一致的方法交换数据。

本发明的优点是:待交换的对象被以一种协商决定的方法序列化,使得对象能在多个数据交换参与者之间无缝流转。一方不需关注另一方的具体存储结构。而基于HTTP的轻量级传输协议使得本交换方法是与平台无关的,而且能被所有支持HTTP协议栈的平台所使用。大量现有支持HTTP协议的设备和程序能够便捷地使用本方明进行数据交换。

附图说明

图1是本发明的数据交换流程图。

具体实施方式

本发明提出了一种基于HTTP和对象序列化的通用数据交换方法,数据从一方交换到另一方时采用HTTP协议报文传递消息,传输层基于TCP协议,如图1所示,它包括以下步骤:

(1)从数据源抽取(Extract)一条数据记录(被动请求交换)或数据源推送(Push)一条数据记录(主动请求交换)。此数据记录被称为对象。

(2)根据对象的结构,对象被序列化为数据流,封装在一个HTTP请求报文的消息体(Message Body)中。HTTP请求头(Headers)中记录数据流元信息(Metadata),包括序列化方法和对象大小。HTTP请求报文的路径域(Path)指定数据交换目标处理程序。HTTP请求报文的方法域(Method)指定数据交换操作方法。

(3)数据交换的目标处理系统接收HTTP请求,根据报文携带的数据元信息,采用对应的反序列化方法,转换对象为本系统兼容格式的数据。

(4)数据处理程序随后对数据进行处理。处理完成后以HTTP响应的方式返回处理结果。

上述步骤中,对象序列化采用的方法通过协商确定。序列化后的数据可以被压缩,压缩算法也通过协商确定。一次数据交换过程中,将参与数据交换的两方中发起TCP连接的一方称为客户端,另一方称为服务端。序列化方法协商过程如下:

(1)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Accept字段携带有客户端支持的序列化方法列表。客户端支持的多个序列化方法使用分号隔开。

(2)服务端接收到请求后,读取Accept字段得到客户端支持的序列化方法列表,然后与本系统支持的序列化方法进行比对,选取一个或多个双方支持的序列化方法。

(3)服务端返回一个HTTP响应,响应头中Accept字段携带选取的序列化方法。

(4)客户端收到服务端发回的响应后获知协商的序列化方法。后续与服务端的数据交换过程采用协商的序列化方法中的某一个。

协商压缩算法的过程与协商序列化方法的过程类似,具体过程如下:

(1)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Accept-Encoding字段携带有客户端支持的压缩算法列表。客户端支持的多个压缩算法使用分号隔开。

(2)服务端接收到请求后,读取Accept-Encoding字段得到客户端支持的压缩算法列表,然后与本系统支持的压缩算法进行比对,选取一个或多个双方支持的压缩算法。

(3)服务端返回一个HTTP响应,响应头中Accept-Encoding字段携带可用的压缩算法。

(4)客户端收到服务端发回的响应后获知协商的压缩算法。后续与服 务端的数据交换过程中需要对数据进行压缩时采用协商的压缩算法进行压缩。

序列化方法是必须的。参与数据交换的各方必须至少实现对象的JSON序列化方法。数据压缩算法是可选的,参与数据交换的各方可以不支持压缩。

服务端处理完数据交换请求(可以是一次数据的读写、删除操作),然后以HTTP响应的方式返回处理结果。

本发明包括一个客户端程序和一个服务端程序,发起数据交换请求的一方作为客户端,处理数据交换请求的一方作为服务端。一个程序事实上可以既是服务端也是客户端。客户端与服务端之间的通信采用TCP连接,交换的报文遵从HTTP协议。数据交换的具体步骤如下:

下面结合附图和实施例对本发明作进一步说明。

步骤1、客户端准备一条待交换的数据记录(称为对象),然后与服务端建立TCP连接。客户端与服务端之间的TCP连接在一次数据交换完成之后可以保持。因此若客户端与服务端之间已经存在连接则可以复用已经存在的连接。

步骤2、连接建立后,客户端首先向服务端发送一个会话初始化请求,用于协商序列化方法和压缩算法。客户端在请求报文的请求头(Headers)中插入两个分别用于指定本客户端支持的序列化方法和压缩算法的字段Accept和Accept-Encoding。多个序列化方法、压缩算法直接采用分号隔开。

以下会话初始化消息指出,客户端支持JSON序列化和xml序列化两种序列化方式,同时支持gzip和snappy压缩算法。

HEAD/HTTP/1.1

Accept:application/json;application/xml

Accept-Encoding:gzip;snappy

步骤3、服务端接收到会话初始化请求后,将客户端支持的序列化方法、压缩算法和本服务端支持的序列化方法、压缩算法进行对比。在HTTP响应报文中使用Accept和Accept-Encoding字段返回协商的序列化方法和压缩算法。

以下会话初始化响应消息,协商结果为JSON序列化和xml序列化两种方法,以及gzip压缩算法。 

HTTP/1.1 200 OK

Accept:application/json;application/xml

Accept-Encoding:gzip

Server:des

步骤4、客户端向服务端发送一个数据交换请求,将待操作的对象序列化、压缩封装在HTTP请求报文的消息体中。在请求报文头部指明本次交换所使用的序列化方法和压缩算法。

以下数据交换请求消息表示:客户端采用JSON序列化方法向stock_price写入(PUT)了一条数据记录。数据序列化之后没有进行压缩。

PUT/stock_price HTTP/1.1

Content-Type:application/json

Content-Length:77

{″name″:″APPL″,″price″:″126.37″,"source":″NASDAQ″,″date″:"2015-03-30″}

步骤5、服务端收到客户端请求后对请求进行处理。按客户端指定的操作、目标路径进行处理,然后返回一个HTTP响应消息。

以下响应表示:数据交换操作成功,且服务端没有数据返回。

HTTP/1.1 200 OK

Server:des。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号