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