использовать или не использовать атрибут KnownType между серверами?

У меня есть вопрос об использовании атрибута WCF KnownType между серверным/клиентским приложением.
Как вы знаете, существуют разные способы передачи объектов между сервером и клиентом с помощью wcf.

  1. используя известный тип.
  2. с помощью DataContractResolver.
  3. использование POCO для передачи данных объекта knownType (лучшая практика).

как лучше всего (3) передать данные? это сериализованная (xml/json/bufferProtocol) строка? как класс сам по себе (тогда мы снова получаем известный тип)?


person guyl    schedule 17.01.2012    source источник
comment
Я думаю, что все три варианта по-прежнему предполагают сериализацию в какой-то XML.   -  person parapura rajkumar    schedule 17.01.2012
comment
При использовании wcf (SOAP) сообщение представляет собой xml. еще не может передавать данные (POCO) в строке, которая будет в формате JSON или протоколе буфера. я просто хочу знать, это хорошо? (я не спрашиваю об REST)   -  person guyl    schedule 17.01.2012


Ответы (1)


Я обычно использовал объекты POCO, используя DataContractSerializer. При таком подходе DTO хранились в отдельной сборке, доступной для обеих сторон диалога WCF.

Мне нужно было явно использовать KnownTypes только тогда, когда в DTO было задействовано наследование. Например, если в сервисном контракте указан базовый класс, но на самом деле я возвращаю производный класс, мне нужно будет явно указать наследование с конфигурацией KnownType.

Это было редко в моем использовании и, как правило, не нужно.

Украсьте свои объекты POCO атрибутами DataContract. Украсьте свойства атрибутами DataMember, а платформа позаботится обо всем остальном.

person Nick Harrison    schedule 17.01.2012