嵌入式通訊序列化
時間:2023-11-01 來源:華清遠見
1.1.什么是序列化
序列化從本質上來說就是將對象序列化為二進制形式,一般也將序列化稱為編碼主要用于網絡傳輸、數據持久化等較多方面,與之相對應的是反序列化.
反序列化則是將從網絡、磁盤等讀取的字節數組還原成原始對象,以便后續業務的進行,一般也將反序列化稱為解碼(Decode),主要用于網絡傳輸對象的解碼,以便完成遠程調用。
1.2.為什么要進行序列化
當兩個進程在進行遠程通信時,彼此可以發送各種類型的數據。無論是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方需把這個對象轉換為字節序列,才能在網絡上傳送;接收方則需把字節序列再恢復為對象。 把對象轉換為字節序列的過程稱為對象的序列化。序列化最終的目的是為了對象可以跨平臺存儲和進行網絡傳輸。把字節序列恢復為對象的過程稱為對象的反序列化
1.3嵌入式中常使用的序列化格式
1.3.1.JSON格式
Json是一種輕量級的數據交換格式,可以被使用在多種編程語言中,用于前后端之間的數據傳輸、存儲和交換數據。可以說是“用更少的編碼,有更快的處理速度”,所以深受廣大程序員的喜愛。JSON 格式的數據是由鍵值對組成的,其中鍵值對之間使用逗號分隔。在 JSON 中,鍵和值都必須使用雙引號引起來。
舉個簡單的例子

1.3.2.XML格式
XML是一種常用的序列化和反序列化協議,具有跨機器,跨語言等優點。 XML歷史悠久,其1.0版本早在1998年就形成標準,并被廣泛使用至今。
XML的最初產生目標是對互聯網文檔進行標記,所以它的設計理念中就包含了對于人和機器都具備可讀性。 但是,當這種標記文檔的設計被用來序列化對象的時候,就顯得冗長而復雜。 XML本質上是一種描述語言,并且具有自我描述的屬性,所以XML自身就被用于XML序列化的IDL。
1.4.總結
序列化的含義是:在網絡傳輸的時候可以將應用層的數據結構或對象轉化為對應的序列化協議的格式。
網絡傳輸序列化的過程:序列化協議的定義是存儲在IDL文件中,然后通過Stub/Skeleton進行轉換為對應的引用程序的數據類型。如JSON 格式的化 就可以轉換為 C/C++ 使用的集中序列化協議,其中Json是我們平時比較常使用的。因為相對于其他的序列化協議,它是易理解,兼容性好,傳輸的內容大小也小。

