Я работаю над собственной программой удаленного рабочего стола C#. Я задавался вопросом, могу ли я Сериализовать с помощью BinaryFormatter объект моего собственного , например, «Пакет», который содержит свойства скриншотов BitMap, мышиных шнуров и, возможно, текста. И тогда клиент будет десериализовать его. Теоретически это может быть удобный способ сделать это. Возможно ли это?BinaryFormatter для сериализации
ответ
BinaryFormatter не является хорошим выбором для сериализации по сети или постоянному хранению, он предназначен для сериализации при общении на одном компьютере. Это чрезвычайно нетерпимо к различиям в версии любой сборки, на которую ссылается ваш сериализованный объект на противоположных концах соединения, у меня лично были обновления Windows, которые не применяются на одной машине, чтобы обе стороны не могли общаться.
Вместо этого используйте сериализатор, более предназначенный для сетевой связи, такой как DataContractSerializer
или сторонний двоичный сериализатор, такой как ProtoBuf-net.
Это возможно, но я отговариваю его. Алгоритм BinaryFormatter
является проприетарным, поэтому очень трудно писать приложения не.NET, используя такие данные. Формат изменился в прошлом и может измениться в будущем, поэтому небезопасно использовать его для постоянных данных, которые вы ожидаете снова открыть в будущем с новой версией .NET. Я думаю, что BinaryFormatter
изначально был предназначен для передачи данных между процессами на одной машине, а не для сохранения данных.
BinaryFormatter
неэффективен для данных, содержащих несколько свойств, поскольку требует десериализации всего объекта для доступа к любому полю. Это особенно проблематично, если данные содержат большие данные, такие как изображения.
Если ваши данные не требуют произвольного доступа, я предлагаю сериализовать его в текстовом формате, таком как JSON или XML. Если данные большие, вам следует рассмотреть возможность сжатия текстовых данных.
Если вам необходим случайный доступ к данным, вы должны исследовать хранилища данных, такие как MySQL или SQL Server CE.
- 1. Отладка сериализации BinaryFormatter
- 2. сериализации/десериализации список объектов с помощью BinaryFormatter
- 3. BinaryFormatter Endiannes
- 4. BinaryFormatter становится медленнее, чем XmlSerializer больше деталей я сериализации/десериализации
- 5. BinaryFormatter в Silverlight
- 6. .Net Где найти официальную спецификацию формата сериализации BinaryFormatter?
- 7. Каковы недостатки встроенной сериализации на основе BinaryFormatter .Net?
- 8. Как игнорировать свойство из сериализации с помощью BinaryFormatter?
- 9. C# Binaryformatter slow
- 10. C# BinaryFormatter Serialize UserControl
- 11. Deserialization MemoryStream через BinaryFormatter
- 12. C# help для сериализации
- 13. Сериализованные объекты исчезают (BinaryFormatter)
- 14. Альтернативы BinaryFormatter
- 15. Использует ли BinaryFormatter любое сжатие?
- 16. BinaryFormatter: SerializationException
- 17. Исключение сериализации
- 18. BinaryFormatter alternative
- 19. Отличие BinaryFormatter
- 20. Сериализация сложного объекта с BinaryFormatter
- 21. BinaryFormatter не сериализующее поле
- 22. BinaryFormatter в кросс-платформенном приложении
- 23. WCF сериализации и производительность
- 24. Использует .net BinaryFormatter наследование?
- 25. @@ DBTS и BInaryFormatter
- 26. BinaryFormatter in netstandard 1.5
- 27. DataContractSerializer vs BinaryFormatter performance
- 28. Десериализация с BinaryFormatter
- 29. BinaryFormatter с MemoryStream Вопрос
- 30. MSMQ с помощью BinaryFormatter
где код? –
Теоретически все может быть сериализовано и/или десериализовано. – Icemanind
будет ли он запрограммирован на один объект, и я смогу получить доступ ко всем свойствам? –