您的位置: turnitin查重官网> 管理学 >> mba >> mba毕业任务书 >一种结构化数据交换与方法

一种结构化数据交换与方法

收藏本文 2024-02-08 点赞:3597 浏览:10120 作者:网友投稿原创标记本站原创

摘要:本文提供一种结构化数据交换格式及方法,数据交换包的结构主要由数据项值对与数据记录集两种结构组成,能很简明地描述数据,并使用特殊的不可输入分隔符将数据项分开,包含数据项值对与数据记录集的格式实现,只增加了很少的冗余数据,序列化编码、解码的方法简单,体积小,编码的效率较高,能支持文本和二进制数据,可直接阅读。与XML、JSON等格式相比,有数据包小、数据交换速度快、应用方便等特点,可以把它用在C/S/S架构、B/S/S架构或分布式应用之间的数据通信,异构环境下的数据交换也适用。
关键词:XMLJSON结构化数据交换

1 技术背景

随着计算机技术的发展,计算机网络的应用无处不在,应用软件的架构也已脱离桌面式单机时代,发展到C/S(客户/怎么写作架构)、C/S/S(客户/中间件应用怎么写作/数据库怎么写作)、B/S/S(浏览器客户/Web应用怎么写作/数据库怎么写作)和分布式多层异构平台。这些结构都能实现多客户端、多并发和大型数据访问的软件管理信息系统,大大提高了信息流通的速度和效率,吸引了越来越多的企业、个人通过网络从事其相关活动,基于网络的数据交换和业务协作越来越频繁。
数据交换的协议主要是基于TCP/IP、HTTP等底层协议,数据的访问方法不同架构有不同的方式:
C/S主要使用数据库怎么写作器专有协议和数据格式,使用如SQL(结构化查询语言)等方法,利用客户端的开发工具(如PowerBuilder,Delphi,Vb等)实现数据的访问。
C/S/S架构客户端使用与中间件应用怎么写作器的专有协议访问,如Oracle Bea Tuxedo使用简单的字串到复杂的FML等多种交换方式实现客户端与中间件的数据交换。中间件与数据库的访问同C/S架构。
B/S/S是基于浏览器瘦客户端,使用HTTP协议与WEB怎么写作器交互,在文本交互方式的基础上发展出如XML、JSON等开放的交换格式。
当前流行的数据交换格式和方案主要有XML、JSON和Google的Protocol buffer等。
XML:以文本格式描述数据的标记语言,缺点是用XML描述的数据比原始数据大很多,而且数据访问解析比较慢,格式复杂,传输占用带宽。怎么写作器端和客户端都需要花费大量代码来解析XML,不论怎么写作器端和客户端代码变的异常复杂和不容易维护,客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码,怎么写作器端和客户端解析XML花费资源和时间都较多。
JSON:(JaScript Object Notation) 是一种轻量级的数据交换格式,它基于JaScript Programming Language,相对于XML,它更加易读。但JSON中的分隔符只限于单引号、小括号、中括号、大括号、冒号和逗号等可输入字符,若数据内容中本身包含这些字符时,要做转移处理,会增加解析的复杂度,且对于其它语言编码解码相对复杂。
Protocol buffer:是Google公司开源的结构化数据格式,功能类似XML,但结构复杂,编码与解码API比较复杂,编码过程需要专门的编译步骤,压缩的二进制格式,无法直接阅读。

2 一种结构化数据交换格式及方法

本文提供一种结构化数据交换格式及方法,数据交换包的结构主要由数据项值对与数据记录集两种结构组成,能很简明地描述数据,并使用特殊的不可输入分隔符将数据项分开,包含数据项值对与数据记录集的格式实现,只增加了很少的冗余数据,序列化编码、解码的方法简单,体积小,编码的效率较高,能支持文本和二进制数据,可直接阅读。与XML、JSON等格式相比,有数据包小、数据交换速度快、应用方便等特点,可以把它用在C/S/S架构、B/S/S架构或分布式应用之间的数据通信,异构环境下的数据交换也适用。如图1
结构化数据交换格式由两大数据区组成,一是数据项值对区,另一个是数据记录集内容区,数据项值对也可以理解为数据域,由数据项的名称和数据项的内容组成,这类数据项通常在软件开发中简称为“值对”,值对的优点是在数据交换中每个数据项可以用唯一的名称标识出来,在数据交换解析时可以用名称直接取得该数据项的内容,可以提高解析速度,本文描述的结构中数据项值对以最小的冗余来描述,如图2所示:
数据项名称与数据项内容之间用不可输入的字符分隔,

源于:论文 范文www.udooo.com

该字符为ASCII码为1的键盘不可输入字符,数据项的内容中不易包含这类字符。数据项值对区由若干个数据项组成,本文描述提供的格式将不同的数据项之间由ASCII码为2的字符分隔。数据项值对区结束由ASCII码为6的字符表示。
数据项值对主要表达一维的数据,数据交换中还需要表达二维结构的数据,通常称为数据记录集,本文描述提供的格式将记录集的描述进行了优化,同一个数据包中可包含一个以上的记录集,每个记录集有唯一的名称,并将每个记录集的属性(主要有记录集的名称、记录数和列名)以数据项值对形式放入了数据项值对区中,解析数据时可用名称取得记录集,并通过属性项可以取得记录集记录数和记录集的各列名称,大大提高记录集的解析速度。
数据记录集的名称属性设计为一个特殊的数据项值对,该数据项值对的名称为数据记录集的名称,该数据项值对的内容为一固定的记录集标识符:[$],由美元符号和一对中括号组成。
数据记录集的记录数属性由编码时放入,该项的名称为:“数据记录集的名称.rows”,该项的值为记录数。
数据记录集的各列号由一数据项表示,该项的名称为:“数据记录集的名称.cols”,该项的内容是由各列名称和ASCII码为4的列分隔符组成,参见图3:
数据记录集内容区如图4:
由若干个记录集内容组成,每个记录集的内容格式由名称、行数据和结束符组成,记录集内容开始处的名称由三部分组成,一是标识起始符,由ASCII码为3的字符和‘<’字符总共2个字符组成,第二部分是记录集名称,第三部分为标识结束符,由字符‘>’和ASCII码为3的字符组成,行数据由每行数据组成,行与行之间由ASCII码为5的字符分隔,行数据由数据集的各列加上ASCII码为4的列分隔符组成,记录集内容结束符与数据项值对区结束符相对,为ASCII码为6的字符,数据记录集内容区中的多个记录集依次存放。结构化数据交换格式(全局示意图)如图5:

3 结构化编码方法

本文描述的结构化交换格式在编码时相对简易,与计算机语言无关,当前主流的语言与平台都能实现,本文以Ja语言的方式描述编码的实施方式。
结构化数据交换格式编码主要由以下关键步骤
3.1 分配数据交换的空间,开辟一个数据项值对区和一个数据记录集内容区,如在Ja中申明两个String Buffer变量buf1和buf2。
3.2 写入数据项值对,先写入数据项的名称,若该数据项的名称为‘name1’,则buf1.append(‘name1’),依次写入数据项名称与内容的分隔符buf1.append(char(1)),再将数据项的内容写入,如buf1.append(‘name1_value’),最后写入与下一个数据项的分隔符buf1.append(char(2)),一个完整的数据项编码过程结束。
3.3 若有多个数据项,按步骤2的方法依次写入,所有的数据项写完后,最后写入数据项值对区的区结束符 buf1.append(char(6)),若本次编码中有记录集,应将记录集的属性数据项写入到数据项区后才能写入区结束符。
3.4 若有记录集,写入数据记录集时,先将记录集名称按步骤2写入,内容为”[$]”,buf

2.append(“记录集1 [$]”)。

3.5 完成步骤4后,将记录集的记录数按步骤2写入,名称为:记录集名称.rows ,内容为记录数,如Ja的list取记录数为list名.size(),buf2.append(“记录集

1.rows 1000”)。

3.6 将记录集的各列列名称按步骤2写入,名称为:记录集名称.cols,内容是各列列名用ASCII码为4的字符分隔,分隔字符个数为记录集的列数减一,两端无分隔符,

源于:大学生论文www.udooo.com

buf2.append(“记录集

1.cols c1 c2 c3”)。

3.7 写记录集的内容,在数据记录集内容区 buf2中,首先写入记录集标识起始符,为两个字符,第一个是ASCII码为3的字符,第二个为”<”,buf2.append(char(3)),buf2.append(“<”)。
3.8 在数据记录集内容区 buf2中写入记录集的名称,buf

2.append(“记录集1”)。

3.9 依次写入记录集标识结束符,与起始符对应为两个字符,第一个是“>”,第二个是ASCII码为3的字符,buf

2.append(“>”),bufappend(char(3))。

3.10 写入数据记录集的行数据,从记录集的第一行开始,依次写入,每一行的规则是:按列的顺序(顺序与记录集的各列名属性顺序一致),写入各列的内容,列之间用ASCII码为4的字符分隔,最后一列后续不用些分隔,一行结束后写入行结束符(ASCII 码为5的字符),完成记录集所有行的数据后,写入记录集数据区结束符(ASCII码为6的字符)。

3.11 若有多个数据记录集,按步骤4至步骤10方法写入。

3.12 结构化数据交换格式解析主要由以下关键步骤:

对本文描述提供的结构化数据交换格式解析时,主要实现以下几大解析功能:
①通过名称取得指定数据项的内容。
②取得所有数据项名称的列表或数组。
③通过名称取得指定数据记录集的游标句柄(或指针)。
④实现记录集游标遍历(单向或双向)。
⑤通过列名称取得当前记录集游标所在行指定列的内容。
⑥通过列索引编号取得当前记录集游标所在行指定列的内容。
4 结束语
对本文描述一种结构化数据交换格式,有一定的实用意义,能很简明地描述数据,并使用特殊的不可输入分隔符将数据项分开,包含数据项值对与数据记录集的格式实现,只增加了很少的冗余数据,序列化编码、解码的方法简单,体积小,编码的效率较高。
参考文献:
Bruce Eckel(候捷)译.Ja编程思想.第二版.

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号