簡單的數據協議――SDP
版本:1.2
概述
SDP――Simple Data Protocol,簡單的數據協議。
本文章提供一種數據描述的設計參考,統一解決Server to Server,Client(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>