C# 序列化原因 (轉)

來源:互聯網
上載者:User

標籤:

     1.什麼是序列化
  序列化是將對象狀態轉換為可保持或傳輸的格式的過程,在序列化過程中,對象的公用欄位和私人欄位以及類的名稱(包括包含該類的程式集)都被轉換為位元組流,然後寫入資料流。與序列化相對的是還原序列化,它將流轉換為對象。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。
  2.為什麼使用序列化
  a. 一個原因是將對象的狀態保持在儲存媒體中,以便可以在以後重新建立精確的副本。
  我們經常需要將對象的欄位值儲存到磁碟中,並在以後檢索此資料。儘管不使用序列化也能完成這項工作,但這種方法通常很繁瑣而且容易出錯,並且在需要跟蹤對象的階層時,會變得越來越複雜。可以想象一下編寫包含大量對象的大型商務應用程式的情形,程式員不得不為每一個對象編寫代碼,以便將欄位和屬性儲存至磁碟以及從磁碟還原這些欄位和屬性。序列化提供了輕鬆實現這個目標的快捷方法。
  b.另一個原因是通過值將對象從一個應用程式定義域發送到另一個應用程式定義域中。
  例如,序列化可用於在 ASP.NET 中儲存工作階段狀態並將對象複製到 Windows 表單的剪貼簿中。遠端還可以使用序列化通過值將對象從一個應用程式定義域傳遞到另一個應用程式定義域中。
  通用語言執行平台 (CLR) 管理對象在記憶體中的分布,.NET 架構則通過使用反射提供自動的序列化機制。對象序列化後,類的名稱、程式集以及類執行個體的所有資料成員均被寫入儲存媒體中。對象通常用成員變數來儲存對其他執行個體的引用。類序列化後,序列化引擎將跟蹤所有已序列化的引用對象,以確保同一對象不被序列化多次。.NET 架構所提供的序列化體繫結構可以自動正確處理對象圖表和循環參考。對對象圖表的唯一要求是,由進行中序列化的對象所引用的所有對象都必須標記為 Serializable(請參閱基本序列化)。否則,當序列化程式試圖序列化未標記的對象時將會出現異常。
  當還原序列化已序列化的類時,將重新建立該類,並自動還原所有資料成員的值。

C# 序列化原因 (轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.