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

VB.NET對象串行化實現過程簡述

開發 后端
VB.NET對象串行化的主要過程可以理解為對一個對象進行存儲。而返串行化則是創建一個新的相等的對象實例。而且串行化在VB.NET中還是自動的。

我們可以通過對VB.NET中的對象進行一系列的操作來達到我們的目的。比如VB.NET對象串行化的實現就是一個比較常用的操作步驟。從中我們可以了解到對象操作在實際程序代碼中的重要性。#t#

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

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

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

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

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

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

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

Formatter對象有Serialize和Deserialize方法。Serialize方法有兩個參數——一個放置狀態信息字節的對象流和要被串行化的對象實例。Deserizlize方法對包含狀態信息字節的對象流進行處理并將新的重建的對象實例作為一個普通的Object類型返回。然后,我們可以用CType方法將新的實例轉化成適當的類型。

因此,要想把你的對象信息存儲到磁盤上的一個文件,你可能需要下面的邏輯:

  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對象串行化的過程是自動的。例如,如果把一個對象實例放在一個消息隊列上,消息隊列上的實際數據是由從串行化對象而來的狀態信息字節組成的。MessageQueue對象有一個Formatter屬性來指定所運用的formatter類型。這就簡化了把一個對象放到一個消息隊列上的過程,只需一行代碼:

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

 

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

這有一點復雜。你需要兩個步驟:

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

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

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

責任編輯:曹凱 來源: 博客園
相關推薦

2009-11-02 16:41:55

VB.NET串行化對象

2010-01-14 18:00:07

VB.NET串行化對象

2010-01-12 10:48:54

VB.NET LIST

2009-10-20 17:38:20

VB.NET exce

2009-11-04 08:53:57

VB.NET AddH

2009-11-18 11:05:27

PHP串行化

2010-01-07 13:51:50

VB.NET數組賦值

2010-01-20 18:10:27

VB.NET訪問級別

2009-10-09 15:59:41

VB.NET對象

2010-01-14 17:03:01

VB.NET獲取網卡地

2009-10-14 13:21:46

VB.NET Acco

2010-01-21 09:53:55

VB.NET獲取程序運

2010-01-15 15:03:23

VB.NET對象變量聲

2010-01-15 15:39:14

VB.NET Sub過

2010-01-22 18:24:28

VB.NET重構

2009-10-23 16:43:01

VB.NET繪制圖形

2010-01-19 14:42:43

VB.NET調用過程重

2010-01-12 11:17:21

VB.NET文字特效

2009-10-30 11:20:54

VB.NET Proc

2010-01-12 18:05:38

VB.NET對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久成人 | 国产精品久久久久久久免费大片 | 精品久久久久久一区二区 | 国产欧美综合在线 | www.99精品| 日日综合| 久久久久久免费毛片精品 | av色站| 亚洲精品资源 | 91精品久久久久久久久久 | 精品福利一区 | 亚洲小视频在线播放 | 99色播| 中文字幕亚洲精品 | 久久久999国产精品 中文字幕在线精品 | 国产一区二区在线播放视频 | 成人免费网站视频 | 亚洲精品视频观看 | 久久久国产一区 | 欧美啪啪 | 国产小u女发育末成年 | 国产成人免费 | av日韩高清 | 国产精品视屏 | 亚洲视频在线观看 | 中文字幕国产一区 | 日韩欧美中文字幕在线观看 | 理论片午午伦夜理片影院 | 一区二区精品在线 | 欧美精品一区三区 | 精品日韩在线 | 欧美成人高清视频 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 久久亚洲视频 | 久久久妇女国产精品影视 | 亚洲第1页| 欧美一区二区激情三区 | 久久久男人的天堂 | 亚洲成人精品一区 | 午夜a区 | 日韩精品一区二区三区 |