有沒有一種方法可以在XML中指定基於數據包的協議,因此(德)序列化可以自動發生?XML中的協議規範
上下文如下。我有一個通過串口進行通信的設備。它發送和接收由'數據包'組成的字節流。數據包是基本數據類型和(有時)其他數據包的集合。數據包的一些元素是有條件的;它們的包含取決於早期的元素。
我有一個與此設備通信的C#應用程序。當然,我不想在整個應用程序中使用字節級的工作。我想將協議與我的應用程序代碼分開。因此我需要將字節流轉換爲結構(類)。
目前我已經在C#中實現了協議,爲每個數據包定義了一個類。這些類爲每個數據包定義了元素的順序和類型。使團體成員有條件是困難的,因此協議信息以功能結束。
我想象的XML看起來像這樣(請注意,我的經驗設計XML限於):
<packet>
<field name="Author" type="int32" />
<field name="Nickname" type="bytes" size="4">
<condition type="range">
<field>Author</field>
<min>3</min>
<max>6</min>
</condition>
</field>
</packet>
.NET有一種叫做「二進制序列」,但我不認爲這就是我尋找。
即使數據包'包含'其他數據包並且有條件元素,是否有辦法將協議和代碼分開?
聽起來有點像WSDL。 – 2010-06-11 17:24:26
您是否定義了來自設備的數據包結構?或者是預先註冊的? – Rusty 2010-06-11 17:39:24
數據包結構是預先註冊的。我還應該說,我的興趣主要是學術性的,而不是實際的或商業性的。 – Matt 2010-06-11 18:30:40