Подтвердить что ты не робот

Имеются ли атрибуты DataContract для WCF

Я пишу службу WCF и его клиент. Я хочу отправлять/получать объекты своих пользовательских классов, между сервисом и клиентом.

У меня есть 3 модуля

  • Служба WCF
  • Клиент WCF
  • общая библиотека классов

Оба сервиса WCF и клиент имеют ссылки на общую библиотеку классов. Я не хочу отмечать все мои классы атрибутами DataContract.

Итак, мой вопрос: "Требуются ли атрибуты DataContract для WCF?"

Я использую .NET 4 и netTcpBinding.

4b9b3361

Ответ 1

Если я правильно помню (IIRC), если вы не используете формальные маркеры данных, они по умолчанию действуют как полевой сериализатор. Это будет работать, но менее легко для версии, поскольку частные изменения могут сломать клиент/сервер. ИМО вы всегда должны формально украшать типы WCF атрибутами data-contract/data-member. Он будет работать без них, но по неправильным причинам (IIRC, изначально он не работал без официальных маркеров).

Ответ 2

"Требуются ли атрибуты DataContract для WCF"

Технически, нет. Это зависит от того, используете ли вы DataContractSerializer или нет (это по умолчанию используется для многих привязок).

Существуют и другие варианты:

Ответ 3

Вы можете использовать несколько методов serializaton с WCF, это одна из приятных приспосабливаемых вещей. Посмотрите:

http://msdn.microsoft.com/en-us/magazine/cc163569.aspx

Ответ 4

Не нужно использовать атрибуты DataContract, ваша служба будет работать отлично.

Сказав это, я действительно не думаю, что ваш сервис и клиент совместно используют библиотеку классов - лучший подход к дизайну. Было бы намного яснее, если бы вы открыли свои типы через DataContracts.

Что произойдет, когда когда-нибудь кто-то захочет использовать вашу службу, но не имеет доступа к общей библиотеке классов?