Presentation is loading. Please wait.

Presentation is loading. Please wait.

Serialization What is Serialization Serialization is the process of converting an object, or a connected graph of objects, stored within computer memory,

Similar presentations


Presentation on theme: "Serialization What is Serialization Serialization is the process of converting an object, or a connected graph of objects, stored within computer memory,"— Presentation transcript:

1 Serialization What is Serialization Serialization is the process of converting an object, or a connected graph of objects, stored within computer memory, into a linear sequence of bytes Use the sequence of bytes in several ways: – Send it to another process – Send it to the clipboard, to be browsed or used by another application – Send it to another machine – Send it to a file on disk

2 Serialization Object Graph What is an object graph? – An object graph is a set of objects with some set of references to each other – The most obvious problem is how to represent the links between the objects in the Serialized stream Cat Mouse Duck Dog 2 1 3 4 9 7 Horse

3 Serialization How Serialization Works Because run-time metadata 'knows' about each object's layout in memory, and its field and property definitions, you can serialize objects automatically, without having to write code to serialize each field The serialized stream might be encoded using XML, or a compact binary representation The format is decided by the the Formatter object that you call: – Binary – SOAP – Custom

4 Serializaiton Example - VideoLibrary using System; namespace VideoLibrary { [Serializable] public enum Genre { Drama, Comedy, Western, ScienceFiction, Horror, Family }; [Serializable] public class VideoInfo { public string Title { get; set; } public Genre Category { get; set; } public string Director { get; set; } public int Year { get; set; } public TimeSpan Duration { get; set; } public string Review { get; set; } } Worksheet 4 from http://www.cse.ohio-state.edu/~crawfis/cse459_CSharp/index.htmlhttp://www.cse.ohio-state.edu/~crawfis/cse459_CSharp/index.html

5 Serializaiton Example - VideoLibrary namespace VideoLibrary { public partial class MyVideoLibraryForm : Form { List videoLib = new List (); … private void saveLibraryToolStripMenuItem_Click(object sender, EventArgs e) { if (this.saveLibraryDialog.ShowDialog() == DialogResult.OK) { XmlSerializer s = new XmlSerializer(videoLib.GetType()); using (TextWriter w = new StreamWriter(saveLibraryDialog.FileName)) { s.Serialize(w, videoLib); } Worksheet 4 from http://www.cse.ohio-state.edu/~crawfis/cse459_CSharp/index.htmlhttp://www.cse.ohio-state.edu/~crawfis/cse459_CSharp/index.html File->Save menu

6 Serializaiton Example - VideoLibrary private void openToolStripMenuItem_Click(object sender, EventArgs e) { if (this.openLibraryDialog.ShowDialog() == DialogResult.OK) { XmlSerializer s = new XmlSerializer(videoLib.GetType()); using (TextReader reader = new StreamReader(openLibraryDialog.FileName)) { List newVideos = (List )s.Deserialize(reader); foreach( VideoInfo video in newVideos) bindingVideoLib.Add(video); } Worksheet 4 from http://www.cse.ohio-state.edu/~crawfis/cse459_CSharp/index.htmlhttp://www.cse.ohio-state.edu/~crawfis/cse459_CSharp/index.html File->Import menu

7 Serialization Scenarios Persistence Remoting-By-Value Remoting-By-Reference Transacted Persistence

8 Serialization Basic Serialization A Type is NOT Serializable unless Type is specifically marked as Serializable The Serializable Attribute The Non-Serializable Attribute [Serializable] public class MyClass {} [Serializable] public class MyClass { [NotSerialized] int _cashSize; }

9 Serialization It is easy to write the individual fields of a record object to a file For example, we can create a record that stores information about a student – Name – Address – ID number – Course enrolled for – etc We can output each field of this record to a file (either text or binary)

10 Serialization StudentInfo Name Address ID number Course Info Record file string string int string

11 Serialization In this example, any program that needs to read the file needs to know the format of the data – 2 strings, an int and then a string – Also whether each item is on a separate line.NET serialization allows complete objects to be read or written with a single statement (.NET does the plumbing for you using reflection). A serialized object is an object represented as a sequence of bytes. Information is stored about the data types of the objects instance fields as well as their values – Allows the object to be reconstructed (de- serialized) from the sequence of bytes.

12 Serialization StudentInfo Name Address ID number Course Info Record file StudentInfo object

13 Serialization To serialize an object, the object class needs to be marked with the [Serializable] attribute or needs to implement the ISerializable interface Requires the System.Runtime.Serialization namespace Also we require a formatter to serialize/de- serialize the object before writing to or reading from file – IFormatter - BinaryFormatter – XMLSerializer (why is this not an IFormatter?)

14 Serialization ISerializable Interface Customize the serialization process If a class implements ISerializable, that interface will always be called in preference to default serialization. The ISerializable interface only contains one method: void GetObjectData (SerializationInfo info, StreamingContext context); And an implied constructor that may be private. private (SerializationInfo info, StreamingContext)

15 Serialization Additional Attributes The serialization framework allows you to also specify methods to be called when an instance is being deserialized, after it is deserialized, before it is serialized, etc. – [OnDeserialized] – see the MSDN example.MSDN example

16 Serialization IDeserializationEventListener If an object implements IDeserializationEventListener, the serialization infrastructure will call that class‘ OnDeserialization method as soon as the entire graph has been deserialized and all fix- ups completed Provide a reasonable opportunity for objects that need to do fix-ups based on the state of their children

17 Serialization Binary serialization is limited as only.NET applications can deserialize the data stream For more general inter-operability especially across a network, xml serialization is used – xml is text based and self descibing and universal – Comprised name/attribute pairs – xml serialization easy to implement and uses text streams

18 Serialization We need to insert xml tags into our StudentInfo class – Only public properties and fields can be serialized [XmlRoot("studentInfo")] public class StudentInfo { [XmlAttribute("name")] public string Name; [XmlAttribute("address")] public string Address; [XmlAttribute("course")] public string CourseInfo; [XmlAttribute("id")] private int ID; public StudentInfo() { } public StudentInfo(String n, String a, String ci, int id) { Name = n; Address = a; CourseInfo = ci; ID = id; }


Download ppt "Serialization What is Serialization Serialization is the process of converting an object, or a connected graph of objects, stored within computer memory,"

Similar presentations


Ads by Google