2010-03-02 57 views
6

我明白我可以申请若干个选项,ServiceContract(如NameNamespace)属性和OperationContractActionReplyAction最佳实践的服务和数据契约 - WCF

同去DataContractNamespace)和DataMemberIsRequired,Name,Order

如何确定是否需要应用特定选项。我应该遵循的最佳做法/惯例是什么?

回答

8

这里没有人“最佳实践”。只要理解所有不同的论点是用于什么。

  • Name如果你希望你的服务的“公共”的名字是从实际的类名不同(大多数人不改变这种),应符合规定。对于数据契约来说它是相似的 - 如果你希望通过SOAP/MEX暴露的名字与你在内部使用的属性名称不同,就使用它。

  • Namespace是你应该变化,否则默认为tempuri.org - 你应该有一个命名空间的应用程序相关的替换此。如果类型为空

  • IsRequired应指定(即一个string),但现场实际需要作为合同的一部分(例如,客户必须有一个名字......这是必填字段)。

  • Order只是改变属性在元数据/ XML中出现的顺序;通常大多数人不会为此而烦恼,除非它出于兼容性的原因。

+1

@Aarounaught - 命名空间是否与服务将托管的URL有任何关系?我知道我可以指定任何我想要的命名空间,但不确定命名空间是否与Web主机所在的位置相同是一个好习惯。 – DotnetDude 2010-03-02 23:05:12

+1

@DotnetDude:不,不是。命名空间只是一个独特的标识符,可以将你的AwesomeService与其他人的AwesomeService区分开来。如果你碰巧有一个真正的生产网址,它不会伤害你使用(我这样做),但它不是一个要求。 – Aaronaught 2010-03-02 23:07:31

+0

命名空间和名称会影响生成的xml的形状,并最终影响导线另一端的反序列化对象。 – 2010-03-03 00:44:55

0

没有要求或标准。

该属性提供了一些选项,从而增加了MS提供的静态规格符合您需求的可能性。

所以,我想说最好的做法是了解选项以及如何将它们应用于您的要求。