2016-07-05 6 views
0

Hallo ich habe eine folgende Fragen. Wir verwenden Hazelcast IdentifiedSeializeable. Ist es möglich, ein Objekt zu deserialisieren, das zum Beispiel als eine Klasse serialisiert wurde, und es als eine andere Klasse AdminUser zu deserialisieren, basierend auf der Annahme, dass die beiden Klassen die gleichen Felder haben?Hazelcast deserialize in einer anderen Klasse

Antwort

2

Wenn Sie Ihre Fabrik entsprechend bauen und Elemente/Felder in der gleichen Reihenfolge lesen, in der sie geschrieben wurden - ja, irgendwie. Sie müssen sich nur darüber im Klaren sein, dass es noch ein "kleines" Problem gibt, da die Konfigurationen meist ähnlich sein müssen oder neue Knoten nicht beitreten können. Also musst du deiner Fabrik wahrscheinlich etwas Magie hinzufügen.

Auf der anderen Seite, warum möchten Sie das tun? Ist es nicht einfacher, Ihre Benutzereinheit nach der Deserialisierung in eine AdminUser-Instanz zu packen, wenn Sie herausgefunden haben, dass es sich um einen Admin-Benutzer handelt?

+0

Es mag dumm sein, aber ich denke im Sinne von Microservices, wo ein Domänenobjekt in mehreren Kontexten existieren kann, die unterschiedliche Geschäftslogik enthalten. Im Grunde denke ich in einer Situation, in der jemand einen Dienst implementiert, der sein Domänenmodell hält, das eine andere Dimension in Bezug auf Logik für dasselbe sein könnte. –

+0

Ich denke, die SerializationID wird zusammen mit der FactoryID in das Byte-Array geschrieben. Ich habe wirklich keine Ahnung, was diese Magie sein könnte :) –

+0

Nicht sicher, nie versucht, so etwas zu tun. Wenn Microservices Clients sind, gibt es kein Problem, einfach in ein anderes Objekt deserialisieren (solange Sie die Reihenfolge der Eigenschaften beibehalten). Wenn Sie eingebettete Knoten verwenden, könnte dies komplizierter sein und Sie könnten stattdessen StreamSerializer verwenden, um zusätzliche Daten oder Logik zu speichern. – noctarius