¿Cuándo usar los atributos DataContract y DataMember?

Estoy muy confundido sobre elDataContract atributo en WCF. Según mi conocimiento, se usa para serializar tipos definidos por el usuario como clases. Escribí una clase que está expuesta en el lado del cliente de esta manera.

[DataContract]
public class Contact
{
    [DataMember]
    public int Roll { get; set; }

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

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

    [DataMember]
    public int Age { get; set; }
}

Está funcionando correctamente pero cuando eliminoDataContract yDataMember También funciona correctamente. No puedo entender por qué funciona correctamente. ¿Alguien puede decirme cuál es el uso real deDataContract?

Mi contrato de servicio se ve así

[ServiceContract]    
public interface IRestServiceImpl
{
    [OperationContract]        
    Contact XmlData(string id);      
}

Respuestas a la pregunta(7)

Su respuesta a la pregunta