Datacontract和servicecontract差异

Ami*_*mit 23 wcf

据我所知 -

ServiceContract可用于接口/类,而DataContract只能用于Class,Struct和Enums

除此之外 - 这两个有什么其他差异吗?什么时候应该在应用程序中使用DataContract和ServiceContract?

任何样本或链接也可以.提前致谢.

mar*_*c_s 62

的ServiceContract定义了服务的合同-它的形状和形式.它定义了服务的名称,XML名称空间等,它通常是一个接口(但也可以应用于类),它包含用[OperationContract]属性装饰的方法 - 服务方法.

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    Response GetData(int someKey);
}
Run Code Online (Sandbox Code Playgroud)

DataContract是一个完全不同的野兽-它装饰一类来定义它做为所被用作从服务方法之一参数或返回值的类.它将该类标记为序列化到线路上以传输它的"事物".它是WCF运行时(数据协定序列化程序)的指令,该类旨在用于WCF服务.

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

    [DataMember] 
    string ProductName { get; set; }

    [DataMember] 
    DateTime DateOfPurchase { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

因此,服务合同和数据合同是两个完全独立的部分,它们共同起作用以使WCF服务工作 - 它不像是可以替换其他的东西.

  • 好!我很遗憾我不是C#开发人员!C#太棒了!你的解释很棒! (5认同)
  • 很棒的解释. (2认同)