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.
fonte
2011-01-19 05:52:28
Grande spiegazione. – Wallstrider
Bene! Mi dispiace di non essere uno sviluppatore di C#! C# è fantastico! e la tua spiegazione è stupenda! – Farah
Ottima spiegazione! C'è qualche caso specifico in cui si dovrebbe decorare una classe con '[ServiceContract]' o si consiglia di usarla solo per le interfacce? –