我想了解序列化的概念。在許多文章中,序列化是將對象轉換爲字節序列(二進制數據)的過程,在通過網絡傳輸對象時非常有用。序列化概念-java,c#,
我在這裏有些困惑。讓我們說,我有一個課堂對象,我想將它傳遞給一個遠程過程。當我說對象意味着,它本身表示一組位和字節在同一臺計算機中(因爲計算機以位和字節的形式保存任何數據)。在這裏,它通過網絡傳輸這些比特和字節。對 ?我在這裏並不理解序列化概念。
任何幫助表示讚賞。謝謝。
我想了解序列化的概念。在許多文章中,序列化是將對象轉換爲字節序列(二進制數據)的過程,在通過網絡傳輸對象時非常有用。序列化概念-java,c#,
我在這裏有些困惑。讓我們說,我有一個課堂對象,我想將它傳遞給一個遠程過程。當我說對象意味着,它本身表示一組位和字節在同一臺計算機中(因爲計算機以位和字節的形式保存任何數據)。在這裏,它通過網絡傳輸這些比特和字節。對 ?我在這裏並不理解序列化概念。
任何幫助表示讚賞。謝謝。
類的對象將包含指向字符串和其他子對象的指針,引用或其他內容。這些指針是僅在發送計算機的地址空間中有意義的存儲器地址,因此如果通過網絡將其發送到另一臺計算機,則這些地址無效。
換句話說,如果你發送一個對象的字節,因爲它通過線路存在於內存中,你將只在另一端獲得它的shell,並且它的所有內容都將丟失。該對象將只包含指向無意義內存位置的指針。
序列化過程包括遵循這些指針並在其末尾序列化對象,以便整個對象圖可以通過電線發送,然後在另一端重新組裝,固定指針以使它們正確爲目標計算機的地址空間。
序列化是對象狀態的表示,用於傳輸或存儲。 如果你完全控制了環境,你幾乎可以寫入內存數據並在稍後重新讀取它。
如果你沒有完全控制,你需要一個規範來編寫和解析二進制數據。例如,圖像,聲音和視頻格式是關於如何對給定媒體進行二進制序列化和反序列化的規範。
如果您需要在兩種不同的編程環境(C#和Java)之間傳遞對象。您必須爲序列化選擇協議,因爲您無法在兩種環境之間傳遞原始對象狀態。您可以編寫自己的邏輯來執行此操作,.net和java都支持解析二進制數據和對象生成。或者,您可以使用SOAP之類的公共規範,並使用標準庫進行序列化和反序列化。