Имеются ли атрибуты 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ов?

  • C # TcpClient: отправлять сериализованные объекты с помощью разделителей?
  • Что и когда я должен его использовать?
  • Серийный список JSON <KeyValuePair >
  • Каков правильный способ создания пользовательского .NET Exception сериализуемым?
  • Дессериализация XML для объектов в C #
  • Сериализация прерываний в .NET 4.5
  • Как реализовать сериализацию в C ++
  • Настройте SparkContext с помощью sparkConf.set (..) при использовании искровой оболочки
  • Сериализация / десериализация с streamом памяти
  • Исправлено столбец IOException, записывающий сериализуемый объект getactivity ()
  • XML-сериализация свойства интерфейса
  • Interesting Posts

    Как сохранить DataFrame непосредственно в Hive?

    Что означает точка в R – личное предпочтение, соглашение об именовании или более?

    Как сделать функцию Excel «Auto Fit Row Height» действительно автоматической настройкой высоты строки?

    Выйти и перезапустить чистый сеанс R из R?

    Ограничение таблицы SQLite – уникальное по нескольким столбцам

    Какова максимальная фактическая скорость передачи данных по протоколу 802.11g?

    Как изменить текст кнопки в jQuery?

    API Карт Google v2: как сделать маркеры доступными для кликов?

    Почему Java не поддерживает unsigned ints?

    Как я могу управлять звуковыми томами в моем приложении Android?

    Как я могу скомпилировать и развернуть class java во время выполнения?

    Дублируемое окно через мониторы

    Встраивание файлов в Excel с помощью Apache POI

    Выполните несколько команд с тем же процессом, используя .NET.

    Динамический диапазон диаграмм с помощью INDIRECT: эта функция недействительна (несмотря на выделение диапазона)

    Давайте будем гением компьютера.