2016-07-05 3 views
0

Привет У меня есть следующие вопросы. Мы используем Hazelcast IdentifiedSeializeable. Можно ли десериализовать объект, который был сериализован как один класс, например User, и десериализовать его как еще один класс AdminUser, основанный на предположении, что два класса имеют одинаковые поля?Hazelcast deserialize в другом классе

ответ

2

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

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

+0

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

+0

Я предполагаю, что serializationID записывается в массив байтов вместе с идентификатором factoryID. Я действительно не знаю, что это за волшебство может быть :) –

+0

Не уверен, никогда не пытался сделать smt вот так. Если вы микросервисы являются клиентами, нет проблем, просто десериализуйтесь в другой объект (если вы сохраните порядок свойств), если вы используете внедренные узлы, это может быть более сложным, и вы можете захотеть использовать StreamSerializer вместо хранения дополнительных данных или логики. – noctarius

Смежные вопросы