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

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

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

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

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

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

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

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

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

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

Есть и другие варианты:

  1. Рассмотрим альтернативные сериализаторы
  2. Попробуйте использовать суррогаты для передачи данных (атрибуты по-прежнему требуются где-то , но это потенциально означает, что вы можете оставить свой class нетронутым, если это актуально)
  3. Положитесь на значения сериализации по умолчанию, когда вы сериализуете classы без атрибутов Контракт данных

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

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

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

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

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

  • Сериализация XML и унаследованные типы
  • Передача сложных навигационных параметров с помощью MvvmCross ShowViewModel
  • Как десериализовать XML-документ
  • Сериализация объекта в строку
  • Как я могу сохранить состояние своей программы и загрузить ее?
  • Написание XML на Android
  • Как преобразовать двоичные данные в строки и обратно в Java?
  • записать список объектов в файл
  • Циркулярная ссылка обнаружила исключение при сериализации объекта в JSON
  • Дессериализация Json в другую иерархию classов с использованием Jackson
  • Как называются конструкторы во время сериализации и десериализации?
  • Interesting Posts
    Давайте будем гением компьютера.