成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET串行化對象實用技巧分享

開發(fā) 后端
VB.NET串行化對象的操作一般情況下是自動的。我們在做串行化之前,首先需要明確我們要利用它實現(xiàn)一個什么樣的功能。

VB.NET是一款完全面向?qū)ο缶幊陶Z言。而且其特有的一些性質(zhì)對開發(fā)人員提供了相當(dāng)大的幫助。我們可以通過本文介紹的VB.NET串行化對象的相關(guān)介紹來體會這一語言的功能強大性,方便我們使用。#t#

只要我們運用對象,我們就需要存儲它們的表現(xiàn)形式。也許我們暫時不需要一個對象,我們不想讓它散亂地放在內(nèi)存中。或者我們可能需要把一個對象實例從一個系統(tǒng)傳送到另一個系統(tǒng)。

對于所有這些情況,對象的狀態(tài)就需要以某種形式來體現(xiàn),可以以不定的形式保存起來,或者傳送到另一個系統(tǒng)。通常,我們把對象的狀態(tài)信息作為一系列數(shù)據(jù)字節(jié)來存儲。

存儲一個對象狀態(tài)的過程就叫做“串行化”。運用這個狀態(tài)信息來創(chuàng)建一個新的、相等的對象實例就叫做“反串行化”。在VB6及更早的版本中,你必須編寫你自己的邏輯來執(zhí)行這些操作。盡管有這么多編程工作要做,但VB.NET串行化對象是自動的。

如果你在一個類的前面放一個屬性,那么一個對象實例就可以自動地被串行化了。你將這個屬性放置在一個類的聲明部分,如下:

  1. _Public Class MyClassName 

你也可以通過實現(xiàn)一個叫做ISerializable的接口來實現(xiàn)VB.NET串行化對象,但這種方法更復(fù)雜。在大多數(shù)情況下,運用屬性更容易,也很有效。

一旦一個類被標(biāo)記了屬性,我們就可以存儲它的狀態(tài)了。如果你運用另一個叫做Formatter的類,你可以將一個.NET對象實例的狀態(tài)作為一系列字節(jié)存儲起來,可以存儲在磁盤上或一個數(shù)據(jù)庫中,可以運用.NET Remoting或消息隊列從一個系統(tǒng)傳送到另一個系統(tǒng)。然后,另外的那個Formatter類就可以從串行化的狀態(tài)信息“重建”對象實例了。

不同類型的VB.NET串行化對象有不同的Formatter類。BinaryFormatter保存一個對象的所有的內(nèi)部狀態(tài),包括私有變量。這就叫做“深串行化(deep serialization)”。XMLFormatter只保存公有屬性和數(shù)據(jù)成員,這個過程叫做“淺串行化(shallow serialization)”。還有用于其它目的的formatters。運用何種formatter取決于你的對象是否有重建對象實例所必須的內(nèi)部狀態(tài)信息,以及你打算用串行化信息做什么。

Formatter對象有Serialize和Deserialize方法。Serialize方法有兩個參數(shù)——一個放置狀態(tài)信息字節(jié)的對象流和要被串行化的對象實例。Deserizlize方法對包含狀態(tài)信息字節(jié)的對象流進行處理并將新的重建的對象實例作為一個普通的Object類型返回。然后,我們可以用CType方法將新的實例轉(zhuǎn)化成適當(dāng)?shù)念愋汀?br />
因此,要想把你的對象信息存儲到磁盤上的一個文件,你可能需要下面的邏輯:

  1. Dim myFileStream As New _  
  2. FileStream("C:\MyFileName.dat", _  
  3. FileMode.CreateNew)  
  4. Dim MyFormatter As New 
    BinaryFormatter()  
  5. MyFormatter.Serialize
    (myFileStream, MyObject) 

然后你可以用這個邏輯來重建對象:

  1. Dim myFileStream As 
    New _  
  2. FileStream("C:\MyFileName.dat", _  
  3. FileMode.Open)  
  4. Dim MyFormatter As New 
    BinaryFormatter()  
  5. Dim GenericObject As Object  
  6. GenericObject = _ 
  7. MyFormatter.Deserialize
    (myFileStream)  
  8. Dim MyObject As MyObjectType  
  9. MyObject = CType(
    GenericObject, MyObjectType) 

這時候,你就可以用這個對象了,它的行為同最初的對象實例的行為完全一樣。

有時侯,VB.NET串行化對象的過程是自動的。例如,如果把一個對象實例放在一個消息隊列上,消息隊列上的實際數(shù)據(jù)是由從串行化對象而來的狀態(tài)信息字節(jié)組成的。MessageQueue對象有一個Formatter屬性來指定所運用的formatter類型。這就簡化了把一個對象放到一個消息隊列上的過程,只需一行代碼:

  1. MessageQueue1.Send
    (objMyObjectInstance, _  
  2. "A tag string for 
    humans to read") 

然后,另一個系統(tǒng)就可以從隊列上提取狀態(tài)信息,并創(chuàng)建一個相等的對象實例了。那個系統(tǒng)也必須有一個MessageQueue對象,它的Formatter屬性也必須同用來將信息放到隊列上的最初的MessageQueue對象的formatter屬性類型一致。

這有一點復(fù)雜。你需要兩個步驟:

  1. MyQueueMessage = _ 
  2. MessageQueue1.Receive
    (ATimeoutValue)  
  3. objMyReconstitutedInstance = _ 
  4. CType(MyQueueMessage.Body, _  
  5. MyObjectsType) 

第一步是從消息隊列提取串行化狀態(tài)信息,第二步是運用該信息來創(chuàng)建新的、相等的對象實例。然后,我們就可以像運用最初的對象實例一樣來運用新的對象了。

還有更多關(guān)于處理消息隊列的資料,例如如何來處理超時設(shè)定。MSDN上的一篇名為“The Queue Continuum”的文章講述了這方面的一些細節(jié)。然而,正如你所看到的,將VB.NET串行化對象到消息隊列上以及反串行化來得到一個新的對象實例是很簡單的。

責(zé)任編輯:曹凱 來源: 中國IT實驗室
相關(guān)推薦

2009-11-02 16:41:55

VB.NET串行化對象

2010-01-12 10:29:51

VB.NET對象串行化

2010-01-14 10:18:24

VB.NET List

2010-01-18 17:45:33

VB.NET線程訪問數(shù)

2010-01-22 11:02:30

VB.NET創(chuàng)建新變量

2010-01-13 15:52:59

VB.NET浮動窗體

2010-01-18 16:33:57

VB.NET加密文件

2010-01-15 19:04:09

2010-01-18 18:50:26

VB.NET鼠標(biāo)手勢

2010-01-15 18:01:05

VB.NET結(jié)構(gòu)化異常

2010-01-22 13:16:05

VB.NET初始化數(shù)組

2010-01-14 16:04:32

VB.NET顯示時間

2010-01-18 16:41:47

VB.NET用戶登錄頁

2010-01-18 10:26:19

VB.NET中心旋轉(zhuǎn)圖

2010-01-11 15:31:04

VB.NET拖動窗體

2010-01-07 13:40:50

VB.NET讀取XML

2010-01-13 16:45:44

VB.NET刪除控件

2010-01-07 10:02:53

Flash控制VB.N

2010-01-13 10:25:30

VB.NET文件夾操作

2010-01-15 19:24:42

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 六月色婷 | 欧美一级毛片免费观看 | 国产三区精品 | 欧美日韩一区二区在线观看 | 国产小视频自拍 | 四虎成人av | 99reav| 久久久成人免费一区二区 | 日韩精品一区二区在线 | 午夜噜噜噜 | 日本一区二区影视 | 九九九久久国产免费 | 国产精品欧美一区二区三区不卡 | 欧美午夜在线 | 亚洲精品在线视频 | 精品国产一区久久 | 99亚洲精品| 久久成人精品 | 日韩精品色网 | 国产精品久久久久久久久婷婷 | 久久久www成人免费精品 | 欧美四虎| 在线看片网站 | 精品香蕉一区二区三区 | 成人一区二区三区 | 日韩激情一区 | 亚洲一区二区精品视频 | 中文字幕在线一区 | 久国产视频 | 日本天堂视频在线观看 | 日韩在线欧美 | www.久久久.com | 久久久久国产一区二区三区 | 亚洲网站观看 | 国产精品1区 | 亚洲欧美日韩久久 | 亚洲资源站 | 国产精品视频播放 | 久久久久久综合 | 麻豆精品久久 | 精品久久久久一区二区国产 |