Требуется ли сериализация пользовательских типов? - PullRequest
0 голосов
/ 02 октября 2009

Я пытаюсь понять сериализацию в контексте устаревших веб-сервисов .NET. Допустим, я возвращаю сложный тип из одного из моих методов .asmx. Этот тип должен продаваться сериализуемым? Или справочник веб-службы и веб-служба сами позаботятся обо всей этой сериализации и десериализации?

Ответы [ 2 ]

1 голос
/ 02 октября 2009

ASMX использует XmlSerializer внутри для сериализации типов, поэтому применяются все обычные правила XmlSerializer (тип должен иметь открытый конструктор без параметров, любые открытые поля и общие свойства get / set будут сериализованы, атрибуты System.Xml.Serialization имеют специальные значение и т. д.)

Атрибут [Serializable] абсолютно не имеет значения для XmlSerializer и, следовательно, для ASMX. Первоначально он был представлен для BinaryFormatter (используется в удаленном взаимодействии .NET) и теперь поддерживается DataContractSerializer (используется в WCF) в качестве альтернативы рекомендуемой модели программирования [DataContract].

1 голос
/ 02 октября 2009

Если вы хотите отправить сложный тип по проводам, он должен быть сериализуемым. Вы можете сделать это несколькими способами, одним из которых является использование атрибута Serializable, который является распространенным явлением. Однако, если ваш пользовательский тип не может быть сериализован, то ваш веб-сервис не сможет взять ваш объект и поместить его в провод для отправки клиенту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...