2011-01-19 13 views
22

Por lo que knw -DataContract y la diferencia ServiceContract

ServiceContract se puede utilizar para la interfaz/clase mientras que DataContract puede b utilizado sólo para clase, estructura y enumeraciones

Aparte de esto - lo que otras diferencias b/w estos 2? ¿Cuándo se deben usar DataContract y ServiceContract en una aplicación?

Cualquier muestra o enlace también lo haría. Gracias de antemano.

Respuesta

62

El ServiceContract define el contrato del servicio: su forma y forma. Define el nombre del servicio, su espacio de nombres XML, etc., y generalmente es una interfaz (pero también se puede aplicar a una clase) que contiene métodos decorados con el atributo [OperationContract]: los métodos de servicio.

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] 
    Response GetData(int someKey); 
} 

El DataContract es una bestia totalmente diferente - decora una clase para definirla como una clase que está siendo utilizado como un valor de parámetro o de retorno de uno de los métodos de servicio. Está etiquetando esa clase como una "cosa" para serializar en el cable para transmitirla. Es una instrucción para el tiempo de ejecución WCF (el serializador de contrato de datos) que esta clase está destinada a ser utilizada en un servicio WCF.

[DataContract] 
public class Response 
{ 
    [DataMember] 
    int Key { get; set; } 

    [DataMember] 
    string ProductName { get; set; } 

    [DataMember] 
    DateTime DateOfPurchase { get; set; } 
} 

Así que el contrato de servicio y el contrato de datos son dos partes totalmente separadas que juegan juntos para hacer un trabajo de servicio WCF - no es como uno podría sustituir a la otra o algo así.

+2

Gran explicación. – Wallstrider

+5

¡Bien! ¡Lamento no ser un desarrollador de C#! C# es increíble! y tu explicación es impresionante! – Farah

+1

¡Gran explicación! ¿Hay algún caso específico en el que decorar una clase con '[ServiceContract]' o se recomienda que solo lo use para interfaces? –

Cuestiones relacionadas