Должны ли WCF DataContracts быть значениями или ссылочными типами? - PullRequest
5 голосов
/ 13 июля 2009

Вы находитесь на конце службы и не знаете своих клиентов.

Почему бы вам выбрать один из других?

Ответы [ 3 ]

9 голосов
/ 13 июля 2009

Как правило; при самостоятельном проектировании типа это должен быть класс, если только тип не представляет отдельное значение, в этом случае это должна быть структура.

4 голосов
/ 13 июля 2009

Фредрик имеет правильный ответ. Я только добавлю, что вы должны помнить, что клиент никогда не увидит ваш Договор о данных. Он будет переведен в XML-схему и будет включен в WSDL. Напомним, что на стороне клиента это может быть Perl или даже классический ASP-клиент, который не имеет понятия ценности и семантики ссылок.

Таким образом, соотношение цены и качества - это то, что имеет значение только для службы, а не для клиентов.

0 голосов
/ 05 ноября 2009

На самом деле Джон Сондерс не совсем прав. WSDL, сгенерированный WCF , действительно фактически указывает, являются ли объекты значениями или ссылочными типами. Когда у вас есть WCF на стороне клиента, вы можете воспользоваться этим. Кроме того, значение vs reference влияет на атрибут isNullable различных частей WSDL, что может изменить семантику.

Конечно, вам нужно убедиться, что вы не рисуете себя в углу несовместимости - тип значений, допускающих значение NULL, не обязательно совпадает с типом ссылки (или даже возможен) в некоторых клиентских средах.

...