简单的数据协议――SDP

简单的数据协议――SDP

版本:1.2

概述

SDP――Simple Data Protocol,简单的数据协议。

 

本文章提供一种数据描述的设计参考,统一解决Server to ServerClient(UI) to Server通信时对业务数据、UI显示数据的描述、封装、传输需求,支持多种高级的数据类型定义,便于序列化、持久化。

 

常见的高级数据有:数组(值数组,对象数据),树,对象(key/value),二进制数据(文件、图片…)等。

 

数据项定义

数据项分为基础数据项和高级数据项,通过基础数据项和高级数据项的嵌套组合来描述复杂的业务数据,例如:数组、树。

 

字符串(基础)

type属性:string,缺省时默认是string类型。

节点值:字符串(由CDATA包括的字符串,避免xml解析导致字符串的空白前缀和后缀丢失)

例子:

<set name="参数名称" type="string">字符串</set>

<set name="参数名称"><CDATA[  字符串(有前后空白)  ]]></set>

 

布尔值(基础)

type属性:bool

节点值:true或者false,大小写不敏感

XML例子:

<set name="参数名称" type="bool">true</set>

<set name="参数名称" type="bool">false</set>

 

整数(基础)

type属性:int

节点值:整数。

例子:

<set name="参数名称" type="int">123456</set>

<set name="参数名称" type="int">-123456</set>

 

实数(基础)

type属性:number

节点值:实数。

例子:

<set name="参数名称" type="number">123456.789</set>

<set name="参数名称" type="number">-123456.789</set>

 

日期(基础)

type属性:date

节点值:yyyy-MM-dd HH:mm:ss格式字符串

例子:

<set name="参数名称" type="date">2011-12-30 23:59:59</set>

 

XML(基础)

type属性:xml

节点值:xml字符串

例子:

<set name="参数名称" type="xml"><xml/></set>

 

二进制流(基础)

type属性:stream/base64

节点值:base64字符串

例子:

<set name="参数名称" type="stream/base64">welkrwelkrjlsdkfjsldkfasf==</set>

 

URL引用(基础)

type属性:url

节点值:相对路径或绝对路径。

例子:

<set name="参数名称" type="url">loadimage?id=123456</set>

<set name="参数名称" type="url"><CDATA[doc/20130101/file1.doc]]></set>

 

对象(高级)

type属性:entity

节点值:entity节点。

  <!--type:实体类型名称-->

<entity type="">

    <!--实体属性节点:多个set节点集合-->

    <set/>

  </entity>

例子:

<set name="参数名称" type="entity">

  <entity type="Product">

    <set name="产品名称" type="string">XXXX产品</set>

    <set name="产品编码" type="int">0001</set>

  </entity>

</set>

 

树节点(高级)

type属性:node

节点值:node节点。

  <!--type:实体类型名称-->

<node type="">

<!--树节点属性节点:多个set节点集合(不支持表单set节点)-->

<set/>

<nodes>

<!--树节点子节点:多个node节点集合-->

      <node/>

   </nodes>

  </node>

例子:

<set name="参数名称" type="node">

  <node type="FoodType">

   <set name="名称" type="string">餐饮</set>

   <set name="编号" type="int">01</set>

   <nodes>

      <node type="FoodType">

        <set name="名称" type="string">中餐</set>

        <set name="编号" type="int">0101</set>

      </node>

      <node type="FoodType">

        <set name="名称" type="string">西餐</set>

        <set name="编号" type="int">0102</set>

      </node>

   </nodes>

  </node>

</set>

 

数组(高级)

type属性:array

节点值:多个set节点集合,不设置set节点的name属性。

例子1:对象数组(表格)

<set name="参数名称" type="array">

<set type="entity">

 <entity type="Product">

    <set name="产品名称" type="string">XXXX产品1</set>

    <set name="产品编码" type="int">0001</set>

 </entity>

</set>

<set type="entity">

 <entity type="Product">

    <set name="产品名称" type="string">XXXX产品2</set>

    <set name="产品编码" type="int">0002</set>

 </entity>

</set>

</set>

例子2:字符串数组

<set name="参数名称" type="array">

<set type="string">字符串1</set>

<set type="string">字符串2</set>

</set>

 

你可能感兴趣的:(Web,设计,数据协议)