Я смотрел на это некоторое время теперь
Кажется, что двоичной сериализации препятствуют как какое-либо изменение в сериализации повреждений имен полей =?Не очень
XMLSerializer проблематичен, потому что Вы не должны предоставлять никакому конструктору аргумента и общедоступным полям, хотя Вы действительно имеете больше контроля над элементами, являющимися атрибутами или элементами и их именованием
DataContractSerializer хорош, но весь suclassses должен быть явно добавлен, который является позором
Однако я споткнулся через NetDataContractSerializer, который не имеет этого ограничения.
Если Вашей целью является сериализация C#, и никакие большие ограничения на размер xml всегда NetDataContractSerializer способ пойти сюда??
Дэн Ригсби написал действительно хорошую сравнительную статью XmlSerializer vs. DataContractSerializer, а также коснулся NetDataContractSerializer.
DataContractSerializer:
Вы явно говорите DCS , что нужно сериализовать, но вы не имеете особого влияния на , как это делается .
XmlSerializer
Вы довольно ясно говорите XmlSerializer как и что сериализовать, но вы не можете сериализовать всё - только общедоступные свойства.
NetDataContractSerializer немного странный - он не взаимодействует, он работает только если оба конца .NET - он включает в сообщение информацию о типе .NET (что делает его больше). Вы не можете добавить это декларативно к службе WCF "из коробки".
Это жесткий компромисс - как всегда. Определенно держитесь подальше от любого бинарного формататера - это не обратно совместимо, хрупко и обязательно доставит вам головную боль - используйте один из этих стандартных способов. Какой из них является "лучшим" для данного сценария действительно трудно сказать - вам придется выяснить это для себя....
.Поскольку уже есть несколько хорошие точки, я просто хочу добавить одно:
В некоторых проектах мы даже зашли настолько далеко, что разместили все интерфейсы в одном подпроекте (maven module) и реализации в другом. Таким образом, можно было ПОЛНОСТЬЮ отделить интерфейсы от реализаций и завершить проект интерфейса на самом раннем этапе проекта и передать его другим командам, работающим над этими интерфейсами. В рамках каждого из проектов мы использовали одни и те же пакеты.
В целом, я бы сказал, что вы должны разделять интерфейсы и их реализации, способ на самом деле не имеет значения, пока вы согласуетесь с ним.
-121--2207933-Я не думаю, что роботы сделают что-либо, кроме разрешения или запрета. Большинство поисковых систем позволит настроить, как они индексируют ваш сайт.
Если у вас есть определенный агент, вызывающий проблемы, вы можете либо заблокировать его специально, либо посмотреть, можно ли настроить его.
-121--4126736-Марк Гравелл показывает в своем блоге результаты теста , выполненного им с DataContractSerializer, GroupSerializer и большинством других сериализаторов .NET, включая protobuf-net (реализация буферов протоколов для .NET