Практическое использование сериализации объектов? - PullRequest
5 голосов
/ 03 июня 2010

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

Ответы [ 11 ]

4 голосов
/ 03 июня 2010

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

4 голосов
/ 03 июня 2010

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

2 голосов
/ 03 июня 2010

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

2 голосов
/ 03 июня 2010

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

  1. Отправка объекта по сети, наиболее распространенный пример - сериализация объектов в кластере
  2. Сериализация объекта для (своего рода) кэширования, т. Е. Сохранение состояния в файле и его последующее чтение
  3. Сериализация пассивных / огромных данных в файл, чтобы минимизировать потребление памяти и читать их при необходимости.
2 голосов
/ 03 июня 2010

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

1 голос
/ 03 июня 2010

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

0 голосов
/ 03 июня 2010

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

0 голосов
/ 03 июня 2010

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

0 голосов
/ 03 июня 2010

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

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

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

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

0 голосов
/ 03 июня 2010

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

...