Вопрос

Недавно у меня была дискуссия с коллегой о сериализации байтовых данных по сети. Он использовал BinaryFormatter Класс, чтобы «раскрыть» данные байтов, которые я отправлял ему. Это не сработало, и он явно исключительный... исключения. Binaryformatter Не удалось «разобраться» с данными правильно, так как мои данные были просто массивом байтов.

Его мотивация для BinaryFormatter была независимость платформы. Я не убежден в такой позиции. Когда мы оба использовали BinaryReader или же BinaryWriter, все хорошо сработало на кодовой земле.

Что такое использование BinaryFormatter И должен ли я смотреть на его использование в каждом сценарии, где бы мне нужно отправлять байты через проволоку?

Это было полезно?

Решение

Определенно, если у вас есть данные как byte[], BinaryFormatter не мудр для использования. Вы просто записываете данные в проволоку. Однако, если у вас есть набор объектов и вы хотите сериализовать их на поток, BinaryFormatter гораздо проще в использовании, чем вручную писать каждое поле каждого типа вручную. Цель BinaryFormatter Или любая схема сериализатора/десериализатора в целом заключается в том, чтобы обеспечить способ сохранить график объекта (возможно, сложный) в качестве последовательности байтов.

Другие советы

Мне кажется, что вы, возможно, захотите взглянуть на что -то вроде «буферов протокола», которое (в отличие от BinaryFormatter) является высокопроизводительной, низкой пропускной способностью, Портативный/кроссплатформенный, версия-толерантный бинарный формат сериализации (вау, это глоток).

К счастью, в .NET есть версии, такие как Protobuf-Net.

(Раскрытие: я автор, но оно бесплатно; я ничего не пытаюсь вам продать - просто сэкономить вам много времени и боли)

BinaryFormatter очень ... хрупкий; Это специфично .NET и имеет относительно плохую версию терпимости. Единственный раз, когда я использую его, находится за кулисами для общения между AppDomainS на той же машине. В противном случае я бы посмотрел на сериалы на основе контрактов, такие как XmlSerializer, DataContractSerializer, или Protobuf-Net.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top