¿Cuándo usar los atributos DataContract y DataMember?

Estoy muy confundido sobre el DataContractatributo 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 {...