Практические применения сериализации объекта?

Сколько проектов программного обеспечения Вы работали над используемой сериализацией объекта? Я лично никогда не сталкивался со сценарием, где сериализация объекта использовалась. Один вариант использования, о котором я могу думать, программное обеспечение сервера, хранящее объекты к диску для сохранения памяти. Есть ли другие типы программного обеспечения, где сериализация объекта важна или предпочтительна по базе данных?

5
задан zed_0xff 3 June 2010 в 03:08
поделиться

11 ответов

Я использовал сериализацию объектов во многих своих проектах. Иногда мы используем его для локального хранения настроек компьютера. Я также использовал сериализацию XML для упрощения взаимодействия и создания XML-документов. Это также очень полезно в протоколах связи. Выполните сериализацию на одном конце и повторно надуйте на другом конце.

4
ответ дан 18 December 2019 в 11:54
поделиться

вы можете комбинировать БД и сериализацию. например, когда вам нужно сохранить объект с большим количеством атрибутов (часто динамических, т.е. один набор атрибутов объекта будет отличаться от другого) в реляционной БД, и вы не хотите создавать новый столбец для каждого атрибута

1
ответ дан 18 December 2019 в 11:54
поделиться

Межпроцессное взаимодействие очень важно.

2
ответ дан 18 December 2019 в 11:54
поделиться

Вот несколько вариантов использования, которые я могу придумать:

  1. Отправка объекта по сети, наиболее распространенный пример - сериализация объектов в кластере
  2. Сериализация объекта для (своего рода) кэширования, т.е. сохранение состояния в файле и прочитать его позже
  3. Сериализовать пассивные / огромные данные в файл, чтобы минимизировать потребление памяти, и считывать их при необходимости.
2
ответ дан 18 December 2019 в 11:54
поделиться

Я активно использовал сериализацию XML в одном проекте. Этот метод использовался для сохранения в структурах данных базы данных, которые не имели общей структуры, поэтому данные не могли быть сохранены напрямую. Я также использовал сериализацию для разделения настроек приложения, которые можно было изменить во время выполнения.

0
ответ дан 18 December 2019 в 11:54
поделиться

Использование сериализации экономит ваше время каждый раз, когда вы хотите реализовать функцию импорта / экспорта.

Каждый раз, когда вам нужно экспортировать данные вашей системы, создавать резервные копии или сохранять какие-либо настройки, вы можете вместо этого использовать сериализацию и просто сохранять состояние объектов, которые представляют фактическую конфигурацию, данные или что-то еще.

Только когда вам нужен определенный формат экспортируемых / импортируемых данных, имеет смысл создать собственный синтаксический анализатор и экспортер / импортер.

Сериализация также защищена от изменений. Всякий раз, когда вы меняете формат объекта, задействованного в функции обмена, он автоматически экспортируется, и вам не нужно изменять логику частей экспорта / импорта.

0
ответ дан 18 December 2019 в 11:54
поделиться

Что ж, преобразование объектов в XML или JSON - это форма сериализации, довольно распространенная в Интернете. Я также работал над проектом, в котором объекты были созданы и сериализованы в двоичный файл в одном приложении, а затем импортированы в другое настраиваемое приложение (хотя это хрупко, поскольку в нем используется C #, а сериализация в прошлом прерывалась между версиями платформы .NET. ). Кроме того, для сериализации могут быть полезны параметры приложения, имеющие сложную структуру. Я также думаю, что API удаленного взаимодействия используют сериализацию для общения. По сути, сериализация - это просто способ сохранить состояние ваших объектов, и это имеет много разных применений.

4
ответ дан 18 December 2019 в 11:54
поделиться

Я использую сериализацию для передачи объектов через TCP-сокет. Вы помещаете XmlSerializers с обеих сторон, и он разбирает ваши данные на легкодоступные объекты. Если немного поработать, то можно добиться того, что вы будете передавать объекты туда и обратно, и это чрезвычайно упрощает взаимодействие через сокет, сводя его не более чем к socket.Send(myObject);.

2
ответ дан 18 December 2019 в 11:54
поделиться

Мы начали с системы, которая сериализовала все тысячи объектов в памяти на диск каждые 15 минут или около того. Когда это заняло слишком много времени, мы перешли в смешанный режим сохранения объектов в реляционный файл базы данных и рассола (это была система Python, кстати). В конце концов большая часть данных хранилась в реляционной базе данных. Интересно, что система была написана таким образом, что весь код приложения не заботился о том, что там происходит. Все это было сделано с использованием XP и тысяч автоматических тестов.

0
ответ дан 18 December 2019 в 11:54
поделиться

Мы использовали его для функциональности резервного копирования и обновления. По сути, это были сериализованные объекты hibernate, которые резервировались, затем схема БД изменялась в процессе обновления, и мы предоставляли вспомогательный класс, который "покрывал" старые объекты новой схемой БД. Таким образом, у нас был довольно надежный механизм обновления, который легко ломался и одновременно выполнял автоматическое резервное копирование.

0
ответ дан 18 December 2019 в 11:54
поделиться

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

0
ответ дан 18 December 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: