Search:
Locator+ Code:
FTPOnline Channels Conferences Resources Hot Topics Partner Sites Magazines About FTP RSS 2.0 Feed

Back to VSLive! Orlando Show Daily Home

email article
printer friendly
more resources

Serialize Objects in VB.NET
.NET makes it easy to store an object's state.
by Billy Hollis

VSLive! Orlando, September 18, 2002

Note: Billy Hollis is presenting "Objects in the Real World" at VBITS Orlando, Wednesday, September 18. This tip is from that session. The session will also cover other real-world techniques for object programming, such as using the Shadows keyword to patch object interfaces and how to load forms and classes that were not available when a project was compiled.

As long as we've been working with objects, we've had a need to store a representation of them. Perhaps we know an object will not be needed for a while, and we don't want it cluttering up memory in the meantime. Or we might need to transfer an instance of an object from one system to another.

For all such cases, the state of the object needs to be represented in some form that can be stored indefinitely, or passed to another system. You usually do this by storing the object's state information as a series of bytes of data.

The process of storing the state of an object is called "serialization." Using this state information to create a new, equivalent object instance is called "deserialization." In VB6 and earlier versions, you had to write your own logic to carry out these operations. But, as with so many routine programming tasks, serialization is automated in .NET.

If you merely place a <Serializable()> attribute at the top of a class, an object instance automatically has the capability to be serialized. You place this attribute on the declaration for the class, like this:

<Serializable()> _
   Public Class MyClassName

You can also make an object serializable by implementing an interface called ISerializable, but this is a lot more work. For most common purposes, using the <Serializable()> attribute is easier and just as effective.

Once a class has been marked with the <Serializable()> attribute, it can then have its state stored. If you use another class called a Formatter, you can save the state of a .NET object instance as a series of bytes, which can then be stored on disk or in a database, or transferred from one system to another using .NET Remoting or message queues. Another Formatter class can then "reconstitute" the object instance from the serialized state information.

There are different Formatter classes for different types of serialization. The BinaryFormatter saves all the internal state of an object, including private variables. This is called "deep" serialization." The XMLFormatter saves only public properties and data members, in a process called "shallow serialization." There are additional formatters for other purposes. Which you use depends on whether your objects have internal state information that is necessary in the reconstituted object instance, and what you intend to do with the serialized information.

Back to top




Sponsored Links
IBM Rational Webcast: What is your code doing?
Learn how XDE can jumpstart your development efforts.

Learn about Code Sharing and Reuse.
Download our FREE White Paper now.

Code at the Speed of Thought with Developer Express Technologies

Get Crystal Reports 9
And Get Free Software!

Delivering Better Software, Faster for the Microsoft .NET Framework

Sonic Stylus Studio 5.0—XQuery, XML, XSTL
For a FREE evaluation copy, click here

Tools Offer:
Try Microsoft Visual Studio Tools
for the Microsoft Office System, FREE.

Visual Studio .NET
New version 2003

Microsoft Windows Server 2003. Try the new platform.

Need custom e-forms, datagrids and database-connected apps? Free Eval.

Sponsored Whitepapers
Office 2003 Offers Expanded XML Integration

Use .NET and XML to Power New Office Solutions



Java Pro | Visual Studio Magazine | Windows Server System Magazine
.NET Magazine | Enterprise Architect | XML & Web Services Magazine
VSLive! | Thunder Lizard Events | Discussions | Newsletters | FTP Home