CN109933331A - 一种客户端服务器间数据转换方法及相关组件 - Google Patents
一种客户端服务器间数据转换方法及相关组件 Download PDFInfo
- Publication number
- CN109933331A CN109933331A CN201910171695.2A CN201910171695A CN109933331A CN 109933331 A CN109933331 A CN 109933331A CN 201910171695 A CN201910171695 A CN 201910171695A CN 109933331 A CN109933331 A CN 109933331A
- Authority
- CN
- China
- Prior art keywords
- dson
- client
- server
- source code
- data
- 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.)
- Pending
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 26
- 238000006243 chemical reaction Methods 0.000 claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000006116 polymerization reaction Methods 0.000 abstract description 6
- 238000011161 development Methods 0.000 abstract description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 12
- 230000000694 effects Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013497 data interchange Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种客户端服务器间数据转换方法,包括对接收到的DSON源码进行源码解析,生成抽象语法树;确定所述DSON源码的目标代码类型;将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码。该方法在客户端和服务端之间再架构一层,对传入的服务端API输出的DSON源码通过DSON语言的描述和执行输出为客户端可以直接使用的数据,在API之上做聚合处理的操作,并在网关层来执行这个逻辑都从客户端和服务端中抽取出来,扩大了使用范围;同时降低了DSON的发布成本,提高了开发效率;本发明还公开了一种客户端服务器间数据转换装置、系统、DSON转换设备及一种可读存储介质,具有上述有益效果。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种客户端服务器间数据转换方法、装置、系统、一种DSON转换设备及可读存储介质。
背景技术
技术的架构CS(Client/Server客户端/服务器架构)或BS(Web/Server浏览器/服务器架构)下作了前后端分离的设计后,客户端侧和服务端侧的交互更多是居于纯数据的交互,一般情况下通过基于RESTful或者其他的方式来暴露API,从而输出数据,在这种情况下客户端对数据获取的要求和服务端对数据输出的要求是不一样的。
客户端需要能直接拿来可以直接展示的数据,而服务端需要输出可以被重复利用的数据。服务端不关心客户端怎么展示数据,这样可以充分利用现有的API,从而避免API爆炸,而客户端希望能直接使用可被直接展示的数据,这样可以避免在业务发生变化。客户端受限于发版节奏和碎片化问题,服务端受限于可维护性和稳定性,导致这个客户端与服务器间数据处理的矛盾越来越明显,整体的工程效率比较低下,运维成本也比较高。
目前常用GraphQL在客户端和服务端中间架构一层做数据获取。但是GraphQL更多的是直接根据底层数据描述输出API(一种描述API的语言),这种方式不能写逻辑,只能约束输出数据字段的类型以及是不是展示等,不能做转换,比如不能把“1”变成“已购买”这样的文字,且只能用于一个接口,使用范围较为局限。
因此,如何解决客户端和服务器间数据处理矛盾,同时满足各种数据转换需求,是本领域技术人员需要解决的技术问题。
发明内容
本发明的目的是提供一种客户端服务器间数据转换方法,该方法在API之上做聚合处理的操作,缓解了客户端和服务器间数据处理矛盾,同时可以满足各种数据转换需求;本发明的另一目的是提供一种客户端服务器间数据转换装置、系统、一种DSON转换设备及可读存储介质。
为解决上述技术问题,本发明提供一种客户端服务器间数据转换方法,包括:
对接收到的DSON源码进行源码解析,生成抽象语法树;
确定所述DSON源码的目标代码类型;
将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码。
可选地,所述对接收到的DSON源码进行源码解析,包括:
对接收到的DSON源码进行反序列化处理,生成所述DSON源码的JSON结构;
对所述JSON结构进行预设DSON关键字遍历识别,得到关键字;
对所述关键字进行节点的生成以及递归,得到抽象语法树。
可选地,所述对接收到的DSON源码进行反序列化处理,包括:
调用javax.json对接收到的DSON源码进行反序列化处理。
本发明公开一种客户端服务器间数据转换装置,包括:
源码解析单元,用于对接收到的DSON源码进行源码解析,生成抽象语法树;
目标代码确定单元,用于确定所述DSON源码的目标代码类型;
编译单元,用于将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码。
可选地,所述源码解析单元包括:
反序列化处理子单元,用于对接收到的DSON源码进行反序列化处理,生成所述DSON源码的JSON结构;
关键字识别子单元,用于对所述JSON结构进行预设DSON关键字遍历识别,得到关键字;
递归子单元,用于对所述关键字进行节点的生成以及递归,得到抽象语法树。
可选地,所述反序列化处理子单元具体为javax子单元;所述javax子单元用于:调用javax.json对接收到的DSON源码进行反序列化处理。
本发明公开一种DSON转换设备,包括:
存储器,用于存储程序;
处理器,用于执行所述程序时实现所述客户端服务器间数据转换方法的步骤。
本发明公开一种客户端服务器间数据转换系统,包括:
DSON转换设备,用于对接收到的DSON源码进行源码解析,生成抽象语法树;确定所述DSON源码的目标代码类型;将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码;
客户端,用于当向服务端发送数据请求时,将待交互的客户端数据发送至所述DSON转换设备进行数据处理后发送至所述服务端;
服务端,用于当接收到客户端发送的数据请求时进行数据检索,得到DSON源码,并将所述DSON源码发送至所述DSON转换设备进行数据处理后发送至所述客户端。
本发明公开一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述客户端服务器间数据转换方法的步骤。
本发明所提供的客户端服务器间数据转换方法,在客户端和服务端之间再架构一层,影响客户端和服务端职责纠结的展示逻辑,对传入的服务端API输出的DSON源码通过DSON语言的描述和执行输出为客户端可以直接使用的数据,通过上述过程对客户端与服务端间生成的后端数据聚合处理,在API之上做聚合处理的操作,并在网关层来执行这个逻辑都从客户端和服务端中抽取出来,实现了写逻辑,扩大了使用范围;同时可以使用动态脚本语言编译器等简单工具实现上述过程,使DSON的发布成本降低,可以快速发布DSON代码到线上,提高了开发效率。
本发明还公开了一种客户端服务器间数据转换装置、DSON转换设备、一种客户端服务器间数据转换系统及一种可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种客户端服务器间数据转换方法的流程图;
图2为本发明实施例提供的一种执行过程示意图;
图3为本发明实施例提供的一种客户端服务器间数据转换装置的结构框图;
图4为本发明实施例提供的一种DSON转换设备的结构框图;
图5为本发明实施例提供的一种DSON转换设备的结构示意图;
图6为本发明实施例提供的一种客户端服务器间数据转换系统工作示意图。
具体实施方式
本发明的核心是提供一种客户端服务器间数据转换方法,该方法在API之上做聚合处理的操作,缓解了客户端和服务器间数据处理矛盾,同时可以满足各种数据转换需求;本发明的另一核心是提供一种客户端服务器间数据转换装置、系统、DSON转换设备及可读存储介质。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出了一种客户端服务器间数据转换方法,该方法基于DSON,DSON(DataObject Notation一种面向数据的对象标记语言)主要设计为一个DSL(domain-specificlanguage专注于某个应用程序领域的计算机语言,又译作领域专用语言),用于解决数据聚合问题,具备一定的数据处理和转化能力,主要应用于在后端接口返回相对原子(可被很好复用)的业务接口数据时通过DSON的描述和执行返回给客户端一个可被直接使用的数据。
本发明通过在客户端和服务端之间再架构一层,聚合处理转换后端数据,并输出适合客户端、服务器使用的数据。
请参考图1,图1为本实施例提供的一种客户端服务器间数据转换方法的流程图;该方法主要包括:
步骤s110、对接收到的DSON源码进行源码解析,生成抽象语法树。
抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntaxtree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树。一旦AST被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。由于抽象语法树的生成方式多样,为便于理解,本实施例中选取其中一种常用的方式进行介绍。具体地,步骤s110对接收到的DSON源码进行源码解析可以包括以下步骤:
步骤s111:对接收到的DSON源码进行反序列化处理,生成DSON源码的JSON结构;
步骤s112:对JSON结构进行预设DSON关键字遍历识别,得到关键字;
步骤s113:对关键字进行节点的生成以及递归,得到抽象语法树。
因为DSON本质就是JSON,它的主要格式遵循于JSON,所以DSON代码进来后可以先对其进行JSON反序列化处理。其中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并可以有效地提升网络传输效率。
由于存在较多的JSON反序列化处理工具,本实施例中对调用的处理工具不做限定,可以实现JSON结构的生成即可。其中,可以选用javax.json作为JSON反序列化工作,因为DSON代码最后是需要转成其他目标语言的代码,这个时候就需要在两个语言之间进行行数的匹配,以方便调试和问题跟踪。而javax.json的JsonParser(JSON解析器)可以方便的获取JSON的代码位置,方便后续生成目标语言的代码位置映射表。
当生成DSON代码的JSON结构后,就需要对这个JSON结构进行遍历,并识别其中的DSON关键字,DSON关键字包括:#set、#debug、#default、#map、#reduce、#merge、#if和#elseif和#else、#filter。然后根据DSON的语言范性生成对应DSON代码的抽象语法树。
先识别出DSON的关键字,然后根据这个关键字的节点建造者来生成对应的关键字节点,然后根据原先JSON的结构来递归生成语法树。参照上述步骤进行抽象语法树的生成效率较高,且精准度较高,本实施例中仅对上述过程进行详细介绍,其他过程均可参照本实施例的介绍,在此不再赘述。
步骤s120、确定DSON源码的目标代码类型。
DSON需要根据需要生成的目标代码来注入其目标代码的DSON编译器.比如需要生成的是Groovy代码那就需要注入Groovy编译器。这样设计的目的也是为了能让DSON能方便生成多种目标语言,比如针对Nginx环境可以生成lua来的方便嵌入执行。
步骤s130、将抽象语法树注入目标代码类型对应的DSON编译器中,得到目标代码。
DSON编译器将DSON核心解析出的抽象语法树生成对应的目标语言,比如DSON的Groovy编译器就能Groovy代码,这样生成的代码就能在对应的平台上执行。
当DSON编译器拿到当前DSON代码的抽象语法树后,就能递归遍历这个语法树,然后根据当前节点的代码生成器,使用模板来生成对应节点的目标代码。
同时DSON编译器中也可以包含执行器可以直接执行生成的目标代码。生成代码后还可以支持根据外部绑定的一个或多个参数(或者数据源)直接执行生成的目标代码并得出。
以下为一种实现上述过程的代码形式,在此仅以下述情况为例进行介绍:
执行过程如图2所示,基于上述代码可以实现整基于DSON的数据转换的执行过程。
基于上述技术方案,本实施例所提供的客户端服务器间数据转换方法,在客户端和服务端之间再架构一层,影响客户端和服务端职责纠结的展示逻辑,对传入的服务端API输出的DSON源码通过DSON语言的描述和执行输出为客户端可以直接使用的数据,通过上述过程对客户端与服务端间生成的后端数据聚合处理,在API之上做聚合处理的操作,并在网关层来执行这个逻辑都从客户端和服务端中抽取出来,实现了写逻辑,扩大了使用范围;同时可以使用动态脚本语言编译器等简单工具实现上述过程,使DSON的发布成本降低,可以快速发布DSON代码到线上,提高了开发效率。
本实施例中对DSON作为语言的一些基本情况进行介绍(包括DSON关键字),在实际使用过程中可以对照以下内容进行DSON语言的处理。
1、基本语法。
DSON主要使用两个特殊符号($和#)来表面进入了DSON的处理单元以区别于正常的JSON数据表示结构。
(1)、$的作用
$在不同的语义环境下有不同的作用。一方面用来描述这是一个变量,主要通过#set来定义的局部变量。
比如上面例子中的
{
"#set($templist1)":[1,2,3]
}
这样创建了一个变量$templist1并为它赋值一个数组。
其它如#map和#reduce也会定义一些临时变量,创建的变量也以$开头。$后面的变量名必须以英文名开始。
$还有一个作用是当它在一个计算节点的时候,它本身是一个函数,用于获取外部传入的参数的值。
如
{
"#set($payloadMap)":"#{$('payload')}"
}
就有使用到2次$,其中set($payloadMap)表示为$payloadMap这个变量赋值,如果$payloadMap还不存在则创建这个变量,#{$('payload')}表示获取外部绑定过来的名为payload的值。
通过$定义的变量是有作用域的。以上一个{}作为他的作用域,如果需要一个全局变量的化,可以在做外面的{}里先#set的方式进行定义。
而有一些逻辑控制上会自己在他的作用域里生成一些特殊的变量,比如在#map中可以自己定义$index和$node。
(2)、#的作用
在JSON的key中用#作为前缀表示这是一个DSON的关键字,比如上面例子中的
{
"#set($m1)":"#{$payloadMap['mwp.PetStore.helloWorld@1']}"
}
#set就是一个关键字表示为一个变量赋值。
DSON中的所有的关键字有#set,#debug,#default,#map,#reduce,#merge,#if,#else,#else if,#filter 10个。后面会详细介绍每个关键字的用法。
还有使用#{}包含起来的字符串表示这个是一个运算值并返回一个当前的结果。
比如#{$payloadMap['mwp.PetStore.helloWorld@1']+'hello'}这个字符串就是表示取$payloadMap中的一个属性值,并且加上一个hello,并返回一个新的字符串回去.
2、基本数据类型
DSON的基本数据类型和JSON保持一致,包括:
string字符型
compute本质也是字符型,但是以#{}包含,表示内部需要被计算.
number数字型,包含整数和浮点
object对象型,比如{}
array数组型,比如[]
boolean布尔型,true/false
null空
3、DSON关键字
关键字包括:#set、#debug、#default、#map、#reduce、#merge、#if和#else if和#else、#filter。
(1)、#set
作用:#set用于为一个变量赋值,如果变量不存在则同时定义一个变量。
用法:"#set(<$变量名>)":<值>
支持类型:#set被赋值的变量名必须以$为前缀,值可以是基本数据类型,也可以是另外一个变量,或是通过其他关键字或UDF计算出来的值。
例如:
{
"#set($m1)":"#{$payloadMap['mwp.PetStore.helloWorld@1']}",
}
表示将$payloadMap['mwp.PetStore.helloWorld@1']的内容赋值给$m1
(2)、#debug
作用:#debug用于测试时输出调试信息,可以简单的认为就是在这里输出一个日志信息。
用法:"#debug":"<值>"
支持类型:值可以是基本数据类型,也可以是另外一个变量,或是通过其他关键字或UDF计算出来的值。
例如:
{
"#debug":"#{$m1['data']}"
}
表示将$m1['data']的内容打印出来
(3)、#default
作用:#default用直接在当年节点输出对应值的内容。
用法:"#default":"<值>"or"#default":{<具体的对象>}
支持类型:这里的值只支持object类型,或者是变量但是变量的类型也必须是object类型。
例如:
{
"#default":"#{$m1['data']}"
}
表示将$m1['data']中的对象直接平铺到当年节点中。
主要方便直接注入数据.
(4)、#map
作用:对一个数组中的每个值进行计算,然后输出也是一个数组。
用法:"#map(<$需要遍历的值的变量名>,<$定义遍历时输出索引的变量名>,<$定义遍历时输出值的变量名>)":{<具体的返回的对象也可以是计算列式>}
支持类型:值类型可以是任何类型。
例如:
{
"#map($m1,$index,$node)":"#{$node+1}"
}
表示遍历数组$m1对里面的每个值都+1,然后输出新的数组到当前节点中.
(5)、#reduce
作用:对一个数组中的每个值进行计算,然后输出也是一个最终值。
用法:#reduce(<$输入变量名>,<$临时定义的计算左值>,<$临时定义的计算右值>,<初始值>)":"#{一个计算类型}"
支持类型:值类型是compute型或object型。
例如:
{
"#reduce($tmp1,$x,$y,0)":"#{$x+$y}"
}
表示遍历数组$tmp1,然后将数组中的值都相加,最终输出相加的结果.
(6)、#merge
作用:合并多个不同的object类型变成一个object类型。
用法:"#merge":[<obejct类型>,<obejct类型>,{}]
支持类型:值类型只能是array类型,而array的元素也只能是object类型。
例如:
表示将$payload['complex']的值和下面的object值合并成一个新的object值,并输出在当前节点。
(7)、#if和#else if和#else
作用:用于做逻辑判断。
用法:"#if(<判断条件>)":<任何类型>,"#else if(<判断条件>)":<任何类型>,"#else":<任何类型>
支持类型:任何类型。
例如:
表示根据不一样的条件输出结果到当前节点。
(8)、#filter
作用:直接在当前节点输出对应值的内容,不过可以选取具体的值进行输出。
用法:"#filter($payload)":["a","b"]
支持类型:array类型。
例如:
{
"#filter($payload)":["a","b"]
}
表示选取$payload中的a和b两个字段组成新的object值输出到当前节点。
以上DSON面向数据的语言设计,基于JSON结构加上DSON关键字组成的DSON语言在表现形式上既能直接表现出数据结构,也能表现出其执行逻辑。
请参考图3,图3为本实施例提供的一种客户端服务器间数据转换装置的结构框图;该装置可以包括:源码解析单元210,目标代码确定单元220以及编译单元230。本实施例提供的客户端服务器间数据转换装置可与上述客户端服务器间数据转换方法可相互对照。
其中,源码解析单元210主要用于对接收到的DSON源码进行源码解析,生成抽象语法树;
目标代码确定单元220主要用于确定DSON源码的目标代码类型;
编译单元230主要用于将抽象语法树注入目标代码类型对应的DSON编译器中,得到目标代码。
其中,源码解析单元具体可以包括:
反序列化处理子单元,用于对接收到的DSON源码进行反序列化处理,生成DSON源码的JSON结构;
关键字识别子单元,用于对JSON结构进行预设DSON关键字遍历识别,得到关键字;
递归子单元,用于对关键字进行节点的生成以及递归,得到抽象语法树。
其中,反序列化处理子单元具体可以为javax子单元;javax子单元用于:调用javax.json对接收到的DSON源码进行反序列化处理。
本实施例提供的客户端服务器间数据转换装置可以在API之上做聚合处理的操作,缓解了客户端和服务器间数据处理矛盾,同时可以满足各种数据转换需求。
本实施例提供另一种客户端服务器间数据转换装置的结构划分形式,客户端服务器间数据转换装置主要包括DSON核心以及DSON编译器两部分。
其中,DSON核心的主要作用是解析DSON源码并生成抽象语法树。
DSON代码输入至DSON核心后先对其进行JSON反序列化处理,当生成DSON代码的JSON结构后,对这个JSON结构进行遍历,并识别其中的DSON关键字然后根据DSON的语言范性生成对应DSON代码的抽象语法树。
根据需要生成的目标代码来注入其目标代码的DSON编译器,DSON编译器将DSON核心解析出的抽象语法树生成对应的目标语言。
具体各单元的具体功能实现过程可参见上述实施例中对客户端服务器间数据转换方法的介绍,在此不再赘述。
请参考图4,图4为本实施例提供的一种DSON转换设备的结构框图;该设备可以包括:存储器300以及处理器310。DSON转换设备可参照上述客户端服务器间数据转换方法的介绍。
其中,存储器300主要用于存储程序;
处理器310主要用于执行程序时实现上述客户端服务器间数据转换方法的步骤。
请参考图5,为本实施例提供的一种DSON转换设备的结构示意图,该DSON转换设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在DSON转换设备301上执行存储介质330中的一系列指令操作。
DSON转换设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上面图1所描述的客户端服务器间数据转换方法中的步骤可以由DSON转换设备的结构实现。
本实施例提供一种客户端服务器间数据转换系统,该系统主要包括:DSON转换设备、客户端以及服务端。
其中,DSON转换设备可参见上述中对客户端服务器间数据转换方法的介绍,主要用于对接收到的DSON源码进行源码解析,生成抽象语法树;确定DSON源码的目标代码类型;将抽象语法树注入目标代码类型对应的DSON编译器中,得到目标代码。
客户端主要用于当向服务端发送数据请求时,将待交互的客户端数据发送至DSON转换设备进行数据处理后发送至服务端。
服务端主要用于当接收到客户端发送的数据请求时进行数据检索,得到DSON源码,并将DSON源码发送至DSON转换设备进行数据处理后发送至客户端。
图6所示为本实施例提供的一种客户端服务器间数据转换系统工作示意图,服务端包括详情服务器以及评论服务器,分别用于存储商品的详情信息以及用户评论。当客户端向服务端分别请求商品详情以及商品评论信息时,两服务器返回的DSON源码经过DSON转换设备后返回至客户端的过程详见图5,该系统实现了客户端服务器间高效的信息交互。
本实施例公开了一种可读存储介质,可读存储介质上存储有程序,程序被处理器执行时实现客户端服务器间数据转换方法的步骤,其中,客户端服务器间数据转换方法可参照图1对应的实施例,在此不再赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的客户端服务器间数据转换方法、装置、系统、DSON转换设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (9)
1.一种客户端服务器间数据转换方法,其特征在于,包括:
对接收到的DSON源码进行源码解析,生成抽象语法树;
确定所述DSON源码的目标代码类型;
将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码。
2.如权利要求1所述的客户端服务器间数据转换方法,其特征在于,所述对接收到的DSON源码进行源码解析,包括:
对接收到的DSON源码进行反序列化处理,生成所述DSON源码的JSON结构;
对所述JSON结构进行预设DSON关键字遍历识别,得到关键字;
对所述关键字进行节点的生成以及递归,得到抽象语法树。
3.如权利要求2所述的客户端服务器间数据转换方法,其特征在于,所述对接收到的DSON源码进行反序列化处理,包括:
调用javax.json对接收到的DSON源码进行反序列化处理。
4.一种客户端服务器间数据转换装置,其特征在于,包括:
源码解析单元,用于对接收到的DSON源码进行源码解析,生成抽象语法树;
目标代码确定单元,用于确定所述DSON源码的目标代码类型;
编译单元,用于将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码。
5.如权利要求4所述的客户端服务器间数据转换装置,其特征在于,所述源码解析单元包括:
反序列化处理子单元,用于对接收到的DSON源码进行反序列化处理,生成所述DSON源码的JSON结构;
关键字识别子单元,用于对所述JSON结构进行预设DSON关键字遍历识别,得到关键字;
递归子单元,用于对所述关键字进行节点的生成以及递归,得到抽象语法树。
6.如权利要求5所述的客户端服务器间数据转换装置,其特征在于,所述反序列化处理子单元具体为javax子单元;所述javax子单元用于:调用javax.json对接收到的DSON源码进行反序列化处理。
7.一种DSON转换设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述程序时实现如权利要求1至3任一项所述客户端服务器间数据转换方法的步骤。
8.一种客户端服务器间数据转换系统,其特征在于,包括:
DSON转换设备,用于对接收到的DSON源码进行源码解析,生成抽象语法树;确定所述DSON源码的目标代码类型;将所述抽象语法树注入所述目标代码类型对应的DSON编译器中,得到目标代码;
客户端,用于当向服务端发送数据请求时,将待交互的客户端数据发送至所述DSON转换设备进行数据处理后发送至所述服务端;
服务端,用于当接收到客户端发送的数据请求时进行数据检索,得到DSON源码,并将所述DSON源码发送至所述DSON转换设备进行数据处理后发送至所述客户端。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序,所述程序被处理器执行时实现如权利要求1至3任一项所述客户端服务器间数据转换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910171695.2A CN109933331A (zh) | 2019-03-07 | 2019-03-07 | 一种客户端服务器间数据转换方法及相关组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910171695.2A CN109933331A (zh) | 2019-03-07 | 2019-03-07 | 一种客户端服务器间数据转换方法及相关组件 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109933331A true CN109933331A (zh) | 2019-06-25 |
Family
ID=66986569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910171695.2A Pending CN109933331A (zh) | 2019-03-07 | 2019-03-07 | 一种客户端服务器间数据转换方法及相关组件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933331A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506314A (zh) * | 2020-04-08 | 2020-08-07 | 网易(杭州)网络有限公司 | 项目开发的方法、装置、服务器及介质 |
CN111680475A (zh) * | 2020-04-28 | 2020-09-18 | 五八有限公司 | 一种数据转换方法、装置、电子设备及存储介质 |
CN112667240A (zh) * | 2020-12-23 | 2021-04-16 | 平安普惠企业管理有限公司 | 程序代码转换方法及相关设备 |
CN113495731A (zh) * | 2020-03-19 | 2021-10-12 | 阿里巴巴集团控股有限公司 | 代码执行方法、装置、电子设备及存储介质 |
CN114489859A (zh) * | 2022-02-11 | 2022-05-13 | 浙江吉利控股集团有限公司 | 脚本代码的执行方法、装置、存储介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124604A1 (en) * | 2011-11-11 | 2013-05-16 | Ronald J. LeMaster | Source code generation for interoperable clients and server interfaces |
CN106293653A (zh) * | 2015-05-19 | 2017-01-04 | 深圳市腾讯计算机系统有限公司 | 代码处理方法及装置 |
CN106411626A (zh) * | 2015-08-03 | 2017-02-15 | 中兴通讯股份有限公司 | 一种基于dsl网元模拟器的测试方法及装置 |
-
2019
- 2019-03-07 CN CN201910171695.2A patent/CN109933331A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124604A1 (en) * | 2011-11-11 | 2013-05-16 | Ronald J. LeMaster | Source code generation for interoperable clients and server interfaces |
CN106293653A (zh) * | 2015-05-19 | 2017-01-04 | 深圳市腾讯计算机系统有限公司 | 代码处理方法及装置 |
CN106411626A (zh) * | 2015-08-03 | 2017-02-15 | 中兴通讯股份有限公司 | 一种基于dsl网元模拟器的测试方法及装置 |
Non-Patent Citations (2)
Title |
---|
RENTONGJIE: "使用Javascript实现DSL解析器:揭开DSL神秘面纱", 《HTTPS://JUEJIN.CN/POST/6844903540444397582》 * |
王三麻子: "AST抽象语法树", 《HTTPS://BLOG.CSDN.NET/W_L_L/ARTICLE/DETAILS/84637686》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495731A (zh) * | 2020-03-19 | 2021-10-12 | 阿里巴巴集团控股有限公司 | 代码执行方法、装置、电子设备及存储介质 |
CN113495731B (zh) * | 2020-03-19 | 2022-06-07 | 阿里巴巴集团控股有限公司 | 代码执行方法、装置、电子设备及存储介质 |
CN111506314A (zh) * | 2020-04-08 | 2020-08-07 | 网易(杭州)网络有限公司 | 项目开发的方法、装置、服务器及介质 |
CN111506314B (zh) * | 2020-04-08 | 2024-05-14 | 网易(杭州)网络有限公司 | 项目开发的方法、装置、服务器及介质 |
CN111680475A (zh) * | 2020-04-28 | 2020-09-18 | 五八有限公司 | 一种数据转换方法、装置、电子设备及存储介质 |
CN111680475B (zh) * | 2020-04-28 | 2022-11-15 | 五八有限公司 | 一种数据转换方法、装置、电子设备及存储介质 |
CN112667240A (zh) * | 2020-12-23 | 2021-04-16 | 平安普惠企业管理有限公司 | 程序代码转换方法及相关设备 |
CN114489859A (zh) * | 2022-02-11 | 2022-05-13 | 浙江吉利控股集团有限公司 | 脚本代码的执行方法、装置、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933331A (zh) | 一种客户端服务器间数据转换方法及相关组件 | |
CN104123288B (zh) | 一种数据查询方法及装置 | |
Gu et al. | XSLT transformation from UML models to LQN performance models | |
CN106844643A (zh) | 一种基于模板引擎的数据库动态生成方法 | |
CN112560100B (zh) | 数据脱敏方法及装置、计算机可读存储介质、电子设备 | |
CN107943691A (zh) | 一种自动产生智能合约的功能测试页面的方法及装置 | |
CN111124379B (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN104156313A (zh) | 一种Web服务测试用例自动生成方法 | |
JP2018088242A (ja) | データ処理装置、方法およびプログラム | |
CN106844380A (zh) | 一种数据库操作方法、信息处理方法和相应装置 | |
CN102566984B (zh) | 一种配置参数的方法及装置 | |
CN101699397A (zh) | 实现Java与XML数据绑定的方法 | |
Zhao et al. | RESTful web service composition: extracting a process model from linear logic theorem proving | |
CN107330014A (zh) | 一种数据表的创建方法与设备 | |
JP2012515972A (ja) | ウェブに基づくダイアグラム視覚性の拡張性 | |
CN109857389A (zh) | 模型数据生成方法、装置、计算机设备及存储介质 | |
Laird et al. | Constructing differential categories and deconstructing categories of games | |
CN112970011A (zh) | 记录查询优化中的谱系 | |
CN108932225B (zh) | 用于将自然语言需求转换成为语义建模语言语句的方法和系统 | |
Ye et al. | Chunkattention: Efficient self-attention with prefix-aware kv cache and two-phase partition | |
CN110309214A (zh) | 一种指令执行方法及其设备、存储介质、服务器 | |
van Breughel | Comparative Metric Semantics of Programming Languages: Nondeterminism and Recursion | |
Fuchs | Domain Specific Languages for ad hoc Distributed Applications. | |
EP1504362A1 (en) | Cooperation of concurrent, distributed networks of resources | |
Lai et al. | A model for estimating the size of a formal communication protocol specification and its implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190625 |
|
RJ01 | Rejection of invention patent application after publication |