簡單的數據協議――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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章