2011-01-19 7 views
22

Per quanto ne KNW -DataContract e la differenza ServiceContract

ServiceContract può essere utilizzato per l'interfaccia/classe mentre DataContract può b utilizzati solo per la classe, Struct e Enums

Oltre a questo - quali sono le altre differenze b/w questi 2? Quando DataContract e ServiceContract devono essere utilizzati in un'applicazione?

Qualsiasi esempio o collegamento farebbe anche. Grazie in anticipo.

risposta

62

Il ServiceContract definisce il contratto del servizio, la forma e la forma. Definisce il nome del servizio, il suo spazio dei nomi XML ecc. Ed è tipicamente un'interfaccia (ma potrebbe anche essere applicata a una classe) che contiene metodi decorati con l'attributo [OperationContract] - i metodi di servizio.

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

Il DataContract è una bestia completamente diversa - decora una classe per definire come una classe che è usato come un valore di parametro o di ritorno da uno dei metodi di servizio. È etichettare quella classe come una "cosa" da serializzare sul filo per trasmetterla. È un'istruzione per il runtime WCF (il serializzatore del contratto dati) che questa classe è destinata ad essere utilizzata in un servizio WCF.

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

    [DataMember] 
    string ProductName { get; set; } 

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

Così il contratto di servizio e il contratto dei dati sono due parti completamente separate che giocano insieme per far funzionare un servizio WCF - non è come si potrebbe sostituire l'altro o qualcosa del genere.

+2

Grande spiegazione. – Wallstrider

+5

Bene! Mi dispiace di non essere uno sviluppatore di C#! C# è fantastico! e la tua spiegazione è stupenda! – Farah

+1

Ottima spiegazione! C'è qualche caso specifico in cui si dovrebbe decorare una classe con '[ServiceContract]' o si consiglia di usarla solo per le interfacce? –

Problemi correlati