DataContractSerializer был создан с учетом принципа «сначала код» - он хорошо отображается на большинстве языков программирования (записи, списки) и не обрабатывает все XML-конструкции (например, атрибуты или внешние).элементы порядка, например) по соображениям производительности.
WCF (svcutil) по-прежнему поддерживает использование XmlSerializer, который может обрабатывать AFAIK всеми XML-конструкциями.svcutil должен создать контракт с помощью XmlSerializer, если DataContractSerializer не может его обработать.