Вопрос: Должны ли WCF DataContracts быть значениями или ссылочными типами?


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

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


5


источник


Ответы:


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


9



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

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


4



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

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


0