По умолчанию WCF использует DataContractSerialization, поэтому, если мы можем изменить его, мой вопрос заключается в том, как изменить его и когда нам нужна какая сериализация на wcf?
Вы можете использовать атрибут XmlSerializerFormatAttribute в контракте на обслуживание, чтобы WCF заставил использовать XmlSerializer.
XmlSerializerFormatAttribute
XmlSerializer
WCF имеет приятную особенность: метод может возвращать Message или Stream (см. Возвращение необработанного json (строки) в wcf и . Как установить Json.Net по умолчанию сериализатор для службы WCF REST в качестве примера). Соответствующий код, который вам нужно написать, может быть более простым, как если бы вы использовали более продвинутые приемы Расширение кодировщиков и сериализаторов . Таким образом, очень просто реализовать потоковую передачу сообщений , например, или просто вернуть файл JPG или Excel в результате какого-либо метода WCF.
Message
Stream
Выбор по умолчанию DataContractSerializer подходит для большинства целей.Вы также можете использовать DataContractJsonSerializer специально для сервисов типа REST и если клиент ожидает тип контента Json.Другой вариант - XmlSerializer для возможности взаимодействия, если вам нужен больший контроль над сгенерированным XML.DataContractSerializer более эффективен, чем XmlSerializer.
В сторонних вариантах вы можете использовать protobuf-net от Google, который более эффективен, чем DataContract Serializer.