首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在WCF中DataContract的意义是什么?

在WCF中DataContract的意义是什么?
EN

Stack Overflow用户
提问于 2008-11-19 19:14:32
回答 4查看 46.6K关注 0票数 50

VS.net会在您创建WCF项目时创建一个模板。

它将一个类添加到iService1.cs文件中:

代码语言:javascript
复制
// Use a data contract as illustrated in the sample below to
// add composite types to service operations.
[DataContract]
public class CompositeType
{
    bool boolValue = true;
    string stringValue = "Hello ";

    [DataMember]
    public bool BoolValue
    {
        get { return boolValue; }
        set { boolValue = value; }
    }

    [DataMember]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }
}

既然WCF服务可以返回任何用户定义的类,为什么还要使用DataContract和CompositeType类呢?

我可以返回如下内容:

代码语言:javascript
复制
 [OperationContract]
MyUserCollection GetUsers();

我遗漏了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-19 19:17:37

DataContract只是一种类型的正式定义,可以在服务边界的两端理解。

如果像在示例中那样返回"MyUserCollection“对象,则服务的使用者将需要引用服务/系统的内部,这违反了明确边界的面向服务架构原则。通过使用DataContract,您可以以一种松散耦合的方式发布返回类型的结构。

票数 52
EN

Stack Overflow用户

发布于 2008-11-20 09:26:07

另一个需要注意的有趣的事情是,如果你用DataContract修饰你的代码,你可以很大程度上控制客户端可以看到什么,并且必须发回给你的服务。例如:

代码语言:javascript
复制
[DataContract]
public class SampleClass
{
    [DataMember(IsRequired=true)]
    public int MyRequiredProperty { get; set; }

    [DataMember]
    public int MyOptionalProperty { get; set; }

    public int MyInternalProperty { get; set; }
}

在上面的示例中,您定义了在接收数据时,必须具有MyRequiredProperty,并且可以具有或不具有MyOptionalProperty。此外,客户端永远不会看到MyInternalProperty (例如,这可能是一些在内部帮助您的逻辑的属性,但您不希望它在客户端级公开)。

票数 27
EN

Stack Overflow用户

发布于 2011-04-05 17:29:45

还有另一个重要的用途,您可以更改类的名称和属性。在序列化和反序列化过程中,这是一个很方便的特性。

代码语言:javascript
复制
[DataContract(Name="EmployeeName")]
public class Person
{
   [DataMember(Name="FullName")]
   public string Name { get; set; }

   [DataMember(Name="HomeAddress")]
   public string Address { get; set; }
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/303013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档