Skip to main content
Version: 0.7.4

Сериализация (Serialization)

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

Как выбрать схему сериализации#

Варианты сериализации разнообразны, как правило,:JSON, MessagePack, Protobuf и т.д.Сценарии сериализации в реальных проектах можно рассматривать на основе следующих моментов:

  1. Учитаемость.Чем выше требования к учитаемости, тем больше следует рассмотреть сценарий сериализации, основанный на тексте.
  2. Эффективность передачи, использование дискового пространства.Если у вас есть более высокие требования к эффективности передачи и дисковому пространству, тем больше следует рассмотреть сценарий сериализации, основанный на двоичных системах.

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

Сериализация и независимость носителей#

В рамках Claptrap хранение, передача и сериализация независимы друг от друга.Другими словами, можно использовать более читаемую сериализацию JSON во время передачи и выбрать двоичную сериализацию, которая более благоприятна для использования хранилища при хранении, и наоборот.

Сериализация и ограничения перевозчика#

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

В настоящее время все поддерживаемые сценарии сериализации публикуются на nuget под названием "Newbe.Claptrap.DataSerializer.*".