What is Serialization in .NET, types of Serialization and why we need it while developing an application?
Select an image from your device to upload
Serialization is a process of taking an object and converting into a form so that it can be transported across the network or can be persisted in the storage location. This storage location can be physical file, database or ASP.NET Cache. The form contains the state of the object so that by this format, we can construct the same object a later point in time, which is called Deserialization.
There are three formats of serialization
Binary Serialization: Light and compact used in Remoting
SOAP Serialization : Interoperable use SOAP and used in web Services
XML Serialization : Custom Serialization
For XML serialization, you need to use the attributes and specify them for each and every public member that you need. But since it is limited that it can serialize only public members, Serization done by it is called custom serialization. It is also known as Shallow Serialization
SOAP and Binary Serialization
XML serializes only public members of the class. You use SOAP or Binary serialization when you need to transport data across the network. SOAP sends it using HTTP Protocol which makes it most interoperable while Binary serialization is known for its light and compact nature. Web Services uses the SOAP Serialization and Remoting uses the Binary Serialization. Infact Serialization is always neccessary when you need the object to transfer across a network. Advantage of using the SOAP or Binary serialization is that you can serialize the entire object and all those object that are being refrenced by it. This is why it is also called Deep Serialization. If you want any class to serialize through any of these methods then you should use [Serializable] attribute on that class and then you can use the SoapFormater class or BinaryFormatter class to do the serialization. These classes have Serialize and DeSerialize method. If you will not use SerializableAttribute for the class, then it will raise the exception.
Though this is the easiest way but at time you need the way so that you can decide what fields to serialize and how the serialization actually occurs. You can implement the ISerializable interface in the class. You need two things for that
A small example below illustrate this all.
public class Employee :ISerializable
{
private int emp_no;
private string name;
protected TestData(SerializationInfo info,StreamingContext)
{ this.emp_no = info.GetInt32("emp_no"); this.name = info.GetString("name");}
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{ info.AddValue("emp_no", this.emp_no); info.AddValue("name", this.name);}
I hope this introductory serialization information can help you to understands about Serialization with its need and its effective usage.
Serialization is the process of converting complex objects into stream of bytes for storage. Deserialization is its reverse process, that is unpacking stream of bytes to their original form. The namespace which is used to read and write files is System.IO. For Serialization we are going to look at the System.Runtime.Serialization namespace. The ISerializable interface allows you to make any class Serializable.
System.IO
System.Runtime.Serialization
ISerializable
Here are the following steps that we are going to do to create a serializable class and test it.
Defining Employee class and propertiesOur custom class Employee should be derived from the ISerializable interface and should hold the Serializable attribute. Here is the code snippet. using System;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary; namespace MyObjSerial{[Serializable()] //Set this attribute to all the classes that want to serializepublic class Employee : ISerializable //derive your class from ISerializable{public int EmpId;public string EmpName;//Default constructorpublic Employee(){EmpId = 0;EmpName = null;}}}
Different types of serialization.
The different types of serialization are
· Binary Serialization
· XML Serialization
· SOAP Serialization
Binary Serialization
Binary serialization is the process where you convert your .NET objects into byte stream. In binary serialization all the public, private, even those which are read only, members are serialized and converted into bytes. So when you want a complete conversion of your objects to bytes then one can make use of binary serialization.
XML Serialization
In XML serialization only the public properties and fields of the objects are converted into XML. The private members are not taken into consideration in XML serialization.
SOAP Serialization
Similar to XML serialization. When you serialize object to SOAP format it conforms to the SOAP specification.
Need of Serialization
Most uses of serialization fall into two categories: persistence and data interchange. Persistence allows us to store the information on some non-volatile mechanism for future use. This includes multiple uses of our application, archiving, and so on. Data interchange is a bit more versatile in its uses. If our application takes the form of an N-tier solution, it will need to transfer information from client to server, likely using a network protocol such as TCP. To achieve this we would serialize the data structure into a series of bytes that we can transfer over the network. Another use of serialization for data interchange is the use of XML serialization to allow our application to share data with another application altogether. As you can see, serialization is a part of many different solutions within our application.