Data Contract Serialization and De-Serialization

Serialization is the process of converting an object to transferable data format. By default WCF uses DataContractSerializer. And vice-versa process is called De-Serialization.


    public class Product
    {
        public int  ProductID
        {
            get;set;
        }

        public string ProductName
        {
            get;set;
        }

        public string ProductSeller
        {
            get;set;
        }

        public decimal ProductCost
        {
            get;set;
        }

    }

Browse the service and open WSDL file.
Notice a namespace containing datacontract
Open the url highlighted below.


You may notice the details that I added in Product class.


After adding Serializable attribute:

 [Serializable]
    public class Product
    { }

Now you may notice the change in xml file. Serializable attribute serialize all private properties.

Now if you want a control over serialization. Means you don't want all data to send to client only few of the  you want to exchange.
Use DataContract and DataMember attribute


[DataContract]
    public class Product
    {
        [DataMember]
        public int  ProductID
        {
            get;set;
        }

        [DataMember]
        public string ProductName
        {
            get;set;
        }

        public string ProductSeller
        {
            get;set;
        }

        public decimal ProductCost
        {
            get;set;
        }
    }

In below code i have added DataMemeber attribute with ProductID and ProductName
Lets see the WSDL file.

You may notice only ProductID and ProductName is showing below why because I have used DataMember attribute with these two.


Summary:
  • If we use Serialize attribute then we will not have any control over fields. All fields will be serialize.
  • If we use DataContract attribute then we can control the fields by adding DataMember attribute if we want to serialize else with no attribute.

Comments

Popular posts from this blog

CAML Query in SharePoint 2010

Calling REST APi from server side code - C#

All about SharePoint 2010 Content Type Hub

SharePoint Interview Questions and Answers

Calling ASP.Net WebMethod using jQuery AJAX