我了解到,可以对ServiceContract
(如 Name
、Namespace
)属性应用多个选项,对于 OperationContract
(如 Action
、ReplyAction
)也是一样。
DataContract
(Namespace
)和 DataMember
(IsRequired
、Name
、Order
)同样适用这种方式。
那么,我该如何确定是否需要应用某个特定选项?有哪些最佳实践/约定我应该遵循?
我了解到,可以对ServiceContract
(如 Name
、Namespace
)属性应用多个选项,对于 OperationContract
(如 Action
、ReplyAction
)也是一样。
DataContract
(Namespace
)和 DataMember
(IsRequired
、Name
、Order
)同样适用这种方式。
那么,我该如何确定是否需要应用某个特定选项?有哪些最佳实践/约定我应该遵循?
这里没有一个“最佳实践”。只需了解所有不同的参数用途。
Name
应该被指定,如果你想让你的服务的“公共”名称与实际类名不同(大多数人不改变这个)。数据契约也是类似的——如果您想要在SOAP/MEX上公开的名称与您在内部使用的属性名称不同,请使用它。
Namespace
是您应该更改的内容,否则它默认为tempuri.org
—— 您应该将其替换为与您的应用程序相关的命名空间。
如果类型可为空(即string
),但该字段实际上作为合同的一部分是必需的(例如,客户必须有一个名称...那是一个必填字段),则应指定IsRequired
。
Order
仅更改属性在元数据/XML中出现的顺序;通常,除非由于兼容性原因而需要,否则大多数人都不会费心去做这件事。
没有要求或标准。
属性提供了选项,增加了 MS 提供的静态规范适合您需求的可能性。
因此,我认为最佳实践是了解这些选项以及如何将它们应用于您的需求。