VB.NET對象序列劇本概念剖析
VB.NET編程語言的應用,為開發人員帶來了非常大的好處。其中有很多比較新穎的技術和功能讓程序員們眼前一亮。這里是一個簡單的控制臺應用程序,它通過使用System.Runtime.Serialization名字空間演示了VB.NET對象序列(Object Serialization)。 #t#
什么是對象序列(Object Serialization)?
序列化是把圖式對象轉換成為線性字節序列的過程。字節序列可以發送到別處,例如遠程計算機,然后執行序列解碼,這樣就在遠程主機內存中生成了原來圖式對象的克隆。序列化過程在VB.NET中是十分容易使用的,而且是開放的,每個VB6的程序員都曾經自覺或不自覺地使用過序列化。當任何ActiveX dll或者ActiveX exe被創建后,都有五個屬性可以設置,最后一個Persistable屬性就是VB6中的序列化。VB6中序列化的過程不需要用戶認知,大部分開發人員也從來不管序列化做了什么和如何運作。在VB.NET中,有著公共對象庫,每個支持.NET體系的語言都可以通過System.Runtime.Serialization的名字空間來理解和使用VB.NET的序列化特征。
我們在 .NET中做序列化的時候,Runtime這個元數據“知道”每個對象在內存中的存放規劃,它有對這些區域和屬性的定義,這使得VB.NET對象序列自動執行,不用對序列化各區域編寫代碼。
序列化流可以用XML進行編碼,或者壓縮成二進制數據表示。具體格式決定于調用的格式化對象。可插入的格式化對象允許開發人員使用兩種已提供的格式:binary 和 SOAP,或者自行創建新的格式來進行對象的序列化。
序列化可以替代任何流,象MemoryStream、NetStream等,而不僅僅是FileStream。
序列化操作使用到下面的幾個類:
Formatter:負責按照指定格式將對象數據寫入到輸出流。
ObjectIDGenerator:負責創建對象的Ids。它跟蹤已經可見的對象,當你要求這個對象的ID時,或者返回存在的ID,或者創建一個新ID。
ObjectManager:負責跟蹤序列解碼時的對象。
例程說明
這里的例子描述了將內存中的VB.NET對象序列操作保存到磁盤的過程。它將創建一個單一連接列表,填充滿數據,然后序列化到磁盤的文件中。接著列表被解碼,恢復成內存中的一個對象。