在我們很多程序中,需要將數(shù)據(jù)保存到本地,以便于下次打開還能看到原始數(shù)據(jù)。例如我們Xmind思維導(dǎo)圖,例如我們的Power Designer等等,都是有保存一個(gè)隸屬于自己的工程文件,那么今天我要說的就是,工程文件中的序列化和反序列化。
【簡介】
序列化就是就愛那個(gè)對(duì)象實(shí)例的狀態(tài)存儲(chǔ)到存儲(chǔ)媒體的過程。在此過程中,先將對(duì)象的公共字段和私有字段以類的名稱(包括類的程序集)轉(zhuǎn)為字節(jié)流,然后再把字節(jié)流寫入數(shù)據(jù)流,在隨后對(duì)對(duì)象進(jìn)行反序列化的時(shí)候,將創(chuàng)建與原來對(duì)象相同的副本。
【為什么要序列化?序列化的好處是什么?】
1、將對(duì)象的狀態(tài)保存在存儲(chǔ)媒體中,以便于可以在以后重新創(chuàng)建出來完全相同副本。
2、按值將對(duì)象從一個(gè)應(yīng)用程序域發(fā)送到另一個(gè)應(yīng)用程序域。這樣可以方便內(nèi)存對(duì)象變成磁盤數(shù)據(jù),便于網(wǎng)絡(luò)傳輸,用于分布式,WCF等應(yīng)用(JSON其實(shí)就是將對(duì)象序列化為字符串)。實(shí)現(xiàn)對(duì)象的備份和還原。
【持久儲(chǔ)存】
我們經(jīng)常需要將對(duì)象的字段值保存到磁盤中,并在以后檢索這些數(shù)據(jù)。盡管我們不采用序列化也可以做到這事兒,但是通常這種方法比較繁瑣而且容易出現(xiàn)差錯(cuò)。在需要跟蹤對(duì)象的層次結(jié)構(gòu)時(shí),會(huì)變得越來越復(fù)雜。可以想象如果我們?cè)谶M(jìn)行編寫一個(gè)包含大量對(duì)象的大型的業(yè)務(wù)應(yīng)用程序的時(shí)候,開發(fā)人員不得不為每個(gè)對(duì)象編寫代碼,以便于將字段和屬性保存