Я понимаю, что могу применить несколько опций к ServiceContract
(как Name
, Namespace
) атрибут и для OperationContract
(Action
, ReplyAction
)
То же переходит в DataContract
(Namespace
) и DataMember
(IsRequired
, Name
, Order
)
Как я определяю, должен ли я применить конкретную опцию или нет. Какова лучшая практика / конвенция, за которой я должен следовать?
Здесь нет ни одной "лучшей практики". Просто поймите, для чего используются все разные аргументы.
Имя
должно быть указано, если вы хотите, чтобы «общедоступное» имя вашей службы отличалось от фактического имени класса (большинство людей не меняют это). Это похоже на контракты данных - используйте его, если вы хотите, чтобы имя, отображаемое через SOAP / MEX, отличалось от имени свойства, которое вы используете внутри.
Пространство имен
- это то, что вы должны изменить, иначе по умолчанию используется tempuri.org
- вы должны заменить это пространство имен, имеющее отношение к вашему приложению.
IsRequired
следует указать, если тип допускает значение NULL (т. Е.a string
), но поле фактически требуется как часть контракта (например, у клиента должно быть имя ... которое является обязательным полем).
Order
просто изменяет порядок, в котором свойства появляются в метаданных / XML; обычно большинство людей не беспокоится об этом, если это не требуется по соображениям совместимости.
Здесь нет требований или стандартов.
Атрибуты предоставляют варианты, увеличивая вероятность того, что статическая спецификация, предоставленная MS, подойдет для ваших нужд.
Поэтому я бы сказал, что лучшая практика - это понимание опций и их применения к вашим требованиям.