我明白我可以申請若干個選項,ServiceContract
(如Name
,Namespace
)屬性和OperationContract
(Action
,ReplyAction
)最佳實踐的服務和數據契約 - WCF
同去DataContract
(Namespace
)和DataMember
(IsRequired
,Name
,Order
)
如何確定是否需要應用特定選項。我應該遵循的最佳做法/慣例是什麼?
我明白我可以申請若干個選項,ServiceContract
(如Name
,Namespace
)屬性和OperationContract
(Action
,ReplyAction
)最佳實踐的服務和數據契約 - WCF
同去DataContract
(Namespace
)和DataMember
(IsRequired
,Name
,Order
)
如何確定是否需要應用特定選項。我應該遵循的最佳做法/慣例是什麼?
這裏沒有人「最佳實踐」。只要理解所有不同的論點是用於什麼。
Name
如果你希望你的服務的「公共」的名字是從實際的類名不同(大多數人不改變這種),應符合規定。對於數據契約來說它是相似的 - 如果你希望通過SOAP/MEX暴露的名字與你在內部使用的屬性名稱不同,就使用它。
Namespace
是你應該變化,否則默認爲tempuri.org
- 你應該有一個命名空間的應用程序相關的替換此。如果類型爲空
IsRequired
應指定(即一個string
),但現場實際需要作爲合同的一部分(例如,客戶必須有一個名字......這是必填字段)。
Order
只是改變屬性在元數據/ XML中出現的順序;通常大多數人不會爲此而煩惱,除非它出於兼容性的原因。
沒有要求或標準。
該屬性提供了一些選項,從而增加了MS提供的靜態規格符合您需求的可能性。
所以,我想說最好的做法是瞭解選項以及如何將它們應用於您的要求。
@Aarounaught - 命名空間是否與服務將託管的URL有任何關係?我知道我可以指定任何我想要的命名空間,但不確定命名空間是否與Web主機所在的位置相同是一個好習慣。 – DotnetDude 2010-03-02 23:05:12
@DotnetDude:不,不是。命名空間只是一個獨特的標識符,可以將你的AwesomeService與其他人的AwesomeService區分開來。如果你碰巧有一個真正的生產網址,它不會傷害你使用(我這樣做),但它不是一個要求。 – Aaronaught 2010-03-02 23:07:31
命名空間和名稱會影響生成的xml的形狀,並最終影響導線另一端的反序列化對象。 – 2010-03-03 00:44:55