2010-03-02 58 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提供的靜態規格符合您需求的可能性。

所以,我想說最好的做法是瞭解選項以及如何將它們應用於您的要求。