Skip to content
csnemes edited this page Oct 9, 2014 · 5 revisions

Shapeshifter

Shapeshifter is a serialization library for long-term data storage. It offers the ease of storing data in serialized (JSON based) form while helping you handle object graph changes.

Quick introduction

Storing data in a serialized form seems to be a fast way to tackle the data storage problem especially if you have a complex object graph and you only want to reference the stored data by some Id (no queries on attributes). Everything is fine if you plan to store the data for a short period of time (e.g. memory cache). However if you plan to store the data longer the issue of structural changes start to pop-up and you quickly end-up in a nightmare. Either you have to keep your serialized object model unchanged (which blocks you on enhancing and refactoring your model) or you have to figure out structural changes and write conversion scripts to update the stored data. Shapeshifter's aim is to decrease this burden to a manageable size. It mostly works like a regular JSON serializer based on DataContract and DataMember attributes. But it also stores structural information in serialized form which will be used during deserialization to support conversion. It also offers a tool which can compare different versions of serializable object models and detect what conversions are necessary to be able to deserialize old versions. Once you write these conversion methods the deserializer will automatically make use of them.

See Basics for introduction.
See Advanced Topics and Documentation folder for details.

##Dependencies

For serialization Shapeshifter uses Newtonsoft.Json
The command line tool uses CLAP

Clone this wiki locally