Разница между договором и договором на обслуживание - PullRequest
23 голосов
/ 19 января 2011

Насколько я знаю -

ServiceContract может использоваться для интерфейса / класса, тогда как DataContract b может использоваться только для Class, Struct и Enums

Кроме этого - каковы другие различия ч / б этих 2? Когда DataContract и ServiceContract должны использоваться в приложении?

Подойдет также любой образец или ссылка. Заранее спасибо.

1 Ответ

62 голосов
/ 19 января 2011

ServiceContract определяет контракт службы - его форму и форму. Он определяет имя службы, ее пространство имен XML и т. Д., И обычно это интерфейс (но также может применяться к классу), который содержит методы, украшенные атрибутом [OperationContract] - методы службы.

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

DataContract - это совершенно другой зверь - он декорирует класс, чтобы определить его как класс, который используется в качестве параметра или возвращаемого значения из одного из методов службы. Он маркирует этот класс как «вещь» для сериализации на провод для его передачи. Это инструкция для среды выполнения WCF (сериализатор контракта данных), которую этот класс предназначен для использования в службе WCF.

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

    [DataMember] 
    string ProductName { get; set; }

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

Таким образом, договор на обслуживание и договор на данные представляют собой две совершенно разные части, которые играют вместе, чтобы заставить службу WCF работать - это не значит, что одна может заменить другую или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...