2011-01-19 14 views
22

O ile mi knw -DataContract i ServiceContract różnica

ServiceContract mogą być wykorzystywane do interfejsu/klasy natomiast DataContract mogą B używany tylko w klasie, Struct i wyliczenia

Poza tym - jakie są inne różnice b/w tych 2? Kiedy DataContract i ServiceContract powinny być używane w aplikacji?

Dowolna próbka lub łącze również. Z góry dzięki.

Odpowiedz

62

Umowa serwisowa określa umowę usługi - jej kształt i formę. Definiuje nazwę usługi, jej przestrzeń nazw XML itp. I zazwyczaj jest to interfejs (ale może być również zastosowany do klasy), który zawiera metody ozdobione atrybutem [OperationContract] - metody obsługi.

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

DataContract jest całkowicie różny zwierzę - to ozdabia klasę zdefiniować jako klasy, który jest używany jako parametr lub zawracania wartości z jedną z metod usług. To etykietowanie tej klasy jako "rzeczy", aby serializować na drucie, aby ją przesłać. Jest to instrukcja dla środowiska wykonawczego WCF (serializatora kontraktu danych), którą ta klasa ma być używana w usłudze WCF.

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

    [DataMember] 
    string ProductName { get; set; } 

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

więc zamówienie na usługi, a umowa dane są dwa całkowicie odrębne części, które grają razem, aby prace serwisowe WCF - to nie jest tak, jak można by zastąpić inną lub coś.

+2

Świetne wyjaśnienie. – Wallstrider

+5

Dobrze! Żałuję, że nie jestem programistą C#! C# jest niesamowite! a twoje wyjaśnienie jest niesamowite! – Farah

+1

Świetne wyjaśnienie! Czy istnieje jakiś szczególny przypadek, w którym można udekorować klasę za pomocą "[ServiceContract]" lub czy zalecane jest używanie jej tylko do interfejsów? –

Powiązane problemy